Tentei configurar um trabalho cron do root para executar um script Bash como root, para executar no minuto 7,37, a cada hora, todos os dias do mês, todos os meses. Este script está localizado /usr/bin
e nomeado tunlrupdate.sh
. Ele 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 grava 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 2 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 trabalho cron foi inserido.
Eu reiniciei o Ubuntu e estava verificando no arquivo de log se o trabalho cron foi iniciado corretamente. No entanto, não há nada no arquivo de log, o que /var/log/tunlr.log
significa que o trabalho nunca foi iniciado com êxito.
Eu verifiquei se eu executava o script na linha de comando
sudo /usr/bin/tunlrupdate.sh
o arquivo de log é atualizado de acordo.
Por que esse trabalho cron não está sendo executado conforme o planejado no meu sistema?
ATUALIZAÇÃO 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, 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 PATH sugerido = inserção e uso do caminho absoluto da raiz para funções no script ou sem as soluções sugeridas aqui. Eu ainda recebo esse erro.
Após algumas pesquisas, identifiquei o erro no arquivo, /usr/lib/php5/maxlifetime
conforme 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 obter garantia 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 recebi o trabalho do cron. Nada está escrito no arquivo de log. Então, mesmo pode ser um script vazio não será executado no cron? Eu não entendo. Eu sei que tentando um script reduzido a estas 2 linhas:
#!/bin/bash
exit 0
E ainda o mesmo log de erros. O script cron não passa por ...