启停脚本:
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