É realmente um trabalho cron ou você está usando o launchd. O Cron foi descontinuado no OS X.
jaberg 31/01
1
Você definiu um arquivo de log para o trabalho cron?
precisa saber é o seguinte
na verdade, é um crontrabalho que eu configurei cron -ee posso vê-lo, cron -le tenho certeza de que funcionou no Lion e, antes disso, no Snow leopard por um longo tempo.
Ali
e não, não defino manualmente um arquivo de log para o 'cron', apesar de gravar em um arquivo de log dentro do trabalho e ele parou de funcionar recentemente depois de alterar alguma coisa.
Ali
2
Ali, como você tem a resposta, poste-a como resposta e aceite-a. Não o edite na pergunta. Você não apenas pode, mas é incentivado, a responder sua própria pergunta.
Jason Salaz
Respostas:
30
Por padrão, o cron não registra a saída dos trabalhos executados. É possível registrar o fato de que os cronjobs foram executados, mas esse também não é o padrão no OS X.
Para investigar a saída da execução do cronjob, sugiro modificar sua linha do cronjob para redirecionar STDOUT e STDERR para arquivos de log. No seu arquivo crontab ou após a execução crontab -e, não importa o que você faça, adicione algo como o seguinte à sua linha de trabalho:
Isso deve enviar STDOUT (saída normalmente impressa ou com eco para STDOUT) para um arquivo de texto chamado stdout.log no diretório / tmp e STDERR para stderr.log no diretório temp. Muitos utilitários usam o STDERR para imprimir mensagens de erro especiais quando são erros de aplicativos, e não erros gerados pela execução real do programa. (Você pode ler mais sobre STDERR na Wikipedia.)
Obrigado, é exatamente isso que tenho tentado fazer, parece que, cronpor algum motivo, não consegue executar o trabalho em primeiro lugar. se eu mesmo executar o trabalho digitando o comando no terminal em que ele é executado e crongerar o arquivo de log, mas se eu aguardar a execução, nada acontecerá, pelo menos nenhuma alteração no arquivo de log, pensei em talvez um "arquivo de log cron "ou havia algum vestígio no console que poderia me ajudar a descobrir o que está acontecendo, recentemente mudei meu shell do bash para o zsh, mas acho que isso não poderia ter afetado isso.
Ali
1
De acordo com erikslab.com/2011/02/04/logging-with-launchd , você pode modificar o cron plist ( /System/Library/LaunchDaemons/com.vix.cron.plist) com um caminho Stdout / Stderr para depurar o próprio cron. Não me lembro se launchctl unloading e launchctl loading o plist são suficientes ou, já que é um daemon do sistema, se você precisar reiniciar completamente. Eu sugiro o último apenas para ter certeza.
Jason Salaz
20
Muito mais fácil simplesmente adicionar o seguinte a /etc/syslog.conf:
Eu gosto dessa idéia - mas na versão 10.10.5, /etc/syslog.confdiz o meu # Note that flat file logs are now configured in /etc/asl.conf. Esse arquivo tem uma sintaxe diferente, não está claro para mim como configurar o logon nele.
Ken Williams
@KenWilliams, mesmo que seja o que diz, syslog.conf ainda funciona, em High Sierra.
Fish Monitor
14
Por padrão, "log" não está ativado. Mas você pode obter algumas informações úteis executando o mailcomando
TL; DR no mailcomando: pressione enter para ler as mensagens e, em seguida, qpressione enter para sair.
Esse é um email de erro armazenado na caixa de correio deuser
nohillside
@patrix, eu também consegui encontrar um trabalho cron de sucesso. Atualizado a resposta.
Vineeth
Agradável! Deve ser a resposta aceita!
Trollhorn 04/07
3
Acabou quando cron está executando o trabalho (como eu), /usr/local/binnão está no PATH.
Encontrei isso por tentativa e erro e desenvolvendo o trabalho do zero a partir de coisas simples que eu sabia que funcionariam e gradualmente adicionei coisas até encontrar o problema.
Sobre as outras sugestões e respostas:
Por alguma razão (pelo menos na minha máquina, que está executando um Lion atualizado a partir do SnowLeopard) cronnão usa os parâmetros especificados nos arquivos plist que launchddevem ler /System/Library/LaunchDaemons/com.vix.cron.plistou talvez o cron no Lion não escreva nada para stdout ou stderr.
A propósito, estou usando http://s3tools.org/s3cmd em syncuma pasta com um bucket do Amazon S3 como backup (como um DropBox primitivo).
cron
trabalho que eu configureicron -e
e posso vê-lo,cron -l
e tenho certeza de que funcionou no Lion e, antes disso, no Snow leopard por um longo tempo.Respostas:
Por padrão, o cron não registra a saída dos trabalhos executados. É possível registrar o fato de que os cronjobs foram executados, mas esse também não é o padrão no OS X.
Para investigar a saída da execução do cronjob, sugiro modificar sua linha do cronjob para redirecionar STDOUT e STDERR para arquivos de log. No seu arquivo crontab ou após a execução
crontab -e
, não importa o que você faça, adicione algo como o seguinte à sua linha de trabalho:0 0 * * * yourcommand >/tmp/stdout.log 2>/tmp/stderr.log
Isso deve enviar STDOUT (saída normalmente impressa ou com eco para STDOUT) para um arquivo de texto chamado stdout.log no diretório / tmp e STDERR para stderr.log no diretório temp. Muitos utilitários usam o STDERR para imprimir mensagens de erro especiais quando são erros de aplicativos, e não erros gerados pela execução real do programa. (Você pode ler mais sobre STDERR na Wikipedia.)
fonte
cron
por algum motivo, não consegue executar o trabalho em primeiro lugar. se eu mesmo executar o trabalho digitando o comando no terminal em que ele é executado ecron
gerar o arquivo de log, mas se eu aguardar a execução, nada acontecerá, pelo menos nenhuma alteração no arquivo de log, pensei em talvez um "arquivo de log cron "ou havia algum vestígio no console que poderia me ajudar a descobrir o que está acontecendo, recentemente mudei meu shell do bash para o zsh, mas acho que isso não poderia ter afetado isso./System/Library/LaunchDaemons/com.vix.cron.plist
) com um caminho Stdout / Stderr para depurar o próprio cron. Não me lembro selaunchctl unload
ing elaunchctl load
ing o plist são suficientes ou, já que é um daemon do sistema, se você precisar reiniciar completamente. Eu sugiro o último apenas para ter certeza.Muito mais fácil simplesmente adicionar o seguinte a
/etc/syslog.conf
:Em seguida, reinicie o syslog
Testado e funcionando no OSX 10.7.4
fonte
/etc/syslog.conf
diz o meu# Note that flat file logs are now configured in /etc/asl.conf
. Esse arquivo tem uma sintaxe diferente, não está claro para mim como configurar o logon nele.Por padrão, "log" não está ativado. Mas você pode obter algumas informações úteis executando o
mail
comandoTL; DR no
mail
comando: pressione enter para ler as mensagens e, em seguida,q
pressione enter para sair.fonte
Consegui encontrar o log do cron-job,
A seguir, é apresentado um log de tarefa agendada para executar um comando da AWS CLI,
fonte
user
Acabou quando cron está executando o trabalho (como eu),
/usr/local/bin
não está noPATH
.Encontrei isso por tentativa e erro e desenvolvendo o trabalho do zero a partir de coisas simples que eu sabia que funcionariam e gradualmente adicionei coisas até encontrar o problema.
Sobre as outras sugestões e respostas:
Por alguma razão (pelo menos na minha máquina, que está executando um Lion atualizado a partir do SnowLeopard)
cron
não usa os parâmetros especificados nos arquivos plist quelaunchd
devem ler/System/Library/LaunchDaemons/com.vix.cron.plist
ou talvez o cron no Lion não escreva nada para stdout ou stderr.A propósito, estou usando http://s3tools.org/s3cmd em
sync
uma pasta com um bucket do Amazon S3 como backup (como um DropBox primitivo).fonte