【supervisor】安装和使用,超级详细,开机自启动,以及其它的注意细节

这篇具有很好参考价值的文章主要介绍了【supervisor】安装和使用,超级详细,开机自启动,以及其它的注意细节。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 安装supervisor yum pip的方式都可以

 yum -y install supervisor
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * centos-sclo-rh: mirrors.bfsu.edu.cn
 * centos-sclo-sclo: mirrors.huaweicloud.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
没有可用软件包 supervisor。
错误:无须任何处理

yum install -y epel-release
yum install -y supervisor

2. 卸载(若需要)

yum -y remove supervisor
pip uninstall supervisor
ref:https://blog.csdn.net/weixin_42260789/article/details/89207072

3. 启动supervisord

第一次重启

(base) [root@localhost ~]# supervisord -c /etc/supervisord.conf
Unlinking stale socket /var/run/supervisor/supervisor.sock
(base) [root@localhost ~]# ps -ef | grep supervisord
root      5405     1  0 00:44 ?        00:00:00 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf
root      5431  1975  0 00:45 pts/12   00:00:00 grep --color=auto supervisord

修改配置文件后重启

(base) [root@localhost ~]# supervisorctl reload
Restarted supervisord

cat /etc/supervisord.conf
【supervisor】安装和使用,超级详细,开机自启动,以及其它的注意细节

这里很重要,php管理拓展, nginx 管理web站点,都是这种分离的文件方式,各走各的,不一坨在一起,挺好的。

3.配置进程

(base) [root@localhost supervisord.d]# cat mytest1.ini
;supervisorctl status 显示的进程的名字,
[program:mytest1]
;开启多个进程是的显示方式
process_name=%(program_name)s_%(process_num)02d
;命令脚本 
command=/home/miniconda_root/bin/python /root/test/test.py
;在supervisord启动的时候也自动启动
autostart=true
;程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
autorestart=true 
;用哪个用户启动进程,默认是root
user=root
;监控进程数
numprocs=1
;把stderr重定向到stdout,默认false
redirect_stderr=true
;日志文件,需要注意当指定目录不存在时无法正常启动
stdout_logfile=/tmp/mytest1.log
;HTTP服务器,提供web管理界面
[inet_http_server]
; Web管理后台运行的IP和端口,如果开放到公网,需要注意安全性  
port=0.0.0.0:9001
; 用户名 (default is no username (open server))
username=admin
; 密码 (default is no password (open server))
password=admin

xxx.ini 的语法规则:

  1. 首行必须为[program:mytest1] 服务进程名
  2. 注释要以;开始并且独占一行
  3. 代码行 不能有空格, 比如password=admin, 不能是password=admin空格::

这样以来,它的任何输出和错误都会进入 /tmp/mytest1.log 日志。
但是,这里我其实犯了一个错误,是因为 /root/test/test.py print了一句话就退出了。 然后 因为autorestart=true, 所以它会不断重启。然后就报错:too many process 了。

(base) [root@localhost supervisord.d]# supervisorctl status
mytest:mytest_00                 BACKOFF   Exited too quickly (process log may have details)

因为他死了,我又把它拉起来。
【supervisor】安装和使用,超级详细,开机自启动,以及其它的注意细节

后面的web 管理界面, 之前以为这一段是没用的,因为没有服务器会给你权限,让你界面操作,其实也挺好的。
supervisor服务的日志在这里
tail -f /var/log/supervisor/supervisord.log

【supervisor】安装和使用,超级详细,开机自启动,以及其它的注意细节
这些操作都是可以点进去的,比如 tail -f 看日志啥的。真的挺好用的。
【supervisor】安装和使用,超级详细,开机自启动,以及其它的注意细节

4.一点体会

所以 supervisor 是用来管理常驻进程合适,比如 nginx服务, mysql服务,web服务等等。还有消息中间件的服务,死了马上能把它拉起来。 不至于损失验证。 一次性的跑的脚本 其实比较适合定时任务, 当然不是不可以用supervisor 比如1小时执行一次 你可以

while True:
   # do some thing ...
   time.sleep(3600)

5. 几个常用的命令

supervisorctl status # 查看状态
(base) [root@localhost supervisord.d]# supervisorctl status
mytest:mytest_00                 RUNNING   pid 7280, uptime 0:31:50
mytest1:mytest1_00               RUNNING   pid 7281, uptime 0:31:50

这个时候我们重新生成了一个 mytest2.ini文件,应该怎么办呢, 让supervisor发现它。

