用nohup和screen让脚本在linux的后台运行

nohup的使用

nohup php server.php &

在输入命令后会得到一个进程ID的返回

$ nohup php server.php &
[1] 10769

这样即使退出了终端,server.php依然在后台运行。

查看运行的后台进程

jobs -l

注意:jobs命令仅限于未关闭终端的情况使用。

关闭终端后,在另一个终端jobs已经无法看到后台跑得程序了,此时利用ps(进程查看命令)

ps -ef

使用方法

ps -aux|grep server.php

运行结果

$ ps -aux|grep server.php
root     10769  0.6  1.7 569612 17360 ?        S    11:48   0:04 php server.php
root     11387  0.0  0.0 112704   980 pts/0    R+   12:00   0:00 grep --color=auto server.php

参数说明

  • a:显示所有程序
  • u:以用户为主的格式来显示
  • x:显示所有程序,不以终端机来区分

进程的结束

在上面我们其实已经通过ps -aux|grep得到了后台运行进程信息,这里有个更简单的方法:

ps -ef | grep php

结果

ps -ef | grep php
root     10769     1  0 11:48 ?        00:00:06 php server.php
root     11806 11133  0 12:09 pts/0    00:00:00 grep --color=auto php

结束

kill 10769

screen的使用

You can use screen to open a virtual terminal, where the script can run.

I recommend to use screen -S php_script. Then you can run your script (even without &). With CTRL + A, D you can disconnect from the termial. You can reconnect with screen -r back to the terminal.

REF:

Post Comment