重启指令
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分钟后重启一次,也会正常处理