当进程不是守护进程时,不能简单地在命令行后添加一个&,当终端关闭时,该进程也随之关闭。因为通常在终端起动的进程其父进程是终端进程。当终端关闭时,其所有子进程也随之关闭。使进程在后台执行需要使用nohup命令:
nohup command > out.log 2>&1 &
nohup的作用是将进程的父进程设置为1,即init进程,这样终端关闭时,不会影响该进程。
使用2>&1将标准错误输出也重定向到标准输出中,因为预定义的STDIN,STDOUT,STDERR分别是0,1,2。
时间: 2024-10-14 23:04:36