Eu tentei configurar um agendamento do cron para executar um script Bash como root, para correr no minuto 7,37, cada hora, cada dia do mês, a cada mês. Este script está localizado em /usr/bin
e denominado tunlrupdate.sh
. Atualiza o DNS do Tunlr.
$ ls -l /usr/bin/tunlrupdate.sh
-rwxr-xr-x 1 root root 2133 Sep 24 15:42 /usr/bin/tunlrupdate.sh
Este script Bash está disponível aqui .
Quando chamado o script escreve o que está acontecendo em um log localizado em /var/log/tunlr.log
Para adicionar este trabalho cron do root, usei o padrão para o crontab do root
sudo crontab -e
E inseriu essas duas linhas no final. Espero que o cron execute o script como root.
# check for updated Tunlr DNS every 30 minutes at the hour + 7 mn and hour + 37 mn
07,37 * * * * root /usr/bin/tunlrupdate.sh
Um comando posterior sudo crontab -l
confirmou que o cron job foi inserido.
Eu fiz reiniciar Ubuntu e foi o check-in o arquivo de log se o trabalho cron foi lançado corretamente. No entanto não há nada no arquivo de log /var/log/tunlr.log
o que significa que o trabalho nunca foi lançado com sucesso.
Eu verifiquei se eu executasse o script pela linha de comando
sudo /usr/bin/tunlrupdate.sh
então o arquivo de log é atualizado de acordo.
Por que esse cron job não está sendo executado como planejado no meu sistema?
UPDATE 1: Todas as soluções propostas até agora não funcionam. Agradeço a Olli por uma CLI para listar o log do sistema sudo grep CRON /var/log/syslog
. No entanto, eu recebi um erro CRON
CRON[13092]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ]
&& find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php
/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)
com o caminho sugerido = inserção & amp; uso de caminho absoluto da raiz para funções no script ou sem as soluções sugeridas aqui. Eu ainda recebo este erro.
Depois de algumas pesquisas eu identificou o erro no arquivo /usr/lib/php5/maxlifetime
, como é explicado aqui : Change #!/bin/sh -e --> #!/bin/sh -x
Em seguida, listando o log de erros CRON no meu sistema
sudo grep CRON /var/log/syslog
Feb 11 18:07:01 Marius-PC CRON[14067]: (root) CMD (root /usr/bin/tunlrupdate.sh)
Feb 11 18:07:01 Marius-PC CRON[14066]: (root) MAIL (mailed 1 byte of output; but got
status 0x00ff, #012)
Ainda não consigo executar o script bash. Desta vez, nenhum erro é mostrado no log. Para ter certeza de que esse não era o conteúdo do script, reduzi o script para as três linhas a seguir:
#!/bin/bash
LOGFILE=/var/log/tunlr.log
echo $LOGFILE >> $LOGFILE
Ainda não consigo o trabalho do cron. Nada é escrito no arquivo de log. Então, mesmo pode ser um script vazio não será executado no cron? Eu não entendo. Estou sabendo tentar um script reduzido para estas 2 linhas:
#!/bin/bash
exit 0
E ainda o mesmo log de erro. O script cron não passa por ...