Por que o cron não está executando meu script?

2

Agora eu quero usar Backup e Sempre que gem backup automático meu banco de dados. Quando eu conecto o servidor por ssh como um usuário adicionado para executar backup, execute -t my_backup , ele funciona bem.Mas o arquivo cron:

0 22 * * * /bin/bash -l -c 'backup perform -t my_backup'

não pode ser executado às 22:00. Quando eu uso cat / etc / crontab verifique o arquivo de configuração do cron, é:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

/ bin / bash e / bin / sh são diferentes. Qual é o motivo? Como fazer?

    
por Jingqiang Zhang 05.09.2012 / 03:57

2 respostas

1

A coisa mais comum com a qual o cron não está executando algo é que sem um conjunto MAILTO, se o comando produzir um cron de saída, ele será imediatamente interrompido. Ou possivelmente tenta escrever para stdout e encontra um SIGPIPE. Não tenho certeza do mecanismo exato.

Adicione MAILTO=<your email address> e experimente isso. Como alternativa, grave stdout e stderr em um arquivo de log anexando >>/var/log/backup 2>&1 à linha do cron que você já possui.

    
por Jeff Snider 06.09.2012 / 00:34
0

crontab é um arquivo de configuração. Por que não editá-lo e mudar sh para bash?

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    
por Jazz 06.09.2012 / 00:14