php在宝塔上定时执行,或者命令行运行

这是一个用于在宝塔面板计划任务中自动执行 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
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容