安装

yum -y install epel-release supervisor

设置开机自启动

systemctl enable supervisord

重启

systemctl restart supervisord

配置

在 /etc/supervisord.d 目录下 创建一个 xx.ini

[program:spug-api]
command = bash /data/spug/spug_api/tools/start-api.sh
autostart = true
stdout_logfile = /data/spug/spug_api/logs/api.log
redirect_stderr = true

查看状态

supervisorctl

常见问题

command 不能设置 2>&1 & ,不然会出现 下面的报错

Exited too quickly (process log may have details)

如果是后台启动的线程可以增加一个守护线程脚本

#!/bin/bash

# 定义进程名称
PROCESS_NAME="job"

# 无限循环
while true; do
    # 使用pgrep检查名为job的进程是否存在
    if ! pgrep -x "$PROCESS_NAME" > /dev/null; then
        # 如果进程不存在,则执行run.sh脚本
        echo "进程 $PROCESS_NAME 不存在,正在执行 run.sh..."
        ./run.sh
    else
        echo "进程 $PROCESS_NAME 存在,等待5秒后再次检查..."
    fi

    # 休眠5秒
    sleep 5
done

示例

运行 es

[program:es]
command = sh /opt/soft/elasticsearch-7.13.3/bin/start.sh
directory = /opt/soft/elasticsearch-7.13.3/bin
user = es
autostart = true
stdout_logfile = /opt/logs/supervisor/es.log
redirect_stderr = true

start.sh

export ES_JAVA_HOME=/opt/jdk-11
export JAVA_HOME=/opt/jdk-11
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
./elasticsearch >>/dev/null

本文作者 xulin(海鸥技术部落),原载于团队 GitBook 技术 Wiki

supervisor安装使用

安装 设置开机自启动 重启 配置 在 /etc/supervisord.d 目录下 创建一个 xx.ini 查看状态 常见问题 command 不能设置 2>&1 & ,不然会出现 下面的报错 如果是后台启动的线程可以增加一个守护线程脚本 示例 运行 es start.sh