场景:


创建一个php服务脚本,该脚本负责抓取mqtt等通信记录,并且保存到数据库。平时,我们只要在服务器端开个终端,就可以运行代码,去抓数据,但是将终端关闭后,就无法抓取数据了。守护进程(daemon)就是一直在后台运行的进程(daemon)。他可以脱离终端独自在后台运行。

前台任务和后台任务

1.在ubuntu上,平时的做法是运行如下代码当做一个服务脚本。
php run.php
这样独自占着一个终端就可以运行。但是没法使用终端干其他事情了。

2.我们在命令的结尾加上&,如下:
php run.php &
只要在命令的尾部加上符号&,启动的进程就会成为”后台任务”。如果要让正在运行的”前台任务”变为”后台任务”,可以先按ctrl +
z,然后执行bg命令(让最近一个暂停的”后台任务”继续执行)。也可以输入fg 回车转变为正常模式。

“后台任务”有两个特点:
继承当前 session (对话)的标准输出(stdout)和标准错误(stderr)。因此,后台任务的所有输出依然会同步地在命令行下显示。
不再继承当前 session 的标准输入(stdin)。你无法向这个任务输入指令了。如果它试图读取标准输入,就会暂停执行(halt)。
可以看到,”后台任务”与”前台任务”的本质区别只有一个:是否继承标准输入。所以,执行后台任务的同时,用户还可以输入其他命令。

tail -fn 50 nohup.out

继续参考
http://www.ruanyifeng.com/blog/2016/02/linux-daemon.html
<http://www.ruanyifeng.com/blog/2016/02/linux-daemon.html>

php学习群:536633782
个人qq:1186969412
个人站点:http://www.uminicmf.com <http://www.uminicmf.com>