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:work1 分ごとに実行した後に起動しcronjob、終了するまで動作します。

cronjob正常に動作します。データベースで確認したところ、新しいデータが 1 分ごとに保存されていることがわかりました。残念ながら、スーパーバイザーは定義されたコマンドを実行していないようです。

ではエラーは発生しません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

スーパーバイザ構成を再ロードする必要があります。

これには 2 つの方法があります。

  1. ツール ( )supervisorを使用してサービスを再起動します。これにより、すべての監視対象プロセスが呼び出されますが、現在そのようなプロセスは実行されていないため、これは問題ではありません。serviceservice supervisor restart

  2. supervisorデーモンに、設定ファイルから設定を動的に再読み込みするように指示します。 を実行しsupervisorctl rereadてから を実行して設定を更新します。 これで、 を使用してプログラムを起動したり、そのステータスを表示したりできるようにsupervisorctl updateなります。startstatus


supervisorではありませんcron

あなたの質問では、次のように述べられています:

cronjob正常に動作します。データベースで確認したところ、新しいデータが 1 分ごとに保存されていることがわかりました。残念ながら、スーパーバイザーは定義されたコマンドを実行していないようです。

以前に定期的にコマンドを呼び出す cronjob があった場合、supervisor外部からの介入がないか、プログラムが作業終了後に終了しない限り、このコマンドは実行されないことに注意してください。スーパーバイザーは通常、バイナリを呼び出してサービスを提供し、起動したら実行し続けることを目的としています。

アプリケーションを一度起動し、必要なデータベース アクションを実行する内部スケジュールを持つように変更することをお勧めします。

関連情報