rabbitMQ + nohup 服务端守护进程(一)

随着互联网的发展,php快速开发的特点,现在越来越多的团队将php作为服务端的编程语言,

nohup

nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。

在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中。

  1. nohup command > myout.file 2>&1 &

在上面的例子中,0 – stdin (standard input),1 – stdout (standard output),2 – stderr (standard error) ;
2>&1是将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向输入到myout.file文件中。

nohup和&的区别
& : 指在后台运行

nohup : nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响他的运行,注意了nohup没有后台运行的意思;&才是后台运行

&是指在后台运行,但当用户推出(挂起)的时候,命令自动也跟着退出

结合起来用就是
nohup COMMAND &
这样就能使命令永久的在后台执行

例如:

执行命令

nohup yii test-server/start > tets.txt 2>&1 &

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

jobs -l

断开终端,查看进程

ps -ef | grep php

  501  5410     1   0  4:08下午 ??         0:00.05 php /usr/bin/yii test-server/start
  501  5888     1   0  4:10下午 ??        13:27.09 /Applications/PhpStorm.app/Contents/MacOS/phpstorm
  501  8723     1   0  4:25下午 ??         0:00.00 php /usr/bin/yii test-server/start
  501  8727  7248   0  4:25下午 ttys002    0:00.00 grep php

这就实现了守护进程.

注意
单独执行 php myprog.php,当按下ctrl+c时就会中断程序执行,会kill当前进程以及子进程。
php myprog.php &,这样执行程序虽然也是转为后台运行,实际上是依赖终端的,当用户退出终端时进程就会被杀掉

猜你喜欢

转载自blog.csdn.net/weixin_36851500/article/details/93923919
今日推荐