Total Pageviews

Wednesday 27 November 2019

利用nohup和setsid,让linux程序在后台运行

nohup

nohup最简单暴力,让程序使用在后台执行,就算关闭了当前的终端也执行(&是做不到的)。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。关闭中断后,在另一个终端jobs已经无法看到后台跑得程序了,此时利用ps(进程查看命令)。

ps aux | grep "test.sh"  #a:显示所有程序 u:以用户为主的格式来显示 x:显示所有程序,不以终端机来区分

setsid

nohup 通过忽略 HUP 信号来使我们的进程避免中途被中断,但如果我们换个角度思考,如果我们的进程不属于接受 HUP 信号的终端的子进程,那么自然也就不会受到 HUP 信号的影响了。setsid 就能帮助我们做到这一点.

jobs

查看当前有多少在后台运行的命令.
jobs -l选项可显示所有任务的PIDjobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell` 从当前的shell环境已知的列表中删除任务的进程标识。

参考:
Linux 技巧:让进程在后台可靠运行的几种方法
-----------------

但是linux系统一重启,相应的linux程序就不会再在后台运行。所以,nohup和setsid只是属于
暂时之举。