linux 使用进程管理工具 supervisor
1.supervisor是使用python进行开发的运行在linux服务器上的进程管理工具 老版本的supervisor需要运行在python2环境,如果需要使用supervisor管理python3的项目,需要借助于虚拟环境
事实上现在已经支持Python3了 https://github.com/Supervisor/supervisor 2.安装supervisor: pip install supervisor
python3环境安装:
pip3 install git+https://github.com/Supervisor/supervisor
3.生成配置文件:echo_supervisord_conf > /etc/supervisord.conf, 当进行到这一步时,终端提示需要 apt install supervisor,如果有该提示,执行命令进行安装即可,如果没有提示则忽略 4.编辑配置文件:vim /etc/supervisord.conf 1)修改最后两行,去掉前面的分号。 [include] files = /etc/supervisord/*.conf files:管理进程的配置文件的路径,每一个进程都需要单独配置一个配置文件,这里需要根据实际情况配置 2)开启web控制台:找到如下几行,去掉注释 [inet_http_server] ; inet (TCP) server disabled by default port=0.0.0.0:9001 ; ip_address:port specifier, *:port for all iface username=admin ; default is no username (open server) password=123456 ; default is no password (open server) 配置了这些参数以后就可以使用相应的用户名称和密码通过访问指定的ip和端口,从而通过web界面,管理进程,查看日志等 5.添加管理进程的目录 mkdir -p /etc/supervisord/ 这里的目录需要和配置文件 supervisord.conf 里的 files 参数保持一致 6.新添加一个test1进程,进行管理 vim /etc/supervisord/test1.conf 路径需要和配置文件 supervisord.conf 里的 files 参数保持一致 [program:test1] user=root directory=/usr/local/test/ command=/usr/bin/python /usr/local/test/test.py autostart=true autorestart=true loglevel=debug log_stderr=true stdout_logfile=/var/log/test1.log redirect_stderr=true 说明: 1)每个进程的配置文件都必须拥有一个唯一的program名称 2)command 就是需要在终端进行输出的命令,通过命令启动进程 3)当有多个进程时,就需要定义多个进程管理配置文件 6.启动supervisor supervisord -c /etc/supervisord.conf 当启动supervisor管理工具时,也会同时启动所有添加到了管理中进程 7.查看添加到管理中的进程的状态 supervisorctl status 可以查看到每一个进程名称(program名称)所对应的状态 8.根据进程名称关闭,启动,重启进程 supervisorctl stop test1 supervisorctl start test1 supervisorctl restart test1 9.关闭supervisor ps -ef | grep super 然后 kill -9 进程号 杀死进程 注意: 直接杀掉supervisor的主进程,被管理的进程仍然运行状态,所以记得先stop被管理的进程。 如果修改了任意一个配置文件,都需要重启supervisor。
当我仰望星空, 看见了涛涛江水, 闻到了人声鼎沸;可当我蓦然回望,再也触摸不到那逝去的时光,再也看不到那夕阳下的少年!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