Supervisor
http://www.jianshu.com/p/bf2b3f4dec73
http://www.jianshu.com/p/9abffc905645
http://blog.csdn.net/xyang81/article/details/51555473
http://www.restran.net/2015/10/04/supervisord-tutorial/
https://www.rddoc.com/doc/Supervisor/3.3.1/zh/running/
http://www.jianshu.com/p/2f032b52c84a
(1)
wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py
sudo python ez_setup.py --insecure
wget https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9
tar -xf pip-9.0.1.tar.gz
cd pip-9.0.1
sudo python setup.py install
# ln -s /usr/local/python27/bin/pip /usr/bin/pip 这一步根据你的python版本号作调整,2.6不要调整
# ln -s /usr/local/bin/easy_install-2.7 /usr/bin/easy_install #这个是因为我升级了python的版本。要是不做这一步的话,这里会报错提示easy_install command not found
sudo easy_install supervisor
su - root
可以通过运行echo_supervisord_conf程序生成supervisor的初始化配置文件,如下所示:
sudo mkdir /etc/supervisor
sudo mkdir /etc/supervisor/conf
sudo chown wwwad.wwwad /etc/supervisor/ -R
echo_supervisord_conf > /etc/supervisor/supervisord.conf
mkdir /data/logs/supervisor/
supervisor 启动java进程报错。因为我这里没有标注java的环境变量(他不到/etc/profile下面去找)
http://blog.csdn.net/sinat_21302587/article/details/76836283
在启动的时候会报各种各样的错误
1、这里我们一定要主要环境变量 environment=A="1", B="2" ;设置环境变量,这里可以保存运行程序需要的参数
2、是否需要切换到指定路径下执行
3、设置启动用户。test1上的console成功了
4、Supervisor只能管理非daemon的进程,也就是说Supervisor不能管理守护进程。否则提示Exited too quickly (process log may have details)异常。例子中的Tomcat默认是以守护进程启动的,所以我们改成了catalina.sh run,以前台进程的方式运行
supervisor-monitor
https://github.com/mlazarov/supervisord-monitor
http://www.mamicode.com/info-detail-1707312.html
[program:console]
environment=JAVA_HOME="/usr/java/latest"
directory=/data/java_web_app/console
user=wwwad
command=java -Xms512m -Xmx512m -Xmn188m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:CMSInitiatingOccupancyFraction=60 -XX:CMSTriggerRatio=70 -Xloggc:/data/java_web_app/newsinfo/logs/gc_20171207_140935.log -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/java_web_app/newsinfo/tmp/heapdump_20171207_140935.hprof -XX:+PrintHeapAtGC -XX:+ParallelRefProcEnabled -XX:MaxTenuringThreshold=7 -XX:SurvivorRatio=4 -Djava.io.tmpdir=/data/java_web_app/newsinfo/tmp/ -Duser.dir=/data/java_web_app/newsinfo -DAPPID=test-console -Dfile.encoding=UTF-8 -jar start.jar jetty.port=23456 -DSTOP.PORT=23457 -DSTOP.KEY=news23456
supervisord -c /etc/supervisor/supervisord.conf
[program: test]
command=xxxxxxxx ;如果有多条命令,可以写入shell脚本再在这里调用
directory=xxxxx ;执行命令时切换到的目录
user=xxxx ;执行命令所用的linux用户身份
autorestart=true ;是否自动重启
autostart=true ;启动supervisor时是否自行启动该程序
redirect_stderr=true ;如果为true则将stderr发送到stdout相应的log文件中去
stdout_logfile=/path/to/logfile ;制定stdout的输出文件
stdout_logfile_maxbytes=10MB ;限定logfile的大小, 默认为50M
stdout_logfile_backups=10 ;保存logfile的最大数目,如果操作这个数目则对最早的logfile进行覆盖,默认为10
environment=A="1", B="2" ;设置环境变量,这里可以保存运行程序需要的参数
这里记住,我们每添加一次program的时候,我们需要更新新的配置到supervisord
supervisorctl update
这里的supervisorctl reload的功能是重启所有的程序
启动某一个程序
supervisorctl start programe_name
一、添加好配置文件后
二、更新新的配置到supervisord
[vb] view plain copy
supervisorctl update
三、重新启动配置中的所有程序
[vb] view plain copy
supervisorctl reload
四、启动某个进程(program_name=你配置中写的程序名称)
[vb] view plain copy
supervisorctl start program_name
五、查看正在守候的进程
[vb] view plain copy
supervisorctl
六、停止某一进程 (program_name=你配置中写的程序名称)
[vb] view plain copy
pervisorctl stop program_name
七、重启某一进程 (program_name=你配置中写的程序名称)
[vb] view plain copy
supervisorctl restart program_name
八、停止全部进程
[vb] view plain copy
supervisorctl stop all
注意:显示用stop停止掉的进程,用reload或者update都不会自动重启。