我正在尝试使用以下命令在后台运行supervisord
:
php /home/instacheeta/artisan queue:work --timeout=120
在我的服务器上安装主管服务、定义其配置并启动它之后,数据库上没有任何变化表明主管正在运行 PHP 应用程序。
我的主管配置:
[program:instacheeta]
process_name=%(program_name)s_%(process_num)s
command=php /home/instacheeta/artisan queue:work --timeout=120
autostart=true
autorestart=true
numprocs=1
redirect_stderr=true
stdout_logfile=/home/instacheeta/worker.log
queue:work
每分钟运行后触发cronjob
并运行直至完成。
cronjob
运行正常;我检查了数据库,确认每分钟都有新数据被存储。不幸的是,supervisor 似乎没有运行定义的命令。
我没有收到任何错误worker.log
。其他故障排除信息:
[root@host instacheeta]# ps aux|grep supervisor
root 3267 0.0 0.2 219784 12992 ? Ss 11:47 0:02 /usr/bin/python /usr/bin/supervisord
root 18279 0.0 0.0 112680 948 pts/0 S+ 14:38 0:00 grep --color=auto supervisor
无法将程序添加到supervisorctl
:
[root@host instacheeta]# supervisorctl add instacheeta
ERROR: no such process/group: instacheeta
主管状态:
[root@host instacheeta]# supervisorctl status
[root@host instacheeta]#
答案1
需要重新加载主管配置。
有两种方法可以实现此目的:
supervisor
使用service
工具 ( )重新启动服务service supervisor restart
。这将调用所有受监管的进程,但由于您当前没有运行此类进程,因此这不是问题。要求
supervisor
守护进程从配置文件动态重新加载其配置。运行supervisorctl reread
后跟supervisorctl update
更新配置。现在您可以使用start
启动程序或status
查看其状态。
supervisor
不是cron
!
在您的问题中,您陈述:
cronjob
运行正常;我检查了数据库,确认每分钟都有新数据被存储。不幸的是,supervisor 似乎没有运行定义的命令。
请注意,如果您以前有一个定期调用命令的 cronjob,supervisor
则在没有外部干预的情况下不会执行此操作,除非程序在完成工作后死亡。supervisor 通常旨在调用二进制文件提供服务并在启动后保持运行。
我建议更改应用程序,使其启动一次并具有内部时间表,并根据该时间表执行所需的任何数据库操作。