【守护进程】使用Supervisor或宝塔进程守护实现开机自启

【落幕笔记】已经暂停更新,新文章内容已经迁移至【落幕屋】请搜索引擎搜索,温馨提醒:您当前浏览的文章已经超过217天了,可能与实际有所不符,酌情参考!

前言

很多朋友现在都是软路由,所以难免会遇到停电,断网等问题,导致服务器或者软路由重启,但是自己需要的程序却没有启动,这里推荐Supervisor来实现开机即自启,目前有宝塔应用和命令安装Supervisor配置文件来实现。

推荐还是宝塔的可视化更方便,因人而异

宝塔

  1. 前提你有宝塔,然后咋们进入宝塔,找到软件商店,搜索进程守护管理器。

  2. 进入后找到添加进程守护

  3. 我们按照go-cqhttp程序为例子:

  4. 补充一些说明,日志是可以看到运行状况的,可以看看是否如你所愿,如果运行一些js项目,比如app.js,那就在启动命令内填写正常的启动命令:node app.js 如果是启动jar项目就填写命令:java -jar xxxx.jar 即可,根据不同的类型,使用正确的启动命令即可!

Supervisor

安装Supervisor

  1. 用yum直接安装即可。
yum install -y supervisor
  1. 安装好后启动Supervisor
supervisord -c /etc/supervisord.conf
  1. 设置开机自启Supervisor,并修改配置文件
systemctl enable supervisord

当然我们也可以验证是否开机自启成功,如果输入命令提示enabled那就是OK了

 systemctl is-enabled supervisord

开启web

  1. 修改配置文件,找到inet_http_server我们开启web,如图所示的设置(按键盘的i即可进行修改,修改后按键盘的esc,然后输入:wq保存)
    前面的;就是注释的意思,删除就表示生效

port=*:9001
username=user
password=123
  1. 保存后好,然后重启,我们去网页输入http://ip:端口 IP如果你是本地就用本地的,端口记得开!!!正常来说没问题!
systemctl restart supervisord

到此我们已经完成了web,web主要可以更加直观的可以看到守护的进程

示例守护奥特曼

  1. 我们用命令在/etc/supervisord.d内创建一个ini配置,可以放置多个ini配置,比如我要守护奥特曼,还有FDD,还有傻妞等,就每个对应配置一个ini配置文件即可。现在我们拿奥特曼示例,因为演示的服务器只有奥特曼,我们用vim创建一个atm.ini文件。

    vim /etc/supervisord.d/atm.ini
  2. 在文件内我们按照下图进行配置,其他默认。

    [program:atm]里的atm就是.ini前面的名称

[program:atm]
command=/root/autMan/autMan
directory=/root/autMan
autorestart=true
startsecs=3 
startretries=3
stdout_logfile=/var/log/atm.log
stdout_logfile_maxbytes=10MB
stdout_logfile_backups=5
user=root 
priority=999
numprocs=1
redirect_stderr=true

[program:atm]里的atm就是.ini前面的名称,如果你的ini叫fdd.ini,那你就写[program:fdd],其他按照图内操作。

配置完成后,我们一样跟前面esc,然后:wq保存

  1. 保存好后,我们让配置生效
  1. 控制台流程

    • 进入控制台
      supervisorctl
    • 读取配置
      reread
    • 更新配置
      update
    • 开启所有配置
      start all
    • 查看所有配置的状态
      status

命令解释

命令 释义
supervisorctl status 守护进程状态
supervisorctl stop 进程名 关闭进程 (不会重新读取配置文件)
supervisorctl stop 进程名: * 关闭某类进程
supervisorctl stop all 关闭所有的进程
supervisorctl start 进程名 开启进程 (不会重新读取配置文件)
supervisorctl start 进程名: * 开启某类进程
supervisorctl start all 开启所有的进程
supervisorctl restart 进程名 重启进程 (不会重新读取配置文件)
supervisorctl restart进程名: * 重启某类进程
supervisorctl restart all 重启所有的进程
supervisorctl reload 重启supervisord(更新所有服务的配置文件,并重启所有服务 )
supervisorctl update 更新配置文件(重启配置文件有更新的进程,相当于 reread + restart,服务会使用新配置 )
supervisorctl reread 只会更新配置文件 ,不会重启进程,服务实际未使用新配置
pkill supervisord 杀死supervisord
ps aux 丨 grep supervisord 查看服务进程

几个示例

  1. fdd

    [program:fdd]
    command= java -jar QL-Emotion.jar
    directory=/root/fdd/
    autorestart=true
    startsecs=3
    startretries=3
    stdout_logfile=/var/log/fdd.log
    stdout_logfile_maxbytes=2MB
    stdout_logfile_backups=5
    user=root
    priority=999
    numprocs=1
    redirect_stderr=true
  2. fdd资产查询

    [program:zichanchaxun]
    command=node app.js
    directory=/www/changePro-main/
    autorestart=true
    startsecs=3
    startretries=3
    stdout_logfile=/var/log/zichanchaxun.log
    stdout_logfile_maxbytes=2MB
    stdout_logfile_backups=5
    user=root
    priority=999
    numprocs=1
    redirect_stderr=true
  3. go-cqhttp

    [program:go-cqhttp]
    command=/root/autMan/go-cqhttp/go-cqhttp
    directory=/root/autMan/go-cqhttp/
    autorestart=true
    startsecs=3
    startretries=3
    stdout_logfile=/var/log/go-cqhttp.log
    stdout_logfile_maxbytes=50MB
    stdout_logfile_backups=5
    user=root
    priority=999
    numprocs=1
    redirect_stderr=true
阅读剩余
THE END