Я сделал короткий скрипт на одном сервере, чтобы сделать резервную копию папки и отправить ее по FTP на другой сервер. Я пытаюсь настроить его запуск каждую минуту с помощью crontab. Он прекрасно работает, когда я запускаю его вручную, но когда cron запускает его, кажется, ничего не происходит (то есть файл не получен на другом конце). Как я сказал в заголовке, задача отображается в системном журнале, как будто все в порядке.
Вот сценарий:
#! /bin/sh
cd /root
FILENAME="backup-$(date +%b_%d_%Y_%H:%M).zip"
zip -r $FILENAME folder
ftp -in 74.131.78.127 24721 << EOF > ~/log.txt 2>&1
user myusername
binary
cd Desktop/backups
mput $FILENAME
EOF
rm $FILENAME
Запись Crontab:
* * * * * /root/backup.sh
Я ввел это, используя crontab -e
.
Я понял свою проблему. Фактический root
не имел разрешений на мою неумело названную папку /root
. Простой chmod -R 707 /root
решил это.
Полезно создать отдельный файл cron.log, что более полезно.
В этой Q & A описывается процесс:
16.04: Как заставить cron создать cron.log и отслеживать его в режиме реального времени?
Также в этом ответом является инструкция по созданию команды wcron
, которая отображает ее почти в реальном времени.
Кроме того, он ссылается на другой ответ,
Как изменить уровень журнала cron?
, который показывает, как изменить уровень журнала, чтобы включить больше чем только начало рабочих мест - уровень 15 также покажет ошибки и время окончания.
Возможно, ваш ответ в журнале.