从终端仿真器到 Openbox 会话的背景

从终端仿真器到 Openbox 会话的背景

有没有办法从 Openbox 中的终端仿真器运行命令,以便 Openbox 拥有该进程,而不是终端?

然后我可以从终端仿真器启动一个程序,当我关闭终端仿真器时该程序仍会继续运行,但当 X11 退出时该程序会退出?

答案1

是的,只需在后台运行该命令并正常退出终端仿真器(使用Ctrl+Dexit):

command &

例如,firefox &

在 BASH shell 中,& 符号 ( &) 表示“将此命令作为后台进程运行”。如果您关闭启动该命令的终端使用exitCtrl+D,程序将继续运行。如果您通过单击窗口“X”关闭终端,它也会终止该进程。

将进程重新置于前台(从相同的终端或 tty) 运行fg。要将正常启动的进程发送到后台,请在启动它的终端中输入Ctrl+ 。Z

以独立于启动进程的终端仿真器的方式运行进程的其他方法如下(始终使用 Firefox 作为示例):

  1. nohup. 来自nohup手册页:

    nohup-运行不受挂断影响的命令,并将输出输出到非tty

    如果标准输入是终端,则将其从 /dev/null 重定向。如果标准输出是终端,则将输出附加到nohup.out' if possible,$HOME/nohup.out'。如果标准错误是终端,则将其重定向到标准输出。要将输出保存到 FILE,请使用“nohup COMMAND > FILE”。

    例子:

    nohup firefox
    
  2. at,来自at手册页:

    at, batch, atq, atrm - 排队、检查或删除作业以供稍后执行

    at 在指定时间执行命令。

    使用方法稍微复杂一些,你需要一个包含要运行的命令的文本文件,每行一个。然后启动at,告诉它在特定时间执行:

    echo "firefox" > command.txt
    at 14:56 < command.txt
    

    上面的例子告诉在下午 14:56at启动文件中列出的命令。command.txt

注意:使用atnohup,启动的进程将在退出 X 后继续运行。

相关内容