开箱即用:使用shell脚本一键启停python服务

#!/usr/bin/env bash

# chmod 755 monitor.sh
# workdir=$(dirname $(readlink -f "$0"))
# echo $workdir

daemon_start() {
    echo "********************************************"
    echo "需要拉取最新代码"
    # git pull origin master
    echo "Done..."
    echo "********************************************"
    echo "启动监控服务..."
    pid=$(ps -ef | grep python | grep main.py | grep -v grep | awk '{print $2}')
    if [ -n "$pid" ]; then
        echo "检测到监控服务已经启动, PID:$pid, 将会先尝试kill该进程..."
        daemon_stop
    fi
    # 使用-u参数,将标准输出的结果不经缓存直接输出到日志文件
    nohup poetry run python3 -u ./main.py >monitor.log 2>&1 &
}

daemon_status() {
    echo "********************************************"
    echo "查看监控服务状态..."
    status=$(ps -ef | grep python | grep main.py | grep -v grep)
    echo "$status"
    echo "********************************************"
}

daemon_stop() {
    echo "********************************************"
    echo "停止监控服务..."
    pid=$(ps -ef | grep python | grep main.py | grep -v grep | awk '{print $2}')
    if [ -n "$pid" ]; then
        echo "PID: $pid"
        kill -9 "$pid"
    fi
    echo "Done.."
    echo "********************************************"
}
daemon_restart() {
    echo "********************************************"
    daemon_stop
    daemon_start
    echo "Done.."
    echo "********************************************"
}

# 使用 ./start.sh start|stop|restart 来运行脚本启动服务
case "$1" in
start)
    daemon_start
    ;;
status)
    daemon_status
    ;;
stop)
    daemon_stop
    ;;
restart)
    daemon_restart
    ;;
*)
    echo "Usage: ./start.sh {start|status|stop|restart}"
    exit 1
    ;;
esac
exit 0

你可能感兴趣的:(开箱即用:使用shell脚本一键启停python服务)