Linux守护Pythom脚本运行——Supervisor学习总结

Supervisor能做什么?

在工作中有时会遇到在Linux服务器上编写各种脚本来实现日志的推送、数据的传输、流量的监控等,这些脚本在整个系统运行中也需要和其他服务端应用程序一样持续且稳定运行,为了达到这种目的就需要使用进程守护工具来对正在运行的脚本进行管理。

安装Supervisor

bash 复制代码
yum -y install epel-release
bash 复制代码
yum -y install supervisor

配置开机自启并启动Supervisor

bash 复制代码
systemctl enable --now supervisord
bash 复制代码
systemctl status supervisord

Supervisor默认配置文件位置

总配置文件

bash 复制代码
/etc/supervisord.conf

子配置文件目录,用于存放所有被管理进程的配置文件

bash 复制代码
/etc/supervisord.d

若要修改配置文件位置,删除默认文件后执行以下命令即可

bash 复制代码
echo_supervisord_conf > /(自定义主配置文件目录)/supervisord.conf
bash 复制代码
mkdir /(自定义进程管理配置文件目录位置)/supervisord.d

准备需要守护运行的Python脚本

bash 复制代码
vim /root/test.py
python 复制代码
import time

count = 0
with open('python_logs.txt', 'a+') as file:
    file.write(f'最近一次脚本启动时间:{time.asctime()}\n')

while(True):
    with open('python_logs.txt', 'a+') as file:
        count += 1
        file.write(f'记录时间:{time.asctime()},重启后执行次数:{count}\n')
        time.sleep(6)

Supervisor主配置文件讲解

很多配置文件保持默认即可,而且文档描述很详细,这里强调下两个部分

这部分是web可视化管理页面的配置,想要开启的话移除注释即可

bash 复制代码
[inet_http_server]
port=127.0.0.1:9001; 
username=user;
password=123;

这部分比较重要,是关于在那里寻找子配置文件的配置,一定要在对应的目录中创建并书写ini配置文件才能被Supervisor加载

bash 复制代码
[include]
files = /etc/supervisord.d/*.ini

Supervisor子配置文件讲解

bash 复制代码
#":"后填写用户自定义的进程名
[program:]
#用于启动进程的用户
user=
#脚本文件所在目录
directory=
#用于启动进程的命令
command=
#是否自动启动
autostart=
#是否自动重新启动
autorestart=
#日志文件位置
stdout_logfile=
stderr_logfile=

在子配置文件目录中创建atuotime.ini配置文件,并写入信息

vim /etc/supervisord.d/atuotime.ini

python 复制代码
[program:autotime]
user=root
command=python /root/test.py
directory=/root
autostart=true
autorestart=true
stdout_logfile=/var/log/autotime.log
stderr_logfile=/var/log/autotime_err.log

用Supervisor启动脚本

写好子配置文件后执行以下命令重新加载Supervisor配置并重启所有被管理的进程

bash 复制代码
 supervisorctl reload

现在我们的脚本进程就被Supervisor所守护了

可以执行命令验证脚本运行情况

bash 复制代码
tail -f python_logs.txt
相关推荐
菜板春10 分钟前
jupyter入门-手册-特征探索
python·jupyter
Metaphor69231 分钟前
使用 Python 将 PDF 转换为 HTML
python·pdf·html
零零信安31 分钟前
零零信安荣登数世咨询《新质·数字安全专精百强(2026)》暗网情报领域,彰显专业实力与创新引领
安全·网络安全·数据泄露·暗网·零零信安
施努卡机器视觉34 分钟前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
程序猿阿伟35 分钟前
《Chrome离线扩展安装的底层逻辑与场景落地指南》
服务器·网络·chrome
极光代码工作室35 分钟前
基于数据仓库的电商数据分析平台
大数据·hadoop·python·spark·数据可视化
开发小能手-roy41 分钟前
StringBuilder vs StringBuffer:2024年还需要线程安全字符串吗?
开发语言·python·安全
凡人叶枫1 小时前
Effective C++ 条款42:了解 typename 的双重意义
java·linux·服务器·c++
AC赳赳老秦1 小时前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw
2601_954706491 小时前
云手机技术详解+Python实战调用|2026高稳云手机平台推荐
开发语言·python·智能手机