O trabalho cron diário não está em execução

10

Uma rápida visão geral: Eu tenho um script que fará o backup diário do meu repositório de código-fonte do SVN em um tarball para esse dia. Eu testei o script e ele funciona muito bem, desde que eu o execute como sudo, por causa da propriedade do diretório de saída.

Então o problema é que eu quero rodar isso diariamente, então coloco um link para ele no diretório /etc/cron.daily. Aqui está o conteúdo do diretório.

thom@spenser:/etc/cron.daily$ ls -l
total 60
-rwxr-xr-x 1 root root   189 2011-09-14 02:21 apport
-rwxr-xr-x 1 root root 15535 2011-10-06 11:30 apt
-rwxr-xr-x 1 root root   314 2011-08-08 16:57 aptitude
lrwxrwxrwx 1 root root    24 2012-02-28 11:05 backup -> /usr/local/bin/backup.sh
-rwxr-xr-x 1 root root   502 2011-06-08 11:48 bsdmainutils
-rwxr-xr-x 1 root root   256 2011-10-06 04:04 dpkg
-rwxr-xr-x 1 root root   372 2011-10-04 16:50 logrotate
-rwxr-xr-x 1 root root  1353 2011-07-27 07:17 man-db
-rwxr-xr-x 1 root root   606 2011-08-17 09:16 mlocate
-rwxr-xr-x 1 root root   249 2011-06-24 05:36 passwd
-rwxr-xr-x 1 root root  2417 2011-07-01 17:25 popularity-contest
-rwxr-xr-x 1 root root   383 2011-09-30 15:09 samba
-rwxr-xr-x 1 root root  3594 2011-09-19 20:07 standard
thom@spenser:/etc/cron.daily$ 

O problema é que simplesmente nunca é executado. Aqui estão as permissões para esse script:

thom@spenser:/etc/cron.daily$ ls -l /usr/local/bin/backup.sh 
-rwxr-xr-x 1 root root 260 2012-02-28 11:03 /usr/local/bin/backup.sh

Idéias?

    
por Thom 12.03.2012 / 11:23

3 respostas

34

Tentei isso

run-parts --test /etc/cron.daily

Descobri que meu arquivo update.ubuntu não apareceu. Também notei que meu arquivo tinha uma extensão (tem ponto nele).

Etapas para corrigir isso.

  1. Renomeie meu update.ubuntu para update-ubuntu
  2. Agora, novamente run-parts --test /etc/cron.daily , desta vez meu arquivo apareceu!
por D Durga Prasad 01.02.2013 / 07:18
3

Pode ser uma de várias coisas:

Caminho das raízes:

  

Dependendo dos comandos que estão sendo executados, pode ser necessário expandir a variável PATH dos usuários raiz, colocando a seguinte linha no topo do arquivo crontab:

     

CAMINHO = / usr / sbin: / usr / bin: / sbin: / bin

src: link

Ou use apenas caminhos completos para cada comando no seu script: /bin/ls em vez de ls , por exemplo. ( which ls na linha de comando para caminhos).

Existe um bug estranho sobre pontos no nome do arquivo relatado aqui . Pode se estender até o arquivo ao qual você está vinculando, embora isso pareça improvável.

Você está salvando a saída do arquivo de backup? Coloque algo assim na primeira linha, para ajudar a determinar se ele não está sendo executado ou funcionando, mas falhando em algum momento.

/bin/echo "Attempting to run backup" >> /path-to-home/backup.log

Alternativamente, tente adicionar o script diretamente ao arquivo crontab:

sudo -i
crontab -e
[add the next line to the file, then save and exit]
33 15 * * * /usr/local/bin/backup.sh

será executado às 15:30 todos os dias, se a máquina estiver ligada. use * * * * * durante o teste para executar uma vez por minuto até que funcione.

    
por Sean 12.03.2012 / 12:56
1

Grep seu syslog para mensagens como;

crond: (*system*) BAD FILE MODE

os arquivos precisam ser restritos a (é suficiente) em 644):

chmod 0644 /etc/cron.d/my_crontab
    
por Tom H 21.05.2013 / 23:46

Tags