Eu costumava crontab -e
adicionar a seguinte linha ao meu crontab:
* * * * * echo hi >> /home/myusername/test
No entanto, não vejo que o arquivo de teste esteja gravado. Isso é um problema de permissão ou o crontab não está funcionando corretamente?
Vejo que o processo cron está em execução. Como posso depurar isso?
Editar - Ask Ubuntu tem uma boa pergunta sobre o crontab , infelizmente isso ainda não me ajuda.
Edit 2 - Hmm, parece que meu arquivo de teste tem 214 linhas, o que significa que nos últimos 214 minutos foi gravado a cada minuto. Não sei ao certo qual foi o problema, mas evidentemente se foi.
fcron
faz isso também.Você adicionou uma linha vazia após seu cronjob ?
fonte
Eu tive o mesmo problema - um crontab em funcionamento parou subitamente depois de adicionar uma nova entrada no final. Acabei me esquecendo de colocar uma nova linha depois dessa última linha.
Eu descobri emitindo o comando
e a saída mostrou o problema:
Adicionar a nova linha e salvar corrigiu o problema.
fonte
Parece que isso é fixo. Da próxima vez, tente registrar o STDERR também. O seguinte registrará apenas STDOUT, não STDERR:
Tente garantir que também haja uma cláusula explícita para STDERR. Caso contrário, o STDERR poderá ser enviado por email ao usuário (supondo que o email esteja funcionando) ou poderá não chegar a lugar algum, dependendo de como o Cron estiver configurado.
Minha preferência é enviar a saída do cronjob para o syslog. Dessa forma, estou aproveitando qualquer infraestrutura existente de syslog (syslogs centralizados, Splunk, rotação de logs já suportada, é fácil comparar mensagens em / var / log / messages e / var / log / cronjob, etc), e não estou enviando spam para os administradores de sistema (eu) com emails desnecessários.
fonte
Para mim, o problema era que o script não era executável. Eu tinha o crontab -e configurado assim
E o arquivo myscript não era executável, então eu corri
Imediatamente comecei a ver a saída conforme o esperado.
fonte
Sua linha cron funciona bem no meu computador quando mudo
myusernae
paraphunehehe
. Existem várias maneiras de descobrir o que há de errado com seu sistema.Geralmente, o Cron envia correio para o usuário quando há algo errado. Se você vir a mensagem "Você tem e-mail", use um cliente de e-mail para verificar sua caixa de entrada . Ou, verifique no seu diretório pessoal, pode haver um arquivo nomeado
dead.letter
lá.Você pode verificar as
/var/log/
entradas relacionadas ao cron. No meu computador, o arquivo de log está em/var/log/cron/current
(requer acesso root).Se você tiver acesso root, poderá parar o daemon cron e iniciá-lo no modo de depuração. Por exemplo, eu usaria (mude
fcron
para o nome do seu daemon):fonte
ps -ef | grep cron
e você deverá ver uma linha para o seu cron. Verifique a página de manual do cron para ver o sinalizador para depuração. É provável que você esteja usando o Vixie Cron ; nesse caso, o sinalizador de depuração é-x
. Mate o processo cron e inicie-o novamente com o sinalizador adicional.Provavelmente, quando o cron falha, ele gera um email para o ID do usuário do trabalho cron nesse computador. Se você não tiver um MTA funcionando no computador ou não estiver lendo ou encaminhando esse e-mail para outro lugar, não verá essa mensagem, mesmo que o MTA esteja funcionando.
Uma boa maneira de obter os erros do seu crontab via correio é fazer com que o seu crontab fique assim:
Obviamente, use seu endereço de e-mail em vez de [email protected]. Isso instrui o cron a enviar erros para o seu endereço de email em vez da conta local. Em particular, isso é útil se você tiver um crontab raiz (ou fragmento crontab no /etc/cron.d) que deseja enviar apenas para você, pode evitar a caixa de correio ou o endereço de encaminhamento de raiz do spam.
fonte
Eu acho que uma razão para isso pode ser que o diretório / home / esteja criptografado e, quando o usuário estiver desconectado, o cron não poderá fazer nada nesse diretório.
consulte: https://stackoverflow.com/a/40354269/1279002
fonte