进程耗时太长的 crontab 问题

进程耗时太长的 crontab 问题

我有一个运行 rsync 来备份某些文件的脚本。完成 rsync 后,脚本会向我发送一封包含结果的电子邮件。

如果 rsync 花费的时间少于 30 分钟至 1 小时,则邮件发送没有问题,但如果 rsync 花费的时间更长,则邮件永远不会发送。

Rsync 永远不会超过 3-4 小时(在最坏的情况下:干净的新备份)。该脚本被编程为每天凌晨 2 点执行。所以这不可能是进程重叠的问题。

就像脚本在一定时间后死亡,当命令完成时间太长并且不继续执行命令时。

抱歉,如果这是一个重复的问题,但我还没有在网上找到相关信息。

非常感谢!

编辑:系统运行Linux Mint 20

编辑2:此问题也出现在Ubuntu Server 中。脚本文件位于 sudoers 中,允许在没有密码的情况下以 sudo 的方式执行它。

编辑3:脚本代码:

#!/bin/bash

script_path="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
now=$(date +$1)
path="/media/backups/"$now
log_file="/media/backups/logs/"$(date +"%Y%m%d_%H%M%S")
log_folder=$script_path"/logs"

if [ ! -d $log_folder ]; then
    mkdir -p $log_folder
fi

{
    echo ""
    echo ""
    date +"%d %m %Y - %H %M %S"
    echo ""
    echo ""

    if [[ ! -d $path ]]; then
        sudo mkdir $path
    fi

    sudo rsync -avprh --delete /media/disk/ $path
    sudo rsync -avprh --delete /media/disk2 $path"/disk2/"

    sudo /usr/bin/touch $path

} > $log_file 2>&1

if grep -i -q "error" $log_file; then
/usr/bin/php /var/www/email.php "[email protected]" "Backup ERROR" "<pre>$(<$log_file)</pre>"
else
/usr/bin/php /var/www/email.php "[email protected]" "Backup OK" "<pre>$(<$log_file)</pre>"
fi

相关内容