Como posso saber se meu trabalho cron horário foi executado?

22

Eu criei um arquivo chamado ntpdate in /etc/cron.hourly

#!/bin/sh
/usr/sbin/ntpdate-debian
date > /tmp/william_tmp
date > /william_tmp
date > ~/william_tmp
echo test

Eu também fiz o Chmod 755 para este arquivo.

No entanto, não sei dizer se o arquivo foi executado ou não.

O arquivo não é criado em nenhum dos 3 diretórios.

Se eu executar manualmente cd / && run-parts --report /etc/cron.hourly , os arquivos serão criados e eu receberei o eco.

Alguém pode recomendar instruções (idealmente passo a passo!) para testar se está funcionando?

    
por wilhil 11.06.2012 / 19:35

4 respostas

22

Uma grande armadilha para o cron é o cron executar em um ambiente shell extremamente limitado, como resultado, muitas variáveis não são exportadas para o ambiente, principalmente $ PATH. Certifique-se de usar todos os caminhos absolutos para o executável, incluindo funções comuns como echo , uptime , date , etc. todos precisam usar caminhos completos ( /bin/echo , /bin/date , /usr/bin/uptime ). Para determinar o caminho para um executável, você pode usar o comando which da seguinte forma: which echo - isso mostrará o caminho completo para essa ferramenta.

    
por Marco Ceppi 12.06.2012 / 01:49
31

Você deve procurar no seu arquivo de log /var/log/syslog . Se um cron foi executado, ele teria uma linha como:

Jun 11 19:09:01 penguin CRON[17376]: (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/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)
Jun 11 19:17:01 penguin CRON[17799]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

Para dicas de solução de problemas, consulte link

    
por Lekensteyn 11.06.2012 / 19:39
2

Tente alterar a primeira linha do seu script (o interpretador) para:

#!/bin/bash

Eu também tive problemas no passado, com variáveis de ambiente e problemas de PATH. Depois de alterar o intérprete para bash , meus problemas desapareceram.

    
por Awi 12.06.2012 / 02:36
1

Dado que adicionei o script clearme.sh em /etc/cron.hourly/

Basta filtrar as tarefas do CRON no terminal com os poderosos egrep e awk :

$ cat /var/log/syslog | egrep clearme | awk "{ print $1 }" > ~/Desktop/cronlog.txt

A saída será parecida com:

Jan 14 15:20:01 markets-dev CRON[10089]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 15:40:01 markets-dev CRON[18042]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 16:00:01 markets-dev CRON[22817]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 16:20:01 markets-dev CRON[28183]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 16:40:01 markets-dev CRON[411]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 17:00:01 markets-dev CRON[5442]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 17:20:01 markets-dev CRON[11935]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)

Para explicar tudo passo a passo:

  1. cat / var / log / syslog - imprima-me o log do sistema
  2. egrep clearme - mas apenas selecione linhas que contenham o texto clearme
  3. awk "{print $ 1}" - imprima essa linha que contém o texto clearme
  4. > ~ / Desktop / cronlog.txt - exibe os resultados no arquivo cronlog.txt localizado no diretório Desktop .

O quarto passo é opcional. Ele apenas imprimirá os resultados no terminal, em vez do arquivo.

    
por Mincă Daniel Andrei 14.01.2016 / 16:36