发布于 2015-12-11 01:58:31 | 532 次阅读 | 评论: 0 | 来源: PHPERZ
Supervisor Python进程管理工具
Supervisor 是一个客户端/服务器系统,允许用户监控和控制类 Unix 操作系统上的进程数。
安装python
brew install python
安装pip
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
安装supervisor
pip install supervisor
生成默认的配置文件
echo_supervisord_conf > /etc/supervisord.conf
编辑配置文件 参考地址
附我的配置文件 在默认的配置文件后面添加
[supervisord]
nodaemon=true
[program:redis]
command=/usr/local/bin/redis-server /usr/local/etc/redis.conf
autostart=true
autorestart=true
startsecs=3
[program:mongod]
command=/usr/local/bin/mongod --dbpath /Users/weixuan/Database/mongodbdata
autostart=true
startsecs=3
autorestart=true
Supervisord
安装完成后有两个可用的命令行supervisor
和supervisorctl
常见的命令如下:
命令 | 说明 |
---|---|
supervisord | 初始启动Supervisord,启动、管理配置中设置的进程 |
supervisorctl stop programxxx | 停止某一个进程(programxxx),programxxx为[program:chatdemon]里配置的值,这个示例就是chatdemon |
supervisorctl start programxxx | 启动某个进程 |
supervisorctl restart programxxx | 重启某个进程 |
supervisorctl stop groupworker | 重启所有属于名为groupworker这个分组的进程(start,restart同理) |
supervisorctl stop all | 停止全部进程,注:start、restart、stop都不会载入最新的配置文件 |
supervisorctl reload | 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程 |
supervisorctl update | 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。注意:显示用stop停止掉的进程,用reload或者update都不会自动重启 |
supervisorctl tail programname
查看programname的日志
supervisorctl tail redis
查看日志
ERROR (abnormal termination)
解决办法:
supervisorctl tail programname
查看programname的具体日志信息
Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.
解决办法:
sudo unlink /tmp/supervisor.sock
or
sudo unlink /var/run/supervisor.sock
gave up: redis entered FATAL state, too many start retries too quickly
解决办法:
修改redis.conf的daemonize为no
brew安装的redis,配置文件在 /usr/local/etc/redis.conf
小技巧:vim查找
# 要自当前光标位置向上搜索
/pattern
#pattern 表示要搜索的特定字符序列
# 要自当前光标位置向下搜索
?pattern
# 精确查找
# 要查找单个的 place,请键入该单词,并在其前后各加一个空格
/ place
终止mongodb
正常:
use admin
db.shutdownServer()
强制:
kill -9 pid