linux后台运行程序,nohup 和&结合使用

nohup 和&区别

使用&后台运行程序:

  • 结果会输出到终端
  • 使用Ctrl + C发送SIGINT信号,程序免疫
  • 关闭session发送SIGHUP信号,程序关闭

使用nohup运行程序:

  • 结果默认会输出到nohup.out
  • 使用Ctrl + C发送SIGINT信号,程序关闭
  • 关闭session发送SIGHUP信号,程序免疫

1. 后台进程  命令后加&使程序后台运行,终端可以继续其他操作

缺点:依赖终端

PHP实现守护进程方式,Linux后台运行_linux后台运行

此时使用fg命令可以恢复前台执行

PHP实现守护进程方式,Linux后台运行_linux后台运行_02

ps:后台进程并未完全脱离终端,在终端未关闭前还是会往终端输出结果,后台程序会随shell退出而停止

2.守护进程   nohup命令  

缺点:占用终端

用途:不挂断地运行命令,即使终端ssh关闭了也一直运行

语法:nohup command [arg ...] [ & ]

nohup会把程序的标准输出写入当前目录下的nohup.out文件,没有写入权限则写入$HOME下

PHP实现守护进程方式,Linux后台运行_后台进程_03

关闭终端,新开一个,进程还在继续

PHP实现守护进程方式,Linux后台运行_php_04

查看进程 

ps -ef | grep time.php

PHP实现守护进程方式,Linux后台运行_php守护进程_05

 3.结合nohup 和 & 实现不占用也不依赖终端,

nohup php /www/wwwroot/hb/application/common/pusb.php &

PHP实现守护进程方式,Linux后台运行_后台运行_06

jobs -l 

PHP实现守护进程方式,Linux后台运行_后台运行_07

关闭后台进程

方式一: 使用kill

jobs -l 

kill -9 pid 

 

方式二 :fg切到后台再Ctrl+c

fg