Glab

linux管理:后台运行的方法

程序运行的默认行为

当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。

后台运行归结为两种途径

方法1 nohup:

标准输出和标准错误缺省会被重定向到 nohup.out

方法2 setsid

使进程不属于 接受 HUP 信号的终端的子进程, 会将进程的父进程为init
setsid command

方法3 (cmd &)

利用()使进程在子shell中运行, 父进程为当前shell的父进程(一般情况会是init).

jobs无法查看到,因为不在当前shell下
方法4 disown

使已放入后台(使用&)的进程忽略hup信号

    disown -h %1 #来使某个作业忽略HUP信号。   
    disown -ah   #来使所有的作业都忽略HUP信号。
    disown -rh   #来使正在运行的作业忽略HUP信号。
如果前台运行的程序,可以借助ctrl^z, bg放入后台运行再使用disown
方法5 screen

在screen下建立了一个新的Bash, 当Bash断掉后, 不影响screen

screen -dmS <name>    #新建会话
screen -list          #列出所有会话。
screen -r name        #来重新连接指定会话。
screen -D -r          #-r无法恢复时使用
screen -x  name       #分屏
用快捷键CTRL-a d 来暂时断开当前会话。

参考: http://www.ibm.com/developerworks/cn/linux/l-cn-nohup/

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »