我正在使用Supervisord來連續運行一些索引程序。每次運行索引器時,它都會抓取一組文檔,爲它們編制索引,然後結束。 Supervisord進程將生成另一個相同的索引器程序,並且該索引器將獲取一組新的索引文件。如何在不殺死它控制的程序的情況下停止Supervisord進程?
有時我需要停止運行這些索引器程序的Supervisord進程。然而,當我這樣做時,它總是在工作中殺死索引器程序。
我想要做的是停止Supervisord進程,以便當前運行的索引器程序將執行完成,但Supervisord進程不會產生另一個索引器。
這裏是我的這個過程supervisord.conf設置:
; TRIGGERING INDEXERS
;
[program:indexer]
command=php /data/app/index_company.php
process_name=%(program_name)s_%(process_num)d
redirect_stderr=true
stdout_capture_maxbytes=10MB
stdout_logfile_backups=0
numprocs=5
startsecs=0
autostart=false
autorestart=true
[group:indexers]
programs=indexer
非常有用!我注意到SIGTERM在默認情況下殺死了php腳本,除非使用'pcntl_signal'並且指定了回調。例如,如果我運行類似於上面的腳本,它將立即終止,除非我已經定義了SIGTERM回調函數。一旦定義了SIGTERM回調,腳本就會繼續運行,直到它被殺死或處理。另外需要注意的是,所有這些信號都會立即終止當前位於sleep()函數內的php腳本。看到這裏:[鏈接](http://php.net/manual/en/function.pcntl-signal.php) –