nohup
让提交的命令忽略 hangup 信号
标准输出和标准错误缺省会被重定向到 nohup.out 文件中
也可用”>filename 2>&1″来更改缺省的重定向文件名,如:
nohup ./cmd.sh &>>/dev/null &

setsid
setsid中的sid指的是session id
意在该命令运行在一个新session
其PPID不是当前session而是1,如:
setsid ./cmd.sh &>>/dev/null &
与nohup不同的是,其输出重定向必须手动设置

(&)
将一个或多个命名包含在“()”中就能让这些命令在子 shell 中运行,如:
(./cmd.sh &>>/dev/null &)
新提交的进程的父 ID(PPID)为1(init 进程的 PID),并不是当前终端的进程 ID。
因此并不属于当前终端的子进程,从而也就不会受到当前终端的 HUP 信号的影响了

screen
screen提供了ANSI/VT100的终端模拟器
使它能够在一个真实终端下运行多个全屏的伪终端

supervisor
Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。
它是通过fork/exec的方式把这些被管理的进程当作supervisor的子进程来启动,这样只要在supervisor的配置文件中,把要管理的进程的可执行文件的路径写进去即可。
也实现当子进程挂掉的时候,父进程可以准确获取子进程挂掉的信息的,可以选择是否自己启动和报警。
supervisor还提供了一个功能,可以为supervisord或者每个子进程,设置一个非root的user,这个user就可以管理它对应的进程。

disown
可以使已运行的进程免于HUP信号影响,补救用
用disown -h jobspec来使某个作业忽略HUP信号。
用disown -ah 来使所有的作业都忽略HUP信号。
用disown -rh 来使正在运行的作业忽略HUP信号。
当使用过 disown 之后,会将把目标作业从作业列表中移除,我们将不能再使用jobs来查看它,但是依然能够用ps -ef查找到它

CTRL-z
CTRL-z 的用途就是将当前进程挂起(Suspend),然后我们就可以用jobs命令来查询它的作业号,再用bg jobspec来将它放入后台并继续运行
需要注意的是,如果挂起会影响当前进程的运行结果,请慎用此方法

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code