6. 暴力重启(柔性重启)

但也没有那么柔性, 我理解是可以吧过程中的任务,执行完在重启
supervisorctl reload
然后 supervisorctl start all
更改了supervisor配置文件,需要重启, 就用supervisorctl reload

7.关闭

先关闭supervisor启动脚本,之后再关闭supervisord服务

$ supervisorctl stop all
$ ps aux | grep supervisord
$ kill pid

9.另外一个很有用的命令

# 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启
supervisorctl update

添加了一个新脚本,update就启动了。多好!

(base) [root@localhost supervisord.d]# cp mytest1.ini  mytest2.ini
(base) [root@localhost supervisord.d]# vim mytest2.ini
(base) [root@localhost supervisord.d]#
(base) [root@localhost supervisord.d]#
(base) [root@localhost supervisord.d]#
(base) [root@localhost supervisord.d]#
(base) [root@localhost supervisord.d]#
(base) [root@localhost supervisord.d]#
(base) [root@localhost supervisord.d]#
(base) [root@localhost supervisord.d]#
(base) [root@localhost supervisord.d]# supervisorctl update
mytest2: added process group
(base) [root@localhost supervisord.d]# supervisorctl status
mytest:mytest_00                 RUNNING   pid 7280, uptime 0:40:19
mytest1:mytest1_00               RUNNING   pid 7281, uptime 0:40:19
mytest2:mytest2_00               RUNNING   pid 9369, uptime 0:00:09

8. supervisor 设置开机自启动

centos
新建文件supervisord.service

#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

将文件拷贝到/usr/lib/systemd/system/

cp supervisord.service /usr/lib/systemd/system/

可以看到本地有一份,但没有执行supervisorctl 客户端,只是开启了supervisord 服务端的程序 上面这个版本更全。
服务端没开启,supervisorctl status, reload 等命令是不能运行的。
【supervisor】安装和使用,超级详细,开机自启动,以及其它的注意细节

启动服务

systemctl enable supervisord

验证一下是否为开机自启动

systemctl is-enabled supervisord

【supervisor】安装和使用,超级详细,开机自启动,以及其它的注意细节

小试牛刀

开启 supervisor的服务端和客户端

 systemctl start supervisord.service

用客户端查看supervisor的各个常驻进程的状态

(base) [root@localhost ~]# supervisorctl status
mytest:mytest_00                 BACKOFF   Exited too quickly (process log may have details)

可以看到报错了,这是对的, 打印个时间就退出了, 再重新拉起来。。。。
【supervisor】安装和使用,超级详细,开机自启动,以及其它的注意细节
看下它的日志记录了啥:
【supervisor】安装和使用,超级详细,开机自启动,以及其它的注意细节
cat cat /var/log/supervisor/supervisord.log

【supervisor】安装和使用,超级详细,开机自启动,以及其它的注意细节
改成常驻的就行了。

(base) [root@localhost test]# python test.py
2023-03-17 10:55:17.729582
2023-03-17 10:55:18.730648
2023-03-17 10:55:19.731728
^Z
[1]+  已停止               python test.py
(base) [root@localhost test]# supervisorctl status
mytest:mytest_00                 FATAL     Exited too quickly (process log may have details)
(base) [root@localhost test]# supervisorctl start mytest
mytest: ERROR (no such process)
(base) [root@localhost test]# supervisorctl start mytest:my*
mytest:my*: ERROR (no such process)
(base) [root@localhost test]# supervisorctl start mytest:mytest_00
mytest:mytest_00: started
(base) [root@localhost test]# supervisorctl status
mytest:mytest_00                 RUNNING   pid 28175, uptime 0:00:06
(base) [root@localhost test]#

总结

到这里,所有的开机自启,常驻进程配置,常驻进程配置的注意点以及说清楚了。用这东西已经超过5年了,第一次好好总结!总以为是运维的活儿,后来发现,运维也靠不住,能多学点多学点吧,大家加油!文章来源地址https://www.toymoban.com/news/detail-486900.html

