Настройка 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 Что происходит, когда вы запускаете этот скрипт вручную?