让程序在linux后台运行的方法
常见用法:
nohup ./Thriftc & > /dev/null &
在linux后台运行Thriftc程序,并将其输出重定向到空设备:/dev/null,也就是将程序输出全部丢弃。
nohup COMMAND > out.log 2>&1 &
在linux后台运行COMMAND命令,将标准输出重定向到out.log文件,标准错误也重定向到out.log文件(标准错误重定向到标准输出,再将标准输出重定向到out.log)。
上边的示例涉及到两个命令:nohup和&,下面依次进行解释。
nohup
nohup,"no hangup" 的缩写,意思是“不挂断”,也就是不挂断地运行命令。
命令格式:
nohup COMMAND [ARG]...
运行指定的命令,忽略所有挂起(SIGHUP)信号。使用nohup运行命令可以使命令永久的执行下去,在用户注销/关闭终端之后仍然继续运行。值得注意的是,命令或进程并没有在后台运行。
如果没有将 nohup 命令的输出进行重定向,输出将追加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。
&
& 是指在后台运行。将&添加到命令的尾部,命令就会在后台运行,但当用户退出(挂起)的时候,命令自动也跟着退出。
后台持续运行
要让程序在后台持续运行,要将nohup和&结合起来使用。
例如:
sh test.sh &
将 test.sh 任务放到后台,关闭xshell,对应的任务也跟着停止。
nohup sh test.sh
将 test.sh 任务放到后台,关闭标准输入,终端不再能够接收任何输入(标准输入),重定向标准输出和标准错误到当前目录下的nohup.out文件,即使关闭xshell,当前session依然继续运行。
nohup sh test.sh &
将 test.sh 任务放到后台,但是依然可以使用标准输入,终端能够接收任何输入,重定向标准输出和标准错误到当前目录下的nohup.out文件,即使关闭xshell,当前session依然继续运行。
参考:
https://blog.csdn.net/u011095110/article/details/78666833