代码拉取完成,页面将自动刷新
同步操作将从 weibaohui/k8m 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#!/bin/bash
# 检查是否传入了必要的参数
if [ -z "$1" ] || [ -z "$2" ]; then
echo "Usage: $0 <binary_name> <watch_directory>"
exit 1
fi
APP_NAME="$1" # 要监控的二进制文件名(如 demo)
WATCH_PATH="$2" # 监控的目录(如 /app)
APP_PATH="${WATCH_PATH}/${APP_NAME}" # 上传的新文件路径
CURRENT_PATH="${WATCH_PATH}/${APP_NAME}.current" # 运行中的文件路径
# 启动应用程序
start_app() {
echo "Starting ${APP_NAME}..."
mv "$APP_PATH" "$CURRENT_PATH" # 将新上传的文件重命名
chmod +x "$CURRENT_PATH" # 确保文件可执行
sleep 1
"$CURRENT_PATH" &
APP_PID=$!
echo "${APP_NAME} started with PID: $APP_PID"
}
# 停止应用程序
stop_app() {
if [ -n "$APP_PID" ]; then
echo "Stopping ${APP_NAME} with PID: $APP_PID"
kill "$APP_PID"
wait "$APP_PID" 2>/dev/null
echo "${APP_NAME} stopped"
fi
}
# 初次启动程序
start_app
# 使用 inotifywait 监控 APP_PATH 的 close_write 事件,确保只在新的文件写入完成后触发
while true; do
# 监听 close_write 事件,排除文件重命名的误触发
inotifywait -e close_write --exclude "${APP_NAME}.current" "$WATCH_PATH"
sleep 1
# 检查是否是新的文件写入完成
if [ -f "$APP_PATH" ]; then
echo "Detected new version of ${APP_NAME}, restarting..."
# 删除旧文件并启动新程序
rm -f "$CURRENT_PATH"
stop_app
sleep 1
start_app
fi
done
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。