Linux断开终端不影响运行的程序的解决办法

nohup

nohup命令忽略 hangup 信号,标准输出和标准错误缺省会被重定向到 nohup.out 文件中。结尾加上”&”来将命令同时放入后台运行

1
2
3
4
5
6
7
[root@pvcent107 ~]# nohup ping www.ibm.com &
[1] 3059
nohup: appending output to `nohup.out'
[root@pvcent107 ~]# ps -ef |grep 3059
root 3059 984 0 21:06 pts/3 00:00:00 ping www.ibm.com
root 3067 984 0 21:06 pts/3 00:00:00 grep 3059
[root@pvcent107 ~]#

setsid

打开一个新的会话运行程序

1
2
3
4
5
[root@pvcent107 ~]# setsid ping www.ibm.com
[root@pvcent107 ~]# ps -ef |grep www.ibm.com
root 31094 1 0 07:28 ? 00:00:00 ping www.ibm.com
root 31102 29217 0 07:29 pts/4 00:00:00 grep www.ibm.com
[root@pvcent107 ~]#

&

将一个或多个命名包含在“()”中就能让这些命令在子 shell 中运行中,当我们将”&”也放入“()”内之后,我们就会发现所提交的作业并不在作业列表中

1
2
3
4
5
[root@pvcent107 ~]# (ping www.ibm.com &)
[root@pvcent107 ~]# ps -ef |grep www.ibm.com
root 16270 1 0 14:13 pts/4 00:00:00 ping www.ibm.com
root 16278 15362 0 14:13 pts/4 00:00:00 grep www.ibm.com
[root@pvcent107 ~]#

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