启停脚本:

server_launch.sh
授权

chmod +x manage_your_script.sh
#!/bin/bash

# 设置脚本、日志文件路径和日志目录
SCRIPT="server_launch.sh"                 # 主脚本的名称
LOG_DIR="./logs"                         # 日志目录
LOG_FILE="$LOG_DIR/output.log"           # 日志文件路径
PID_FILE="$LOG_DIR/your_script.pid"      # 用于存储脚本进程ID的文件

# 检查并创建日志目录
[ -d "$LOG_DIR" ] || mkdir -p "$LOG_DIR"

# 启动函数
start() {
    if [ -f "$PID_FILE" ] && kill -0 $(cat "$PID_FILE") 2>/dev/null; then
        echo "脚本已在运行中,PID=$(cat $PID_FILE)"
    else
        echo "===== Start: $(date) =====" >> "$LOG_FILE"
        nohup sh "$SCRIPT" >> "$LOG_FILE" 2>&1 &
        echo $! > "$PID_FILE"
        echo "脚本启动成功,PID=$(cat $PID_FILE)"
    fi
}

# 停止函数
stop() {
    if [ -f "$PID_FILE" ] && kill -0 $(cat "$PID_FILE") 2>/dev/null; then
        kill $(cat "$PID_FILE")
        rm -f "$PID_FILE"
        echo "脚本已停止"
        echo "===== Stop: $(date) =====" >> "$LOG_FILE"
    else
        echo "脚本未在运行中"
    fi
}

# 检查状态函数
status() {
    if [ -f "$PID_FILE" ] && kill -0 $(cat "$PID_FILE") 2>/dev/null; then
        echo "脚本正在运行中,PID=$(cat $PID_FILE)"
        echo "详细进程信息:"
        ps -fp $(cat "$PID_FILE")   # 显示该PID的详细信息,包括进程ID、运行命令等
    else
        echo "脚本未在运行中"
    fi
}

# 检查用户传入的参数
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    status)
        status
        ;;
    *)
        echo "用法: $0 {start|stop|restart|status}"
        exit 1
        ;;
esac

最后修改:2024 年 10 月 30 日
咱们谁跟谁,用不着~