1

Ubuntu 9.10

crontab -l

0 1 * * * /root/cron/rsync-93.193.99.111 &> /root/cron/rsync-93.193.99.111.log
0 3 * * * tail -100 /root/cron/rsync-93.193.99.111.log | msmtp me@myemail.com

ls -l /root/cron/rsync-93.193.99.111.log

-rw-r - r-- root root /root/cron/rsync-93.193.99.111.log

Файл rsync-93.193.99.111.log показывает нулевой размер в Nautilus.
Я получаю электронное письмо, но оно пустое.
Запуск tail -100 также показывает вывод emtpty, поэтому электронная почта верна.

Почему скрипт bash rsync ничего не записывает в файл?

2 ответа2

2

Я полагаю, это потому, что &> не поддерживается в sh который является оболочкой, которую использует cron . Используйте явную форму:

0 1 * * * /root/cron/rsync-93.193.99.111 > /root/cron/rsync-93.193.99.111.log 2>&1

Кроме того, вы можете сделать sudo crontab -e вместо sudo su затем crontab -e .

1

Я согласен с оценкой вашей проблемы Денисом. Но я хочу упомянуть еще пару моментов.

Самое главное, не делайте этого:

0 1 * * * some command
0 3 * * * some other command that should run after the first one

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

0 1 * * * /root/cron/rsync-93.193.99.111 >/root/cron/rsync-93.193.99.111.log 2>&1; tail -100 /root/cron/rsync-93.193.99.111.log | msmtp me@myemail.com

Кроме того, вы можете воспользоваться автоматической рассылкой ошибок cron. (Предполагается, что ваша система настроена правильно для почты, что может быть не так, если вам нужно запустить msmtp вместо mail .)

MAIL=me@myemail.com
0 1 * * * /root/cron/rsync-93.193.99.111 2>&1 | tee /root/cron/rsync-93.193.99.111.log | tail -n 100

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .