supervisor不是cron!

supervisor不是cron!

我正在嘗試使用以下命令在背景執行以下命令supervisord

php /home/instacheeta/artisan queue:work --timeout=120

在我的伺服器上安裝 Supervisor 服務、定義其配置並啟動該服務後,資料庫上沒有任何變更表明 Supervisor 正在執行 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工作正常;我檢查了我的資料庫,以驗證每分鐘都儲存新資料。不幸的是,主管似乎沒有運行定義的命令。

我沒有收到任何錯誤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 rereadsupervisorctl update更新配置。現在您可以使用start來啟動程序,或status查看其狀態。


supervisor不是cron

在你的問題中,你說:

cronjob工作正常;我檢查了我的資料庫,以驗證每分鐘都儲存新資料。不幸的是,主管似乎沒有運行定義的命令。

請注意,如果您以前有一個定期呼叫命令的 cronjob,則supervisor在沒有外部幹預的情況下不會執行此操作,或者除非程式在完成工作後終止。 Supervisor 通常旨在呼叫二進位提供服務並在啟動後保持運作。

我建議更改應用程序,使其啟動一次,並有一個內部時間表,根據該時間表執行所需的任何資料庫操作。

相關內容