有没有办法从 Openbox 中的终端仿真器运行命令,以便 Openbox 拥有该进程,而不是终端?
然后我可以从终端仿真器启动一个程序,当我关闭终端仿真器时该程序仍会继续运行,但当 X11 退出时该程序会退出?
答案1
是的,只需在后台运行该命令并正常退出终端仿真器(使用Ctrl+D或exit
):
command &
例如,firefox &
。
在 BASH shell 中,& 符号 ( &
) 表示“将此命令作为后台进程运行”。如果您关闭启动该命令的终端使用exit
或Ctrl+D,程序将继续运行。如果您通过单击窗口“X”关闭终端,它也会终止该进程。
将进程重新置于前台(从相同的终端或 tty) 运行fg
。要将正常启动的进程发送到后台,请在启动它的终端中输入Ctrl+ 。Z
以独立于启动进程的终端仿真器的方式运行进程的其他方法如下(始终使用 Firefox 作为示例):
nohup
. 来自nohup
手册页:nohup-运行不受挂断影响的命令,并将输出输出到非tty
如果标准输入是终端,则将其从 /dev/null 重定向。如果标准输出是终端,则将输出附加到
nohup.out' if possible,
$HOME/nohup.out'。如果标准错误是终端,则将其重定向到标准输出。要将输出保存到 FILE,请使用“nohup COMMAND > FILE”。例子:
nohup firefox
at
,来自at
手册页:at, batch, atq, atrm - 排队、检查或删除作业以供稍后执行
at 在指定时间执行命令。
使用方法稍微复杂一些,你需要一个包含要运行的命令的文本文件,每行一个。然后启动
at
,告诉它在特定时间执行:echo "firefox" > command.txt at 14:56 < command.txt
上面的例子告诉在下午 14:56
at
启动文件中列出的命令。command.txt
注意:使用at
或nohup
,启动的进程将在退出 X 后继续运行。