如何在Unix Shell中的后台执行命令

How to execute command in background in unix shell?

本文关键字:后台 执行 命令 Shell Unix      更新时间:2023-10-16

执行命令并立即返回,直到命令完成后才阻止。
概念:背景执行,信号,信号处理程序,进程,异步执行 系统调用: sigset()

如何?

您可以将输出引导到单独的缓冲区,如果您不想垃圾邮件当前终端。

yourapp >> ~/tempOutput.txt &

如果要将其输出为"无处",则可以重定向到null

yourapp >> /dev/null &

运行命令:
sudo nohup {your command} &

使用nohup
检查运行命令进程ID ps -ef | grep nohup

并在需要时杀死命令

kill {process id}

您可以通过附加到命令上的and和如下所示。

$ ./my-script.sh &

您可以使用&可以在后台执行命令(或shell脚本),但是,如果您从会话中注销,则该命令将被杀死。为了避免这种情况,您应该使用如下所示的NOHUP。

示例

$nohup ./my-shell-script.sh &

$nohup ps -aux &

使用NOHUP在后台执行命令后,即使您注销后,该命令也会被执行。但是,您无法再次连接到同一会话,以确切查看屏幕上发生的事情。为此,您应该使用屏幕命令。

除此之外,我建议使用tmux,您可以随时创建会话并重新播放会话。

$tmux new -s mysessionname

有关TMUX的更多信息