现象:
[root@wangzhandaima supervisor]# supervisorctl update
consumer_for_unpaid_order_status_check: added process group
[root@wangzhandaima supervisor]# supervisorctl status
admin_info RUNNING pid 27176, uptime 22 days, 15:27:11
consumer_for_unpaid_order_status_check BACKOFF Exited too quickly (process log may have details)
crontab_order_status_problem RUNNING pid 27182, uptime 22 days, 15:27:11
[root@wangzhandaima supervisor]# supervisorctl status
admin_info RUNNING pid 27176, uptime 22 days, 15:27:14
consumer_for_unpaid_order_status_check FATAL Exited too quickly (process log may have details)
crontab_order_status_problem RUNNING pid 27182, uptime 22 days, 15:27:14
配置文件:
cat /etc/supervisor/status_check.conf
[program:consumer_for_unpaid_order_status_check]
command=/usr/bin/php script_files/consumer_for_unpaid_order_status_check.php
directory=/aaa/bbb/ccc/ddd/
autostart=true
autorestart=true
user=root
numprocs=1
stdout_logfile=/tmp/XXX_stdout.log
stdout_logfile_maxbytes=10MB
stderr_logfile=/tmp/XXX_stderr.log
stderr_logfile_maxbytes=10MB
排查过程及解决办法:
1,查看日志都为空
[root@wangzhandaima supervisor]# vim /tmp/XXX_stdout.log
[root@wangzhandaima supervisor]# vim /tmp/XXX_stderr.log
2,手动执行命令测试:
[root@wangzhandaima supervisor]# cd /aaa/bbb/ccc/ddd/------------在该路径下
[root@wangzhandaima admin27]# /usr/bin/php script_files/consumer_for_unpaid_order_status_check.php--------多了一级目录执行php文件直接什么都没打印,也没有卡在那里执行。
[root@wangzhandaima admin27]# ps -ef | grep consumer-------没有进程
root 22674 21552 0 09:46 pts/0 00:00:00 grep consumer
[root@wangzhandaima admin27]# cd ./script_files/---------再进一级目录
[root@wangzhandaima script_files]# /usr/bin/php consumer_for_unpaid_order_status_check.php---------在该目录下执行php命令,成功运行,知道按Ctrl+c才退出。
^C
所以修改status_check.conf配置文件为如下:
[root@wangzhandaima supervisor]# vim ./status_check.conf
[program:consumer_for_unpaid_order_status_check]
command=/usr/bin/php consumer_for_unpaid_order_status_check.php
directory=/aaa/bbb/ccc/ddd/
autostart=true
autorestart=true
user=root
numprocs=1
stdout_logfile=/tmp/XXX_stdout.log
stdout_logfile_maxbytes=10MB
stderr_logfile=/tmp/XXX_stderr.log
stderr_logfile_maxbytes=10MB
[root@wangzhandaima supervisor]# supervisorctl start consumer_for_unpaid_order_status_check
consumer_for_unpaid_order_status_check: ERROR (spawn error)
[root@wangzhandaima supervisor]# supervisorctl status
admin_info RUNNING pid 27176, uptime 22 days, 15:31:02
consumer_for_unpaid_order_status_check FATAL Exited too quickly (process log may have details)
crontab_order_status_problem RUNNING pid 27182, uptime 22 days, 15:31:02
查看日志都为空:
[root@wangzhandaima supervisor]# vim /tmp/XXX_stdout.log
[root@wangzhandaima supervisor]# vim /tmp/XXX_stderr.log
3,考虑到是不是要配置文件名称与配置文件中的program:名称一致
尝试修改文件名status_check.conf为consumer_for_unpaid_order_status_check.conf
然后执行
[root@wangzhandaima supervisor]# supervisorctl update
consumer_for_unpaid_order_status_check: stopped
consumer_for_unpaid_order_status_check: updated process group
执行成功。