Настройка anacron для обновления контроля версий

Я храню некоторые из моих файлов конфигурации в системе контроля версий. Недавно я попытался настроить ежедневную работу Anacron, чтобы мне не пришлось обновлять файлы вручную. Я никогда раньше не использовал cron или anacron, но, читая документацию cron, я решил поместить свой скрипт в /etc/cron.daily, Ниже мой сценарий назван dot-files (изменено на исполняемый с chmod +x):

#!/bin/sh

cd /home/dell/dot-files && /usr/bin/git add . && /usr/bin/git commit -a -m 'daily update' && /usr/bin/git push -u origin master

Однако, похоже, что он не работает последние два дня. Вот строки из /var/log/syslog:

Aug 21 10:42:02 dell-Studio-1535 anacron[1023]: Job `cron.daily' terminated (exit status: 1) (mailing output)
Aug 21 10:42:02 dell-Studio-1535 anacron[1023]: Can't find sendmail at /usr/sbin/sendmail, not mailing output

Кто-нибудь может увидеть, что с этим не так? Также я использую неправильную настройку для этой цели?

PS Я использую систему Ubuntu 12.04, и она не всегда работает.

1 ответ

Решение

ОК, обо всем по порядку. Вы не видите, что пошло не так, потому что cron не смог отправить вам вывод по почте. Однако вместо того, чтобы конфигурировать ваш sendmail, измените ваш скрипт так, чтобы он сохранял выходные данные ваших команд:

#!/bin/sh

export workdir=/home/dell
export logfile=$workdir/dot-files.log
export errfile=$workdir/dot-files.err
date >> $logfile
date >> $errfile

{ cd $workdir/dot-files && /usr/bin/git add . && /usr/bin/git commit -a -m 'daily update' && /usr/bin/git push -u origin master ; } >> $logfile 2>> $errfile

Более того, вам не нужно помещать его в cron напрямую как root, вы можете запустить crontab как пользователь.

man crontab

PS Что происходит, когда вы запускаете этот скрипт вручную?

Другие вопросы по тегам