root安装
yum install python-setuptools
easy_install supervisor
卸载
yum -y remove supervisor
生成配置文件:
mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisord.conf
修改配置文件vim /etc/supervisord.conf
[unix_http_server]
;file=/tmp/supervisor.sock ; (the path to the socket file)
file=/var/run/supervisor.sock ; 修改为 /var/run 目录,避免被系统删除
;chmod=0700 ; socket file mode (default 0700)
;chown=nobody:nogroup ; socket file uid:gid owner
;username=user ; (default is no username (open server))
;password=123 ; (default is no password (open server))
...
[supervisord]
;logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile=/var/log/supervisor/supervisord.log ; 修改为 /var/log 目录,避免被系统删除
logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10 ; (num of main logfile rotation backups;default 10)
loglevel=info ; (log level;default info; others: debug,warn,trace)
;pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
pidfile=/var/run/supervisord.pid ; 修改为 /var/run 目录,避免被系统删除
...
[supervisorctl]
; 必须和'unix_http_server'里面的设定匹配
;serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket
serverurl=unix:///var/run/supervisor.sock ; 修改为 /var/run 目录,避免被系统删除
;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
;username=chris ; should be same as http_username if set
;password=123 ; should be same as http_password if set
...
;[include]
;files = relative/directory/*.ini
修改为:
[include]
files=/etc/supervisor/*.conf
(注意去掉分号);
创建一个文件 文件名随意 后缀为.conf
路径/etc/supervisor/tj_service.conf
[program:task-server]
autorestart=True
autostart=True
command=java -jar /home/qxj/programs/tasks/server/task-server-0.0.1-SNAPSHOT.jar
user=root
directory=/home/qxj/programs/tasks/server/
startsecs=30
priority=30
redirect_stderr = true
stdout_logfile = /home/qxj/logs/task-server.log
stopwaitsecs=10
stopasgroup=True
killasgroup=True
logfile_backups=1
[program:zk]
autorestart=True
autostart=True
command=/home/qxj/programs/kafka/bin/zookeeper-server-start.sh /home/qxj/programs/kafka/config/zookeeper.properties
user=root
directory=/home/qxj/programs/kafka/
startsecs=5
priority=5
redirect_stderr = true
stdout_logfile = /home/qxj/logs/zk.log
stopwaitsecs=10
stopasgroup=True
killasgroup=True
logfile_backups=1
[program:kafka]
autorestart=True
autostart=True
command=/home/qxj/programs/kafka/bin/kafka-server-start.sh /home/qxj/programs/kafka/config/server.properties
user=root
directory=/home/qxj/programs/kafka/
startsecs=10
priority=10
redirect_stderr = true
stdout_logfile = /home/qxj/logs/kafka.log
stopwaitsecs=10
stopasgroup=True
killasgroup=True
logfile_backups=1
[program:cassandra]
autorestart=True
autostart=True
command=/home/qxj/programs/cassdandra/bin/cassandra -f
user=root
directory=/home/qxj/programs/cassandra/
startsecs=15
priority=15
redirect_stderr = true
stdout_logfile = /home/qxj/logs/cassandra.log
stopwaitsecs=10
stopasgroup=True
killasgroup=True
logfile_backups=1
[program:elastic]
autorestart=True
autostart=True
command=/home/qxj/programs/elasticsearch/bin/elasticsearch
user=root
directory=/home/qxj/programs/elasticsearch/
startsecs=20
priority=20
redirect_stderr = true
stdout_logfile = /home/qxj/logs/elastic.log
stopwaitsecs=10
stopasgroup=True
killasgroup=True
logfile_backups=1
启动
supervisord -c /etc/supervisord.conf
supervisorctl reload
supervisorctl restart all
命令 说明
supervisorctl 是 supervisord 的命令行客户端工具
supervisorctl stop program_name 停止某个进程
supervisorctl start program_name 启动某个进程
supervisorctl restart program_name 重启某个进程
supervisorctl stop all 停止全部进程
supervisorctl reload 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程
supervisorctl update 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启
输入命令 supervisorctl 进入 supervisorctl 的 shell 交互界面(还是纯命令行?),就可以在下面输入命令了。:
help # 查看帮助
status # 查看程序状态
stop program_name # 关闭 指定的程序
start program_name # 启动 指定的程序
restart program_name # 重启 指定的程序
tail -f program_name # 查看 该程序的日志
update # 重启配置文件修改过的程序(修改了配置,通过这个命令加载新的配置)
也可以直接通过 shell 命令操作:
supervisorctl status
supervisorctl update
…
不能开启dameon模式 必须要前台模式,增加 -f
[program:elassandra]
autorestart=True
autostart=True
command=/home/elassandra/bin/cassandra -e -f
user=t1
directory=/home/elassandra/
startsecs=15
priority=15
redirect_stderr = true
stdout_logfile = /home/t1/logs/elassandra.log
stopwaitsecs=10
stopasgroup=True
killasgroup=True
logfile_backups=1
查看日志supervisorctl tail elassandra
步骤:
1、停止supervisorctl stop all
,没有停止的kill
2、修改配置文件/etc/supervisor/service.ini
3、重新加载supervisorctl reload
4、启动supervisorctl start all
0 2 * * * root supervisorctl restart all
配置Supervisor开机启动
vim /usr/lib/systemd/system/supervisord.service
[Unit]
Description=Supervisor daemon
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
重新加载Systemd配置,使得Supervisord配置生效:
systemctl daemon-reload
执行命令:systemctl enable supervisord
‘
执行命令测试是否为开机启动systemctl is-enabled supervisord
执行systemctl start supervisord
失败
查看
[root@xx]# whereis supervisord
supervisord: /etc/supervisord.conf /root/anaconda2/bin/supervisord
[root@xx]# whereis supervisorctl
supervisorctl: /root/anaconda2/bin/supervisorctl
查看supervisor日志
tail -f /var/log/supervisord.log
参考:https://www.cnblogs.com/52fhy/p/10161253.html