一、进程后台运行命令
./main# 进程main启动时将在前台运行Ctrl-Z # 在前台暂停进程main
bg %1 # 将暂停的进程main在后台重新启动
fg %1 # 将暂停的进程main在前台重新启动
./main & # 进程main启动时将在后台运行
此时的进程都是在shell中启动的,如果关闭shell窗口,则启动的进程也将退出,那么,如何在shell退出以后,由shell启动的进程不会退出,方法如下:
(1)使用nohup命令使启动进程忽略hangup信号
[root@localhost ~]#nohup ./main & # 进程main启动时在后台运行并且忽略hangup信号
这样启动进程main后,关闭启动main进程的shell窗口,进程也会正常的在后台运行,可以用ps -ef | grep main 跟踪下main进程的变化,发现当关闭shell时,main进程的父进程就会变成1号进程。
(2)使用setsid将启动进程的父进程为init进程(1号进程)
[root@localhost ~]#setsid ./main & # 进程main启动时在后台运行并且设置其父进程为init进程
(3)使用()命令,此方法的原理同于setsid方法
[root@localhost~]#(./main &) # 进程main启动时在后台运行并且设置其父进程为init进程
上面介绍的方法都是在启动进程时设置进程在shell关闭后依然保持运行。那么,如果进程开始时已经在后台运行时,该如何设置?下面介绍第四种方法。
(4)disown命令
[root@localhost ~]#./main & # 先启动进程main并将其置于后台
[root@localhost ~]#disown -h %1 # 设置main进程不受shell退出的影响