次のコマンドを使用して、バックグラウンドで以下のコマンドを実行しようとしています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
1 分ごとに実行した後に起動し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 つの方法があります。
ツール ( )
supervisor
を使用してサービスを再起動します。これにより、すべての監視対象プロセスが呼び出されますが、現在そのようなプロセスは実行されていないため、これは問題ではありません。service
service supervisor restart
supervisor
デーモンに、設定ファイルから設定を動的に再読み込みするように指示します。 を実行しsupervisorctl reread
てから を実行して設定を更新します。 これで、 を使用してプログラムを起動したり、そのステータスを表示したりできるようにsupervisorctl update
なります。start
status
supervisor
ではありませんcron
!
あなたの質問では、次のように述べられています:
cronjob
正常に動作します。データベースで確認したところ、新しいデータが 1 分ごとに保存されていることがわかりました。残念ながら、スーパーバイザーは定義されたコマンドを実行していないようです。
以前に定期的にコマンドを呼び出す cronjob があった場合、supervisor
外部からの介入がないか、プログラムが作業終了後に終了しない限り、このコマンドは実行されないことに注意してください。スーパーバイザーは通常、バイナリを呼び出してサービスを提供し、起動したら実行し続けることを目的としています。
アプリケーションを一度起動し、必要なデータベース アクションを実行する内部スケジュールを持つように変更することをお勧めします。