让程序在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

posted on 2019-01-04 18:47  泣血  阅读(586)  评论(0编辑  收藏  举报

导航