supervisord 守护进程 与 crontab

2022-05-28  本文已影响0人  云龙789

重启指令

systemctl restart supervisord

场景1

有时候新服务器 supervisord 重启会有问题,可以按照提示一步步处理
supervisord[60061]: Error: Another program is already listening on a port that one of our HTTP servers is configured to use.  Shut this program do...upervisord

第一步
ps -ef |grep supervisord   (第一步执行指令:查看 supervisord 进程)


root     18365     1  0 00:24 ?        00:00:00 /www/server/panel/pyenv/bin/python3.7 /www/server/panel/pyenv/bin/supervisord -c /etc/supervisor/supervisord.conf
root     18573 16299  0 00:25 pts/0    00:00:00 grep --color=auto supervisord

第二部分
kill -9  18365     (第二步执行指令  杀掉 supervisord 进程)

我在使用 php 请求三方的循环处理的时候,经常遇到 supervisord 正常,但是程序就是不执行,也不知道什么原因。所以要配合 crontab 10分钟 重启一次 supervisord 即可。重启之后,所有的supervisord 进程都会直接重启

就算是自己写脚本,做守护进程,也是最好配合 crontab 做监听,就完美了

5S 循环重启一次 supervisord

crontab -e   注意这里必须使用root  用户才可以
*/10 * * * * systemctl restart supervisord  >> /dev/null 2>&1
或者 
*/10 * * * * systemctl restart supervisord  >>   /www/server/cron/supervisord.log     2>&1

/www/server/cron/supervisord.log  代表日志文件
我自己手写 */10 * * * *,不知道为什么不行,我直接在宝塔写个10分钟的定时任务,然后复制粘贴
这样格式很定正确

定时任务

默认是使用 root  用户
crontab -u www -e
crontab -u www -l

crontab -l
crontab -e
sudo service crond start     #启动服务
sudo service crond stop      #关闭服务
sudo service crond restart   #重启服务
sudo service crond reload    #重新载入配置
sudo service crond status    #查看服务状态

DEMO

test.php  文件
<?php

function test(){
    while (true){
        echo date('Y-m-d H:i:s');
        sleep(3);
    }
}

test();

在 supervisord 中直接添加指令 php test.php 即可守护此进程。没间隔三秒执行一次循环处理业务
每间隔10分钟重启一次 supervisord ,这样的话,就算 test.php 有问题,10分钟后重启一次,也会正常处理

上一篇下一篇

猜你喜欢

热点阅读