Назад | Перейти на главную страницу

Почему мой скрипт умирает при запуске через cron?

все! Может быть, вы можете мне помочь с этим: я настроил ежедневную ротацию резервных копий в Cron, чтобы она запускалась каждый день в 4 часа утра. Скрипт несложный (см. Ниже), и когда я сам его выполняю, он работает без проблем. Однако, когда я планирую его на Cron, скрипт запускается примерно полчаса, а затем останавливается (без почты, без предупреждений, он просто прекращает копирование файлов в какой-то момент).

Есть идеи о том, почему это могло происходить? Папка с резервными копиями имеет размер около 38 ГБ, и запуск сценария занимает почти час. Я предполагаю какое-то ограничение времени выполнения, но это всего лишь идея.

И последнее, но не менее важное: это сценарий. В нем хранится "архивная" папка с 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/*

Точно сказать не могу Зачем он умирает, но могу ли я предложить альтернативный подход к вашим откатывающимся резервным копиям?

Попробуйте использовать вместо сегодняшнего Дата, сегодня день для имени файла. Тогда вам никогда не придется удалять старые, они просто будут перезаписаны. (Или вы можете удалить <today>, а затем напишите новый.)

Чтобы получить сегодняшнее значение, сделайте что-нибудь вроде:

$FNAME=`date +%A`

Это может быть проблема с разрешением; запись crontab принадлежит тому же пользователю, который может успешно запустить сценарий из командной строки?

Вы тестируете переменную $CANT который нигде не установлен.

Интересно, если ulimit -t встает у вас на пути.