Linux 进程后台运行的方法

当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其全部子进程。所以,咱们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运行在新的会话里从而成为不属于此终端的子进程。网络

nohup

nohup 的用途就是让提交的命令忽略 hangup 信号。code

nohup 的使用是十分方便的,只需在要处理的命令前加上 nohup 便可,标准输出和标准错误缺省会被重定向到 nohup.out 文件中。通常咱们可在结尾加上"&"来将命令同时放入后台运行,也可用">filename 2>&1"来更改缺省的重定向文件名。进程

[root@pvcent107 ~]# nohup ping www.ibm.com &

setsid

setsid 能够让进程忽略HUP信号,作到命令后台执行的效果。后台

setsid 的使用也是很是方便的,也只需在要处理的命令前加上 setsid 便可。file

若是咱们未加任何处理就已经提交了命令,该如何补救才能让它避免 HUP 信号的影响呢?终端

能够经过做业调度和 disown 来解决这个问题。重定向

  • 用disown -h jobspec来使某个做业忽略HUP信号。di

  • 用disown -ah 来使全部的做业都忽略HUP信号。文件

  • 用disown -rh 来使正在运行的做业忽略HUP信号。ping

当使用过 disown 以后,会将把目标做业从做业列表中移除,咱们将不能再使用jobs来查看它,可是依然可以用ps -ef查找到它。

& 的做用

& 放在启动参数后面表示设置此进程为后台进程

相关文章
相关标签/搜索