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잘 작동합니다. 매분마다 새로운 데이터가 저장되는지 확인하기 위해 데이터베이스를 확인했습니다. 불행하게도 감독자는 정의된 명령을 실행하지 않는 것 같습니다.

에서는 어떤 오류도 발생하지 않습니다 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사용하여 서비스를 다시 시작합니다 . 이렇게 하면 감독되는 모든 프로세스가 호출되지만 현재 실행 중인 프로세스가 없으므로 이는 문제가 되지 않습니다.serviceservice supervisor restart

  2. supervisor구성 파일에서 구성을 동적으로 다시 로드하도록 데몬에게 요청합니다 . 구성을 업데이트하려면 supervisorctl reread다음에 실행하세요 . supervisorctl update이제 를 사용하여 start프로그램을 시작하거나 status프로그램 상태를 볼 수 있습니다.


supervisor아니다 cron!

귀하의 질문에서 귀하는 다음과 같이 말합니다.

cronjob잘 작동합니다. 매분마다 새로운 데이터가 저장되는지 확인하기 위해 데이터베이스를 확인했습니다. 불행하게도 감독자는 정의된 명령을 실행하지 않는 것 같습니다.

이전에 정기적으로 명령을 호출한 cronjob이 있었다면 supervisor외부 개입 없이 또는 작업이 완료된 후 프로그램이 종료되지 않는 한 이 작업을 수행하지 않는다는 점에 유의하십시오. 감독자는 일반적으로 바이너리를 호출하여 서비스를 제공하고 시작된 후에는 계속 실행되도록 설계되었습니다.

애플리케이션이 한 번 시작되고 필요한 모든 데이터베이스 작업을 수행하는 내부 일정을 갖도록 애플리케이션을 변경하는 것이 좋습니다.

관련 정보