我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Linux下如何安装并使用Supervisor

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Linux下如何安装并使用Supervisor

这篇文章主要为大家展示了“Linux下如何安装并使用Supervisor”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux下如何安装并使用Supervisor”这篇文章吧。

Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。

Linux下如何安装并使用Supervisor

安装

Supervisor是基于python开发的,安装Supervisor前,需要先安装python,Supervisor可以通过pip或者easy_install安装。

通过easy_install安装
$ yum install python-setuptools$ easy_install supervisor

或者,通过pip安装

$ pip install supervisor

结构

Supervisord

主进程,负责管理进程的server,它会根据配置文件创建指定数量的应用程序的子进程,管理子进程的整个生命周期,对crash的进程重启,对进程变化发送事件通知等。同时内置web server和XML-RPC Interface,轻松实现进程管理。

Supervisorctl

管理client,用户通过命令行发送消息给supervisord,可以查看进程状态,加载配置文件,启停进程,查看进程标准输出和错误输出,远程操作等。

Web server

Superviosr提供了web server功能,可通过web控制进程。

XML-RPC interface

XML-RPC接口,提供XML-RPC服务来对子进程进行管理,监控。

基本使用

Supervisor的配置文件命名为supervisord.conf,它为supervisord(Supervisor 的主服务命令) 和 supervisorctl(Supervisor 的监控管理命令) 提供配置选项设置。 Supervisor并不规定配置文件supervisord.conf的存放位置。Supervisor服务启动的时候默认会在:

$CWD/supervisord.conf$CWD/etc/supervisord.conf/etc/supervisord.conf

这几个目录位置查找配置文件supervisord.conf,用yum安装的supervisor默认会生成/etc/supervisord.conf配置文件。Supervisor也提供参数 “-c” 来指定配置文件的目录路径。

如果你是编译安装,或其他系统,可以在终端输入”echo_supervisord_conf”命令查看Supervisor的默认配置的内容。其可以用来生成一份默认的配置文件:

$ echo_supervisord_conf > /etc/supervisord.conf

Supervisor的配置文件生成之后,现在可以添加我们要管理的进程的配置文件。可以把所有配置项都写到supervisord.conf文件里,但并不推荐这样做,而是通过include的方式把不同的程序(组)写到不同的配置文件里。要确保你的supervisord.conf配置文件中include包含了你自定义的配置文件包含进来,如下:

