這是一個用於在寶塔面板計劃任務中自動執行 PHP 遷移腳本的 Bash 腳本。其主要功能是確保遷移腳本只運行一個實例,避免重複執行,並將執行過程和結果記錄到日誌文件中。
#!/bin/bash
# 自動遷移腳本 - 配合寶塔計劃任務使用
# ===== 配置區域 =====
PHP_PATH="/www/server/php/83/bin/php" # PHP 可執行文件路徑(根據實際版本修改)
SCRIPT_PATH="/www/wwwroot/1.php"
LOG_FILE="/www/server/cron/4041704b46a517bb6a6a28b638721a08.log"
PID_FILE="/www/wwwroot/migrate.pid"
# ====================
# 檢查是否已在運行
if [ -f "$PID_FILE" ]; then
OLD_PID=$(cat "$PID_FILE")
if ps -p "$OLD_PID" > /dev/null 2>&1; then
echo "$(date '+%Y-%m-%d %H:%M:%S') 遷移腳本已在運行 (PID: $OLD_PID),跳過本次執行。" >> "$LOG_FILE"
exit 0
else
rm -f "$PID_FILE"
fi
fi
# 記錄當前進程 PID
echo $$ > "$PID_FILE"
# 執行遷移腳本,輸出重定向到日誌文件
echo "$(date '+%Y-%m-%d %H:%M:%S') 開始執行遷移腳本..." >> "$LOG_FILE"
$PHP_PATH $SCRIPT_PATH >> "$LOG_FILE" 2>&1
# 執行完畢,清理 PID 文件
rm -f "$PID_FILE"
echo "$(date '+%Y-%m-%d %H:%M:%S') 遷移腳本執行完畢。" >> "$LOG_FILE"這個腳本通常用於寶塔面板的“計劃任務”中,定時(如每分鐘或每小時)執行一個 PHP 遷移任務。它通過 PID 文件防止任務重疊運行(即上一次未完成時,下一次不會執行),並將所有輸出信息記錄到指定日誌文件,便於排查問題。