Systemctl守护进程简单例子和Nohup命令的使用
1.由于项目需要用到常驻进程执行系统的命令,网罗了下使用nohup常驻进程的方法:
nohup php path/file_name.php > /dev/null 2>&1 &
但是由于nohup虽然在一次启动中可以常驻,可是不能保证进程是否断开,或者已经执行完了,
所以需要守护进程的命令工具来重启nohup常驻进程,这时可以使用服务器自带的插件Systemctl这个工具来实现。
※虽然守护进程可以确保进程一直存在、常驻进程一直在执行,但是代码中不能断开或者执行完成,一定要在代码里面加入while,让其一直执行
while (TRUE) { }
Systemctl守护进程的服务需要做成service文件,然后放入系统执行目录、启动才能生效,步骤如下:
系统服务配置操作步骤: 1.拷贝创建的serveice文件到系统服务目录 cp /workspace/web-site/operations/system_service/queue_one.prod.service /usr/lib/systemd/system/queue_one.prod.service 2.重新加载系统服务单元池(每次添加或者修改service文件内容的情况下都必须执行重载) systemctl daemon-reload 3.启动服务(自动启动进程) systemctl start queue_one.prod.service 加入系统自动开机启动 systemctl enable queue_one.prod.service 4.停止服务(自动关闭进程) systemctl stop queue_one.prod.service
2.同样的原理还有其他方式,使用常驻进程和自动监听再新建进程:
posix + pcntl + steam_select
可以获取进程ID、监听到进程退出后再开一个
awk 匹配端口号
※如果使用Workerman来实现并替代常驻进程会更加的方便和适合扩展。
可以查看老爷爷的博客园:Linux的nohup作用
参考来源:Systemctl守护进程简单例子
Jocsonme
Good Day !
Good good study, day day up !
Related Posts
分类目录
- Apache (6)
- APP-Android (1)
- APP-IOS (3)
- BI (2)
- Qlikview (2)
- BigData (2)
- Domain-Space (1)
- Git (4)
- Google (1)
- History – Articles (2)
- HTML+CSS (13)
- IDE-CodeEditor (1)
- NetBeans (1)
- Javascript (18)
- Linux (24)
- Load-Balancing (3)
- Memcached (1)
- MySQL (9)
- PHP (28)
- Laravel (1)
- Swoole (1)
- Symfony2.x – 3.x (2)
- ThinkPHP5 (1)
- Thirdpart – develop (6)
- ZendFramework2.x (1)
- Products-Design (1)
- Redis (1)
- SEM (2)
- SEO (2)
- Server-Architecture (5)
- Vagrant (1)
- Windows (7)
- BAT (1)
- Workplace (1)
一 | 二 | 三 | 四 | 五 | 六 | 日 |
---|---|---|---|---|---|---|
« 11月 | ||||||
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |