这是一个用于在宝塔面板计划任务中自动执行 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 文件防止任务重叠运行(即上一次未完成时,下一次不会执行),并将所有输出信息记录到指定日志文件,便于排查问题。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END













暂无评论内容