参数

参数 功能
directory=/tmp 程序的运行目录
environment=KEY=“val”,KEY2=“val2” 环境变量
autostart = true ; 在 supervisord 启动的时候也自动启动
startsecs = 5 ; 启动 5 秒后没有异常退出,就当作已经正常启动了
autorestart = true ; 程序异常退出后自动重启
startretries = 3 ; 启动失败自动重试次数,默认是 3

示例

directory

当运行一个程序不在当前目录时,可以利用directory将程序指向不同的运行目录。

例如下面的explorerweb程序就不在here运行目录,由supervisord程序在运行将它的Dir进行修改再运行的。

[supervisord]
loglevel=debug
logfile_maxbytes=1MB
logfile_backups=2
[inet_http_server]
port=127.0.0.1:9001
[program:bcexplorer]
command=./bcexplorer/bcexplorer -c ./bcexplorer/cfg.json
stdout_logfile=%(here)s/bcexplorer/bcexplorer.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=2
stdout_capture_maxbytes=0
stdout_events_enabled=true
stderr_logfile=%(here)s/bcexplorer/bcexplorer.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=2
stderr_capture_maxbytes=0
stderr_events_enabled=true
[program:explorerweb]
command=./explorerweb -c cfg.json
directory=%(here)s/explorerweb
stdout_logfile=%(here)s/explorerweb.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=2
stdout_capture_maxbytes=0
stdout_events_enabled=true
stderr_logfile=%(here)s/explorerweb.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=2
stderr_capture_maxbytes=0
stderr_events_enabled=true

pre

在运行nodejs之前需要将其运行的配置文件修改了。也就是它的config.json文件由挂载的目录里面config.json进行替换 其实在运行的时候只需要运行一次。所以我们利用autorestart=false这个功能。

[supervisord]
loglevel=debug
logfile_maxbytes=1MB
logfile_backups=2
[inet_http_server]
port=127.0.0.1:9001
[program:pre]
command=sh run.sh
autostart=true
startsecs=3
startretries=0
autorestart=false
stdout_logfile=%(here)s/run.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=2
stdout_capture_maxbytes=0
stdout_events_enabled=true
stderr_logfile=%(here)s/run.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=2
stderr_capture_maxbytes=0
stderr_events_enabled=true
[program:mongodb]
command=mongod --dbpath /data/db
stdout_logfile=%(here)s/mongodb.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=2
stdout_capture_maxbytes=0
stdout_events_enabled=true
stderr_logfile=%(here)s/mongodb.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=2
stderr_capture_maxbytes=0
stderr_events_enabled=true
[program:nodejs]
directory=/ndata
command=npm start
stdout_logfile=%(here)s/explorer.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=2
stdout_capture_maxbytes=0
stdout_events_enabled=true
stderr_logfile=%(here)s/explorer.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=2
stderr_capture_maxbytes=0
stderr_events_enabled=true

run.sh内容只是一个cp功能:

cp -f /rdata/config.json /ndata/config.json
cat /ndata/config.json
sleep 5