到了这里,关于【supervisor】安装和使用,超级详细,开机自启动,以及其它的注意细节的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • anaconda 2023.7 安装、配置、开机启动和基本操作 (windows+linux 详细)

    包括notebook的开机启动,启动脚本、配置等,2023年12月4日更新教程 anaconda是conda中的一种,也可以选用其它的conda anaconda会把python、pip等直接安装上,不用额外装配了,省心 conda对于需要多个python环境的开发者非常方便 演示版本2023.09 安装方法对于其它版本基本一致 官网: an

    2024年02月15日
    浏览(70)
  • anaconda 2023.3 安装、配置、开机启动和基本操作 (windows+linux 详细)

    包括notebook的开机启动,启动脚本、配置等,2023年12月4日更新教程 anaconda是conda中的一种,也可以选用其它的conda anaconda会把python、pip等直接安装上,不用额外装配了,省心 conda对于需要多个python环境的开发者非常方便 演示版本2023.09 安装方法对于其它版本基本一致 官网: an

    2024年02月05日
    浏览(66)
  • Redis介绍以及Linux下的Redis安装(超级详细,傻瓜式教程)

    Redis( Remote DicƟ onary Server ), 即远程字典服务。 Redis是用 C 语言编写的完全开源的、遵守 BSD 协议的、高性能的 key-value 数据库   BSD是 ” Berkeley Software Distribution ” 的缩写,意思是“伯克利软件发行版”。 BSD开源协议是一个给予使用者很大自由的协议。可以自由地使用,修

    2024年02月15日
    浏览(39)
  • Linux_CentOS_7.9 VNC安装卸载以及相关配置开机自启动服务简易记录

    2.1 拷贝配置文件,必须有冒号和数字 2.2 修改配置文件中的 参数为具体登录参数(配置文件中需要与操作系统登录用户保持一致,然后用这个操作系统登录linux以后,执行vncpasswd才会生效) 2.3 设置密码(先copy脚本,后设置vnc密码,其中只读用户可选,一般选择N即可) 2.4 配

    2024年01月23日
    浏览(62)
  • DBeaver 超级详细的安装与使用

    DBeaver是一种通用数据库管理工具,适用于需要以专业方式使用数据的每个人;适用于开发人员,数据库管理员,分析师和所有需要使用数据库的人员的免费( DBeaver Community ) 的多平台数据库工具。 DBeaver支持80多个数据库。支持所有流行的数据库,包括: MySQL、PostgreSQL、Maria

    2024年02月10日
    浏览(44)
  • 超级详细的 FinalShell 安装 及使用教程

    FinalShell 是一款免费的国产的集 SSH 工具、服务器管理、远程桌面加速的良心软件,同时支持 Windows,macOS,Linux,它不单单是一个 SSH 工具,完整的说法应该叫一体化的的服务器,网络管理软件,在很大程度上可以免费替代 XShell,是国产中不多见的良心产品,具有免费海外服务器

    2024年02月12日
    浏览(49)
  • 超级完整的 Git的下载、安装、配置与使用 以及命令

    1、访问git官方下载网址,点击这里,然后根据自己的电脑系统,下载对应的安装包: 2、在淘宝镜像网站 下载对应的安装包: 注: 如果由于官网下载速度过于缓慢,而且我还下载报错: 无法下载,需要授权。 可在git下载的淘宝镜像网站 下载 1、双击Git-2.35.1-64-bit.exe, 2、下

    2024年02月03日
    浏览(50)
  • ubuntu安装、使用docker超级详细的入门教程

    查看官网(https://docs.docker.com/get-docker),根据系统版本安装。 删除老版本 设置储存库 添加官方秘钥 授权docker并更新apt 安装最新docker 试运行 卸载应用 删除目录 默认路径 登录阿里云平台(支付宝就能登录) 找到容器镜像服务 控制台-产品与服务-弹性计算-容器镜像服务 找到镜

    2024年02月05日
    浏览(48)
  • Noe4J 超级详细的安装与使用

    由于Neo4j是基于JavaSE JDK 开发的图形数据库,所以本文以JDK11 和 Neo4j 4.x 为例,其他版本的方式步骤一致,需要注意的是JDK 和 Neo4j 的版本对应。 1、 安装JDK Neo4j是基于Java的图形数据库,运行Neo4j需要启动JVM进程,因此必须安装JAVA SE的JDK。 配置 JDK环境,为以后能适应Springboot,

    2024年02月06日
    浏览(32)
  • Linux 之 supervisor安装和使用

    Supervisor 官网 1. supervisord 运行Supervisor的后台服务,它用来启动和管理那些你需要Supervisor管理的子进程,响应客户端发来的请求,重启意外退出的子进程,将子进程的stdout和stderr写入日志,响应事件等。它是Supervisor最核心的部分。 2. supervisorctl 相当于supervisord的客户端,它是

    2024年02月04日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包