[include]files = /etc/supervisord.d/*.conf

下面我们修改配置文件将memcached进程以deamon方式拉起(memcached进程也可以是一个shell或python脚本),并对此进行监控。

先在supervisor目录下创建一个配置文件,如下

$ cat /etc/supervisord.d/memcached.conf[program:memcached]# 启动程序的命令;command = /usr/bin/memcached -m 5120 -p 11211 -u nobody -l 0.0.0.0 -b 65535# 在supervisord启动的时候也自动启动;autostart = true# 程序异常退出后自动重启;autorestart = true# 启动5秒后没有异常退出,就当作已经正常启动了;startsecs = 5# 启动失败自动重试次数,默认是3;startretries = 3# 启动程序的用户;user = nobody# 把stderr重定向到stdout,默认false;redirect_stderr = true# 标准日志输出;stdout_logfile=/data/log/memcached/out-memcache.log# 错误日志输出;stderr_logfile=/data/log/memcached/err-memcache.log# 标准日志文件大小,默认50MB;stdout_logfile_maxbytes = 20MB# 标准日志文件备份数;stdout_logfile_backups = 20

一份配置文件至少需要一个 [program:x] 部分的配置,来告诉supervisord 需要管理那个进程。[program:x]语法中的x表示program name,会在客户端(supervisorctl 或 web 界面)显示,在 supervisorctl 中通过这个值来对程序进行start、restart、stop等操作。日志文件要存放的文件夹要创建好。

使用supervisor还有一个更大的好处就是,可以快速开启多个进程,配置参数如下:

process_name=%(process_num)snumprocs=3

表示对同一个配置开启3个线程。

启动supervisor,就会拉起memcached进程。

$ supervisord -c /etc/supervisor/supervisord.conf

ps:Supervisor启动后在/tmp目录会产生supervisord.log 、supervisord.pid 、supervisor.sock这三个文件,如果有问题可以查看日志。

查看Supervisor是否已经启动

$ ps -ef | grep supervisor | grep -v greproot      1170     1  0 18:57 ?        00:00:00 /usr/bin/python /usr/bin/supervisord

查看业务进程是否已经被拉起

$ supervisorctl statusmemcached                  RUNNING   pid 1230, uptime 0:04:39

停止Supervisor(子进程也会被停止,也可以针对单个程序进行start、update、restart、stop操作)

$ supervisorctl shutdown

使用supervisorctl命令

Supervisor可通过维护命令supervisorctl管理或通过web管理界面管理。维护命令supervisorctl有两种用法。一种是命令式,一种是交互式。

命令式

\1. 查询各进程运行状态

supervisorctl status

\2. 启、停、重启业务进程,memcached为进程名,即[program:memcached]里配置的值

supervisorctl start memcachedsupervisorctl stop memcachedsupervisorctl restart memcached

\3. 重启所有属于名为groupworker这个分组的进程

supervisorctl start groupworkersupervisorctl stop groupworkersupervisorctl restart groupworker

\4. 启、停、重启全部进程(不会载入最新的配置文件)

supervisorctl start allsupervisorctl stop allsupervisorctl restart all

\5. 重新加载配置文件,停止原有进程并按新的配置启动所有进程(注意:所有进程会停止并重启,线上操作慎重)

supervisorctl reload

\6. 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而被重启(注意:这才是线上可以操作的命令,不会重启原有进程)

supervisorctl update

注意:显示状态为stop停止掉的进程,用reload或者update都不会自动重启。

交互式

$ supervisorctlmemcached                       RUNNING   pid 1256, uptime 0:01:47supervisor> stop memcachedmemcached: stoppedsupervisor> start memcachedmemcached: startedsupervisor> statusmemcached                       RUNNING   pid 1258, uptime 0:00:04supervisor> restart memcachedmemcached: stoppedmemcached: startedsupervisor> statusmemcached                       RUNNING   pid 1259, uptime 0:00:02supervisor>

故障处理

这几个故障都是我使用supervisor时遇到的坑,帮你们填上。

supervisor 比较适合监控业务应用,且只能监控前台程序,如果你的程序是以daemon的方式启动,那么执行:supervisor status 会提示:BACKOFF Exited too quickly (process log may have details)。比如:memcached启动时加上-d选项就是以后台daemon启动,就不能使用supervisor监控了。

/usr/bin/memcached -d -m 5120 -p 11211 -u nobody -l 0.0.0.0 -b 65535

还有一个需要注意的,如果执行supervisor status时报错是:FATAL Exited too quickly (process log may have details),要检查一下是不是因为添加了user = nobody导致执行权限的问题。

如果出现这个错误:

Error: .ini file does not include supervisord section

For help, use /usr/bin/supervisord -h

就是你的自定义的程序配置文件格式有问题(/etc/supervisor/conf.d/*.conf),好好检查了。

其他

1)可以自己编写脚本将Supervisor加入chkconfig中,随系统自动启动。 或者可以使用现成的脚本: Supervisor initscripts。

2)除了supervisorctl 之外,还可以配置supervisrod启动web管理界面,这个web后台使用Basic Auth的方式进行身份认证。

3)除了单个进程的控制,还可以配置group,进行分组管理。经常查看日志文件,包括 supervisord的日志和各个 pragram 的日志文件,程序crash 或抛出异常的信息一半会输出到stderr,可以查看相应的日志文件来查找问题。

4)Supervisor有很丰富的功能,还有其他很多项配置,可以在官方文档获取更多信息:http://supervisord.org/index.html

以上是“Linux下如何安装并使用Supervisor”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Linux下如何安装并使用Supervisor

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Linux下如何安装并使用Supervisor

这篇文章主要为大家展示了“Linux下如何安装并使用Supervisor”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux下如何安装并使用Supervisor”这篇文章吧。Supervis
2023-06-27

Linux中如何安装supervisor

这篇文章给大家分享的是有关Linux中如何安装supervisor的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台d
2023-06-28

Linux下如何安装并使用ClusterShell

这篇文章主要为大家展示了“Linux下如何安装并使用ClusterShell”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux下如何安装并使用ClusterShell”这篇文章吧。Clus
2023-06-27

Linux下如何安装并使用Iperf

这篇文章将为大家详细讲解有关Linux下如何安装并使用Iperf,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Iperf 是一个网络性能测试工具。Iperf可以测试最大TCP和UDP带宽性能,具有多种参数
2023-06-27

Linux下如何安装并使用Fcitx

小编给大家分享一下Linux下如何安装并使用Fcitx,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Fcitx 是一个支持扩展的输入法框架。目前,它支持Linux
2023-06-27

Linux下如何安装并使用jod

小编给大家分享一下Linux下如何安装并使用jod,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Jed是一个基于终端的编辑器,它的特点是有一个方便的下拉菜单,这让
2023-06-27

Linux下如何安装并使用tmux

小编给大家分享一下Linux下如何安装并使用tmux,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!tmux是Linux上的终端复用神器,可从一个屏幕上管理多个终端
2023-06-27

Linux下如何安装并使用Terminalizer

小编给大家分享一下Linux下如何安装并使用Terminalizer,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Terminalizer 是一个非常酷炫的命令行
2023-06-27

Linux下如何安装并使用Speedtest

这篇文章主要介绍了Linux下如何安装并使用Speedtest的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linux下如何安装并使用Speedtest文章都会有所收获,下面我们一起来看看吧。安装speedte
2023-06-27

Linux下如何安装并且使用bmon

这篇文章将为大家详细讲解有关Linux下如何安装并且使用bmon,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。bmon是一个简单但功能强大的基于文本的网络监视和调试工具 ,用于类Unix系统,捕获网络相关
2023-06-27

Linux下如何安装并使用apt-clone

这篇文章将为大家详细讲解有关Linux下如何安装并使用apt-clone,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。当我们在基于 Ubuntu/Debian 的系统上使用apt-clone ,包安装会变
2023-06-27

Linux下如何安装并使用迅雷

这篇文章将为大家详细讲解有关Linux下如何安装并使用迅雷,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。编译环境安装必备的软件。sudo apt-get install git build-essenti
2023-06-27

Linux下如何安装并使用fish shell

这篇文章将为大家详细讲解有关Linux下如何安装并使用fish shell,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。fish 是一个非常用户友好的并且功能丰富的 shell,但没有包括在大多数 Lin
2023-06-27

Linux下如何安装并使用netstat命令

这篇文章主要介绍了Linux下如何安装并使用netstat命令,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Netstat命令用于显示协议统计数据和当前TCP/IP网络的连接
2023-06-27

Linux系统下如何安装并使用Gmail

这篇“Linux系统下如何安装并使用Gmail”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“Linux系统下如何安装并使用Gmail”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢
2023-06-27

Linux下如何安装并使用iostat工具

小编给大家分享一下Linux下如何安装并使用iostat工具,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Linux系统中的 iostat是I/O statist
2023-06-27

Linux下Supervisor的安装配置和基本使用方法

本篇内容主要讲解“Linux下Supervisor的安装配置和基本使用方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux下Supervisor的安装配置和基本使用方法”吧!Superv
2023-06-12

Linux下如何安装并使用Lighttpd Web服务器

今天小编给大家分享一下Linux下如何安装并使用Lighttpd Web服务器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
2023-06-27

Linux中如何安装并使用Sysdig

这篇文章主要为大家展示了“Linux中如何安装并使用Sysdig”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中如何安装并使用Sysdig”这篇文章吧。Sysdig 是一个超级系统工具
2023-06-27

Linux中如何安装并使用JMeter

这篇文章主要介绍了Linux中如何安装并使用JMeter的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linux中如何安装并使用JMeter文章都会有所收获,下面我们一起来看看吧。JMeter是100%纯JAV
2023-06-27

编程热搜

目录