我尝试使用一个 shell 脚本来启动一个命令。我不在乎它是否/何时/如何/为什么结束。我希望这个过程能够启动并运行,但是我希望能够立即返回到 shell..。
你可以在后台运行脚本:
$ myscript &
请注意,这不同于将 &放在脚本中,后者可能不会完成您想要的任务。
&
Alternatively, after you got the program running, you can hit Ctrl-Z which stops your program and then type
BG
把你上次停止的程序放在后台。(如果您开始的东西没有’&’,但仍然希望它在后台没有重新启动它的有用)
nohup cmd
关闭终端时不会挂起。默认情况下输出到 nohup.out
你可以把这个和背景结合起来,
nohup cmd &
去掉输出,
nohup cmd > /dev/null 2>&1 &
你也可以使用命令 disown。输入 cmd,Ctrl-Z,bg,disown
disown
cmd
Ctrl-Z
bg
大家都忘记了 disown。下面是一个总结:
& puts the job in the background.
disown将进程从 shell 的作业控制中移除,但仍将其连接到终端。
SIGHUP
nohup断开进程与终端的连接,将其输出重定向到 nohup.out,并保护它不受 SIGHUP的影响。
nohup
nohup.out
screen -m -d $command$在一个分离的会话中启动命令。可以使用 screen -r附加到已启动的会话。它是一个非常好的工具,对于远程会话也非常有用。请在 man screen阅读更多内容。
screen -m -d $command$
screen -r
man screen