O trabalho do Cron não está sendo gravado no arquivo de log

0

Eu tenho um script de shell que grava a data em um arquivo de log quando executado. Quando executo o script manualmente, a saída correta é gravada no arquivo. No entanto, isso precisa ser automatizado e, quando eu executo como cron job, nada é gravado no arquivo e estou confuso.

crontab:

0 * * * * tomcat /usr/bin/sh /apps/rdsreplication/snap_replication.sh

Exemplo de código:

#/bin/bash/

echo ---------------------------------------- >> create_snap.txt
echo Start time:  >> create_snap.txt
date >> create_snap.txt

Qualquer ajuda seria apreciada!

    
por N.M.D 02.03.2017 / 18:03

2 respostas

3

O script de shell precisa usar o caminho completo para o arquivo de log:

#/bin/bash/
# assuming you want the txt file in the same directory as the bash script
logfile="$(dirname "$0")/create_snap.txt"
{
    echo ----------------------------------------
    echo Start time:
    date 
} >> "$logfile"
    
por 02.03.2017 / 18:23
0

Para um usuário crontab , a página man do crontab(5) descreve os campos:

Each line has five time and date fields, followed by a user name if this is the system crontab file, followed by a command.

Então, no seu caso, você quer isso:

0 * * * * /usr/bin/sh /apps/rdsreplication/snap_replication.sh

Você deve estar ciente de que cron enviará por e-mail a saída e stderr do trabalho (se houver), então você provavelmente tem muitos e-mails informando que cron can ' t encontre o comando tomcat . (Ou, se puder, que tomcat não entende o resto da linha.)

    
por 02.03.2017 / 18:15