다음을 사용하여 백그라운드에서 아래 명령을 실행하려고합니다 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
잘 작동합니다. 매분마다 새로운 데이터가 저장되는지 확인하기 위해 데이터베이스를 확인했습니다. 불행하게도 감독자는 정의된 명령을 실행하지 않는 것 같습니다.
에서는 어떤 오류도 발생하지 않습니다 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
감독자 구성을 다시 로드해야 합니다.
이에 대한 두 가지 방법이 있습니다.
도구( )를
supervisor
사용하여 서비스를 다시 시작합니다 . 이렇게 하면 감독되는 모든 프로세스가 호출되지만 현재 실행 중인 프로세스가 없으므로 이는 문제가 되지 않습니다.service
service supervisor restart
supervisor
구성 파일에서 구성을 동적으로 다시 로드하도록 데몬에게 요청합니다 . 구성을 업데이트하려면supervisorctl reread
다음에 실행하세요 .supervisorctl update
이제 를 사용하여start
프로그램을 시작하거나status
프로그램 상태를 볼 수 있습니다.
supervisor
아니다 cron
!
귀하의 질문에서 귀하는 다음과 같이 말합니다.
cronjob
잘 작동합니다. 매분마다 새로운 데이터가 저장되는지 확인하기 위해 데이터베이스를 확인했습니다. 불행하게도 감독자는 정의된 명령을 실행하지 않는 것 같습니다.
이전에 정기적으로 명령을 호출한 cronjob이 있었다면 supervisor
외부 개입 없이 또는 작업이 완료된 후 프로그램이 종료되지 않는 한 이 작업을 수행하지 않는다는 점에 유의하십시오. 감독자는 일반적으로 바이너리를 호출하여 서비스를 제공하고 시작된 후에는 계속 실행되도록 설계되었습니다.
애플리케이션이 한 번 시작되고 필요한 모든 데이터베이스 작업을 수행하는 내부 일정을 갖도록 애플리케이션을 변경하는 것이 좋습니다.