进程管理工具supervisor的使用、常见报错问题处理
进程管理工具supervisor的使用、常见报错问题处理
- 1 安装
- 2 简介
- 2.1 supservisor自身提供三个命令:
- 2.1.1 supervisorctl
- 2.1.2 supervisord
- 2.1.3 echo_supervisord_conf
- 2.2 配置文件
- 2.3 重要事项
- 2.4 查看supervisor的log日志
- 3 配置
- 3.1 修改配置文件
- 3.2 加载配置文件
- 3.3 访问网页版管理页面
- 4 常见报错问题
- 4.1 报错 unix:///var/run/supervisor.sock no such file
- 4.2 报错 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
- 4.3 cpu占用率过高的问题
- 4.4 报错 [line 57]: 'json module not found, using jsonujson module not found, using jsonujson module not found, using json\n'
1 安装
apt-get install supervisor
2 简介
2.1 supservisor自身提供三个命令:
2.1.1 supervisorctl
supervisorctl
:类似systemctl,用于管理进程,如启动、停止、重启
supervisorctl status | 查看应用名称【programeName 】及其运行状态 |
/etc/init.d/supervisor restart | 重启supervisor ,网上说可以重新加载配置问文件,亲测无效 |
systemctl stop supervisor | 停止supervisor |
supervisorctl stop [programName] | 停止指定应用 |
supervisorctl start [programName] | 启动指定应用 |
supervisorctl restart [programName] | 重启指定应用 |
supervisorctl stop all | 停止所有应用 |
supervisorctl reload | 载入最新的配置文件,重启所有进程 |
supervisorctl update | 根据最新的配置,重启配置更改过的进程,未更新的进程不受影响 |
2.1.2 supervisord
supervisord
:加载配置文件,一个配置文件一个子进程。当挂载的子进程出现奔溃时会自动重启
下面这条命令会加载supervisord.conf文件(主配置文件),此时supervisor如果是停止状态,会自动启动
supervisord -c /etc/supervisor/supervisord.conf
增加-n参数,可以实时查看启动时的日志输出,使用ctrl+c退出(退出不影响进程)
supervisord -n -c /etc/supervisor/supervisord.conf
2.1.3 echo_supervisord_conf
echo_supervisord_conf
: 输出自带的配置文件内容。一般用于配合以下命令生成配置文件。
echo_supervisord_conf > xxx.conf
2.2 配置文件
● /etc/supervisor/supervisor.conf
主配置文件。
一般用于配置supservisor的通用参数,如指定自动加载的目录,设置http服务地址等。
● /etc/supervisor/conf.d
自定义的进程管理文件存放目录。
主要添加进程名、进程组、进程的启动命令、进程的log日志路径等参数。
2.3 重要事项
● supervisor 不支持监听后台启动的进程。所有在配置文件中添加启动命令的时候,不要添加后台启动部分的命令。
● 修改完配置文件,需要手动重启supervisor才能生效(或者重新加载、更新都行)
2.4 查看supervisor的log日志
这个日志文件是查看supservisor自身的日志,其管理的进程输出的日志在配置文件中声明。
sudo cat /var/log/supervisor/supervisord.log
3 配置
3.1 修改配置文件
- 备份默认的配置文件
cp /etc/supervisor/supervisord.conf /etc/supervisor/supervisord.conf_bak
- 重新生成配置文件
echo_supervisord_conf > supervisord.conf
- vim编辑器打开配置文件
vim /etc/supervisor/supervisord.conf
- 修改参数,主要内容如下。
修改时一定要注意路径,默认的是/temp,需要改成/var/run/[unix_http_server] file=/var/run/supervisor.sock ; (the path to the socket file)[inet_http_server] ; inet (TCP) server disabled by default port=*:9001 ; (ip_address:port specifier, *:port for all iface)[supervisord] logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.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=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid) nodaemon=false ; (start in foreground if true;default false) minfds=1024 ; (min. avail startup file descriptors;default 1024) minprocs=200 ; (min. avail process descriptors;default 200) childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEMP)[rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface[supervisorctl] serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL for a unix socket[include] files = /etc/supervisor/conf.d/*.conf
- 创建一个应用配置文件
a.conf
,然后进行编辑vim /etc/supervisor/conf.d/a.conf
参考内容如下,移动要注意command参数不能使用后台启动命令,不然supervisor监听不了
[group:tornados]#创建一个应用组 programs=dtaa,iothttp_zhonghe#应用组中的程序名 stopasgroup=true[program:dtaa]#dtaa应用程序启动参数 command=/opt/dtaa/venv/bin/python /opt/dtaa/app.py#解释器要用绝对路径,后进默认在directory变量指定的目录中 directory=/opt/dtaa#应用路径 user=root autostart=true autorestart=true redirect_stderr=true stdout_logfile=/opt/dtaa/log.out loglvel=info[program:iothttp_zhonghe]#第二个应用程序的启动参数 command=/opt/iothttp/venv/bin/python app.py --c=config_zhonghe --s=main_zhonghe#解释器要用绝对路径,后进默认在directory变量指定的目录中 directory=/opt/iothttp user=root autostart=true autorestart=true redirect_stderr=true stdout_logfile=/opt/iothttp/log_zhonghe.out loglvel=info
3.2 加载配置文件
- 加载主配置文件,应用配置文件会跟随启动
supervisord -c /etc/supervisor/supervisord.conf
如果已经加载过,只要使用update或reload方法
supervisorctl update
- 查看启动状态
supervisorctl status
结果如下,第一列就是应用名称拉
tornados:dtaa RUNNING pid 21580, uptime 1:17:37 tornados:iothttp_zhonghe RUNNING pid 18731, uptime 1:19:42
3.3 访问网页版管理页面
尝试访问配置文件中的9001端口,这样管理起来就很方便了。
4 常见报错问题
4.1 报错 unix:///var/run/supervisor.sock no such file
- 方案1:
(1)先停止supervisorsystemctl sotp supervisor.service
(2)然后查看是否有supervisord进程没有结束
ps ax |grep supervisor
如果有进程没结束就手动杀死
kill -9 [pid]
(3)使用以下命令,重新加载配置文件。整个服务会自动启动
supervisord -c /etc/supervisor/supervisord.conf #或 /usr/bin/python2 /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
- 方案2:
(1)问题原因是文件被系统删除,可以手动创建sock文件。然后重新加载配置sudo touch /var/run/supervisor.sock sudo chmod 777 /var/run/supervisor.sock supervisord -c /etc/supervisor/supervisord.conf
(2)然后查看supervisord的进程,如果有重复进程需要进行查杀,否则cpu占用率可能会比较高。
ps ax |grep supervisor #如果有多余进程没结束就手动杀死 kill -9 [pid]
4.2 报错 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
(1)尝试关闭配置文件中包含的所有服务
supervisorctl status
supervisorctl stop [programName]
(2)如果关闭不掉,试用命令ps ax |grep supervisor 查看pid,杀掉所有查看到的进程。
ps ax |grep supervisor
kill -9 [pid]
(3)如果还是报错,取消socket的软连接。注意,下方的路径是在supervisord.conf中声明的。
unlink /var/run/supervisor.sock
unlink /tmp/supervisor.sock
supervisord -c /etc/supervisor/supervisord.conf
4.3 cpu占用率过高的问题
(1) 使用以下命令查看是否有重复启动的配置文件
ps -ax |grep supervisor
(2) 使用kill命令杀掉多余的进程,只保留以一个
ps ax |grep supervisor
#如果有多余进程没结束就手动杀死
kill -9 [pid]
(3) 如果还是占用率过高,使用以下命令编辑配置文件,把http服务注释掉
vim /etc/supervisor/supervisor.conf
4.4 报错 [line 57]: ‘json module not found, using jsonujson module not found, using jsonujson module not found, using json\n’
此问题不是json模块找不到,是配置文件格式不对,仔细检查或重写配置文件就能搞定。
end~! 欢迎点赞、收藏、转发和评论
进程管理工具supervisor的使用、常见报错问题处理相关推荐
- python怎么打开程序管理器_Python 进程管理工具 Supervisor 使用教程
因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,Python 进程管理工具 Supervisor 使用教程 Supervisor ...
- 进程管理工具(Supervisor)笔记
感谢GoFrame框架实战2群的 朽木自雕 大佬提供的Supervisor笔记 # 开发笔记## [进程管理工具(Supervisor)](http://supervisord.org/introdu ...
- Linux进程管理工具 Supervisor详解
介绍 Supervisor安装与配置(linux/unix进程管理工具) Supervisor(http://supervisord.org)是用Python开发的一个client/server服务, ...
- 进程管理工具Supervisor
简介 Supervisor是一个客户端/服务器系统,允许用户在类UNIX操作系统上控制许多进程.它是基于python语言开发一个进程管理工具. Supervisor的服务器端称为supervisord ...
- python怎么打开程序管理器_python进程管理工具supervisor的安装与使用教程
前言 在一个分布式环境中,每台机器上可能需要启动和停止多个进程,使用命令行方式一个一个手动启动和停止非常麻烦,而且查看每个进程的状态也很不方便.如果有一个工具能够实现每台机器上多个进程的简单高效中心化 ...
- linux进程管理工具supervisor
英文比较好的朋友,可以查看这篇文章 https://www.digitalocean.com/community/tutorials/how-to-install-and-manage-supervi ...
- linux进程管理工具supervisor安装卸载、子配置文件详解、遇到的问题、supervisor group群组管理、启动一个springboot项目示例、update命令注意点
简介 Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启. 它是通过fork/exec的方式把这些被管 ...
- Linux自启进程管理工具,进程管理工具Supervisor的安装及使用
需求:有一个进程需要每时每刻不断的跑,但是这个进程又有可能由于各种原因有可能中断.当进程中断的时候我需要他能自动重启,保证服务一直在跑着.基于整个需求,一开始想的是起一个脚本,监听该服务的端口,一旦发 ...
- Python实现的进程管理神器——Supervisor
文章目录 常用命令 简介 安装 创建配置文件 开机自启 初试 Web 界面 配置文件 子进程配置模板 可用变量 supervisorctl 命令 Supervisor 组件 卸载 遇到的坑 参考文献 ...
最新文章
- Android中有关Handler的总结
- python selenium 处理弹窗_python selenium 弹出框处理的实现
- java反射po转vo_三步走使用Dozer (Do,Po,Vo转换工具)
- 单例模式存在的问题——破坏单例模式,序列化和反射
- CSS滤镜实现火狐、IE兼容
- 恒压板框过滤实验数据处理_高考化学实验中:那些不常见的【特殊仪器】与装置,难得的资料...
- springboot 排除 默认的loggback 和slf4j的依赖
- python多分类画roc曲线_利用python制作ROC曲线进行多分类
- 基于lis3dh的简易倾角仪c源码_开源网关apisix源码阅读和最佳实践
- Robot Framework安装过程
- php更改二维数组的键,学习猿地-php如何修改二维数组的键名
- java对音频文件的频谱分析
- mysql忘记密码如何重置密码
- GoF 23种设计模式
- 计算机网络中常见英文缩写所对应的名词整理
- html网页设计的难点,在做设计与制作网页中主要难点是什么?
- 【0709作业】简易的购房商贷月供计算器
- 论文翻译:2021_TSCN:Decoupling magnitude and phase optimization with a two-stage deep network
- python中ix用法_Python Pandas DataFrame.ix[ ]用法及代码示例
- ECCV 2020 五项大奖出炉!普林斯顿邓嘉获最佳论文奖