configurando o anacron para atualização de controle de versão

0

Eu armazeno alguns dos meus arquivos de configuração no controle de versão. Recentemente eu tentei configurar um trabalho anacron diário para que eu não precise atualizar manualmente os arquivos. Eu nunca usei o cron ou o anacron antes, mas lendo a documentação do cron eu decidi colocar meu script em /etc/cron.daily . Abaixo está meu script chamado dot-files (alterado para executável com 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

No entanto, parece que não está em exibição nos últimos dois dias. Aqui estão as linhas de /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

Alguém pode ver o que há de errado com isso? Também estou usando uma configuração errada para o propósito?

p.s. Estou usando um sistema 12.04 do Ubuntu e nem sempre está em execução.

    
por none 21.08.2012 / 10:16

1 resposta

1

OK, as primeiras coisas primeiro. Você não vê o que deu errado porque o cron não pôde enviar a saída por e-mail. Em vez disso, no entanto, de configurar seu sendmail, modifique seu script de forma que ele armazene a saída de seus comandos:

#!/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

Além disso, você não precisa colocá-lo no cron diretamente como root, você pode executar o crontab como usuário.

man crontab

P.S. O que acontece quando você executa esse script manualmente?

    
por January 21.08.2012 / 10:59