为什么我的脚本通过 cron 运行时会终止?

为什么我的脚本通过 cron 运行时会终止?

大家好!也许你们可以帮我解决这个问题:我已经在 Cron 中设置了每日备份轮换,每天凌晨 4 点运行。该脚本并不复杂(见下文),当我自己执行它时,它可以正常工作。但是,当我在 Cron 上安排它时,脚本运行了大约半小时,然后停止(没有邮件,没有警告,它只是在某个时候停止复制文件)。

你知道为什么会发生这种情况吗?备份文件夹大约有 38GB 大,脚本运行需要将近一个小时。我猜是某种运行时限制,但这只是一个想法。

最后,但并非最不重要的一点是,这是脚本。它保留一个包含 7 个每日备份的“存档”文件夹:

#!/bin/bash
NEW=`date +%Y%m%d`
NUMBER=7

function erase_old()
{
    while (( $# > $NUMBER )); do
        rm -rf "$1"
        shift
    done
}

mkdir /backup/archive/$NEW
cp -vrp /backup/current/* /backup/archive/$NEW
erase_old /backup/archive/*

答案1

没有把握为什么它快要死了,但我可以建议你采用另一种方法来进行滚动备份吗?

尝试使用而不是今天的日期,今天的作为文件名。这样您就不必删除旧文件,它们只会被覆盖。(或者您可以删除<today>,然后写入新文件。)

要获取今天的值,请执行以下操作:

$FNAME=`date +%A`

答案2

$CANT您正在测试未在任何地方设置的变量。

我不知道ulimit -t这是否妨碍了你。

答案3

这可能是权限问题;crontab 条目是否在可以从命令行成功运行脚本的同一用户下?

相关内容