A saída Cronjob não funciona [fechada]

1

Eu tenho este cronjob:

#!/bin/bash
YEAR='date +%Y'
MONTH='date +%m'
DAY='date +%d'
mkdir -p $YEAR/$MONTH/$DAY
mysqldump -uroot -p1234 locatari > $YEAR/$MONTH/$DAY/backup.sql

E eu quero correr isso a cada digamos 3 minutos. Eu tentei com cada um desses comandos crontab e nenhum deles parece funcionar:

3 * * * * /usr/bin /home/rome/cronjob/back.sh > /home/rome/cronjob
3 * * * * /home/rome/cronjob/back.sh/
3 * * * * exec '/bin/bash /home/rome/cronjob/back.sh'
3 * * * * /bin/bash /home/rome/cronjob/back.sh > /dev/null 2>&1

Eu só fiz isso quando fiz:

bash back.sh

Tudo funcionou como esperado com o comando bash, o que está errado no meu agendador de cron? O problema é que com o comando crontab, não consigo ver minha saída, só funciona com o comando bash.

    
por Tatu Bogdan 21.06.2018 / 14:43

2 respostas

2

Nenhuma das entradas do seu trabalho crontab corresponde ao que você digitou na linha de comando

  1. /usr/bin /home/rome/cronjob/back.sh tenta executar um programa /usr/bin , mas esse é um diretório
  2. /home/rome/cronjob/back.sh/ tenta tratar seu script como um diretório
  3. exec '/bin/bash /home/rome/cronjob/back.sh' tenta usar a saída do seu programa como um nome de programa para executar
  4. /bin/bash /home/rome/cronjob/back.sh > /dev/null 2>&1 isso pode funcionar, exceto pelo fato de você ter descartado toda a saída do script, para não ver erros

Com base no feedback de seus comentários, parece que você provavelmente quer algo assim (omiti /home/rome porque esse é seu diretório pessoal mesmo assim):

*/3 * * * * cd cronjob && bash back.sh >back.log 2>&1
    
por 21.06.2018 / 14:51
2

Sua expressão de cronograma significa "A cada minuto 3" = > cada hora.
Cada 3 minutos seria:

*/3 * * * *

Veja esta ferramenta legal para verificar a expressão.

Também apenas o seu último comando cron funcionará. Mas eu não redirecionaria a saída para /dev/null . Se houver algum problema com seu script, será difícil depurá-lo.

    
por 21.06.2018 / 14:51

Tags