supervisor不是cron!

supervisor不是cron!

我正在尝试使用以下命令在后台运行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

需要重新加载主管配置。

有两种方法可以实现此目的:

  1. supervisor使用service工具 ( )重新启动服务service supervisor restart。这将调用所有受监管的进程,但由于您当前没有运行此类进程,因此这不是问题。

  2. 要求supervisor守护进程从配置文件动态重新加载其配置。运行supervisorctl reread后跟supervisorctl update更新配置。现在您可以使用start启动程序或status查看其状态。


supervisor不是cron

在您的问题中,您陈述:

cronjob运行正常;我检查了数据库,确认每分钟都有新数据被存储。不幸的是,supervisor 似乎没有运行定义的命令。

请注意,如果您以前有一个定期调用命令的 cronjob,supervisor则在没有外部干预的情况下不会执行此操作,除非程序在完成工作后死亡。supervisor 通常旨在调用二进制文件提供服务并在启动后保持运行。

我建议更改应用程序,使其启动一次并具有内部时间表,并根据该时间表执行所需的任何数据库操作。

相关内容