supervisor是一個很好的守護程序管理工具,配置方面自動啟動,日志輸出,自動切割日志等等一系列強大功能,下面是在CentOS下安裝使用supervisor的記錄。
安裝
# epel源yum install epel-release# 安裝supervisoryum install -y supervisor# 開機自啟動systemctl enable supervisord# 啟動supervisord服務systemctl start supervisord Bash
配置路徑
# 主配置文件/etc/supervisord.conf# 運行程序配置文件夾/etc/supervisord.d/Bash
操作命令
systemctl stop supervisordsystemctl start supervisordsystemctl status supervisord# 重新加載配置文件,不影響正在運行的程序systemctl reload supervisordsystemctl restart supervisordBash
使用測試
寫一個測試腳本test.php,記錄啟動次數和運行。
<?phptry {  $a = file_get_contents('./times.json');} catch (Exception $e) {  $a = 0;}$a ++;file_put_contents('./times.json', $a);echo date('Y-m-d H:i:s') . " 這是第{$a}次啟動!!!!" . PHP_EOL;$i = 1;while (1) {  echo date('Y-m-d H:i:s') . " 第{$i}次輸出" . PHP_EOL;  $i ++;  sleep(5);}PHP
在程序配置文件夾/etc/supervisord.d中添加test.ini:
[program:test]directory=/home/wwwroot/test.cccommand=php test.phpautostart=trueautorestart=truestderr_logfile=/home/wwwroot/test.cc/log/error.logstdout_logfile=/home/wwwroot/test.cc/log/out.logIni
上面只是一些必要的基本配置,更詳細的配置參考:
;[program:theprogramname];command=/bin/cat ; the program (relative uses PATH, can take args);process_name=%(program_name)s ; process_name expr (default %(program_name)s);numprocs=1 ; number of processes copies to start (def 1);directory=/tmp ; directory to cwd to before exec (def no cwd);umask=022 ; umask for process (default None);priority=999 ; the relative start priority (default 999);autostart=true ; start at supervisord start (default: true);autorestart=true ; retstart at unexpected quit (default: true);startsecs=10 ; number of secs prog must stay running (def. 1);startretries=3 ; max # of serial start failures (default 3);exitcodes=0,2 ; 'expected' exit codes for process (default 0,2);stopsignal=QUIT ; signal used to kill process (default TERM);stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10);user=chrism ; setuid to this UNIX account to run the program;redirect_stderr=true ; redirect proc stderr to stdout (default false);stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB);stdout_logfile_backups=10 ; # of stdout logfile backups (default 10);stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0);stdout_events_enabled=false ; emit events on stdout writes (default false);stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB);stderr_logfile_backups=10 ; # of stderr logfile backups (default 10);stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0);stderr_events_enabled=false ; emit events on stderr writes (default false);environment=A=1,B=2 ; process environment additions (def no adds);serverurl=AUTO ; override serverurl computation (childutils)Ini
| 
 
 | 
新聞熱點
疑難解答