O trabalho do Cron não parece funcionar

2

Eu agendei uma tarefa a cada 5 minutos no meu crontab.

A tarefa é bem programada, ativando o log cron no rsyslog e verificando se ela é executada conforme planejado:

- Right user
- Right command

Entradas de registro de amostra:

Dec 23 06:40:01 computer /USR/SBIN/CRON[26422]: (myuser) CMD (bash /home/myuser/save.sh &>/home/myuser/cron.log)

Eu até tentei:

Dec 23 06:40:01 computer /USR/SBIN/CRON[26422]: (myuser) CMD (/home/myuser/save.sh &>/home/myuser/cron.log)

Exemplo de comando crontab:

*/5 * * * * /home/myuser/save.sh &>/home/myuser/cron.log

O script tem os direitos certos: pode ser executado por myuser

Exemplo de script:

#!/bin/sh

HOME_DIR="/home/$USER"
LOGFILE=save.log
DIR_NAME="mydir"
VOLATILE="$HOME_DIR/$DIR_NAME/"
PERMANENT="$HOME_DIR/$DIR_NAME""_storage/"

if [ ! -d "$PERMANENT" ]; then
    mkdir "$PERMANENT"
fi

echo 'date +%x\ %X'>$HOME_DIR/$LOGFILE
# Check if both directories actually exist
if [ -d "$VOLATILE" -a -d "$PERMANENT" ]; then
    # Control will enter here if both $VOLATILE and $PERMANENT exist.
    rsync -r -t -v "$VOLATILE" "$PERMANENT">$LOGFILE.output
    echo OK>>$HOME_DIR/$LOGFILE
else
    echo KO>>$HOME_DIR/$LOGFILE
    if [ ! -d "$VOLATILE" ]; then
        echo "Volatile dir does not exist">>$HOME_DIR/$LOGFILE
    fi
    if [ ! -d "$PERMANENT" ]; then
        echo "Permanent dir does not exist">>$HOME_DIR/$LOGFILE
    fi
fi

O comando é um script bash que executa corretamente manualmente com o mesmo usuário (mesmo se eu copiar e colar o comando exato executado no cron), mas não faz nada automaticamente.

Eu redireciono a saída do script em um arquivo de log personalizado para verificar sua execução, que permanece vazia quando a execução automática acontece.

Estou totalmente perdido, não sei o que está errado.

O que estou esquecendo?

[EDIT] Estou usando o Debian 6 Squeeze

    
por Bernard Rosset 25.12.2012 / 07:57

2 respostas

1

Você está perdendo uma nova linha no final do trabalho, no seu crontab?

O que "crontab -l" mostra?

    
por 27.12.2012 / 14:42
0

Eu tive o mesmo problema e corrigi-o removendo o "." do nome do arquivo. No seu caso, deve ser:

*/5 * * * * /home/myuser/save &>/home/myuser/cron.log
    
por 26.03.2013 / 11:39