Où se trouve le fichier journal cron dans MacOSX Lion?
25
Je souhaite dépanner un travail cron qui a bien fonctionné jusqu'à une modification récente, mais je ne trouve pas le fichier journal cron, où se trouve-t-il?
Est-ce vraiment un travail cron ou utilisez-vous launchd. Cron est obsolète sur OS X.
jaberg le
1
Avez-vous défini un fichier journal pour le travail cron?
daviesgeek
c'est en fait un crontravail avec lequel je l'ai créé cron -eet que je peux voir cron -let je suis sûr que cela a fonctionné sur Lion et avant cela sur Snow Leopard pendant longtemps.
Ali
et non, je ne configure pas manuellement un fichier journal pour «cron» lui-même, bien que j'écrive dans un fichier journal à l'intérieur du travail, qui a récemment cessé de fonctionner après avoir modifié quelque chose.
Ali
2
Ali, puisque tu as la réponse, poste-la comme réponse et accepte-la. Ne le modifiez pas dans la question. Vous n'êtes pas seulement autorisé, mais encouragé, à répondre à votre propre question.
Jason Salaz
Réponses:
30
Par défaut, cron ne consigne pas la sortie des travaux exécutés. Il est possible de consigner le fait que des cronjobs ont été exécutés, mais ce n'est pas le cas par défaut sous OS X non plus.
Afin d'examiner le résultat de l'exécution de cronjob, je suggère de modifier votre ligne cronjob pour rediriger STDOUT et STDERR vers des fichiers journaux. Dans votre fichier crontab ou après avoir été exécuté crontab -e, peu importe la façon dont vous vous y prenez, ajoutez le code suivant à votre ligne de travail:
Cela devrait envoyer STDOUT (la sortie normalement imprimée ou en écho à STDOUT) dans un fichier texte nommé stdout.log dans le répertoire / tmp et STDERR dans stderr.log dans le répertoire temporaire. De nombreux utilitaires utilisent STDERR pour imprimer des messages d'erreur spéciaux lorsqu'il s'agit d'erreurs d'application et non d'erreurs générées par l'exécution réelle du programme. (Vous pouvez en savoir plus sur STDERR sur Wikipedia.)
Merci, c’est exactement ce que j’essaie de faire, il semble que, cronpour une raison quelconque, n’exécute pas le travail en premier lieu. si je lance le travail moi-même en tapant la commande dans le terminal, il s'exécute et sort dans le fichier journal, mais si j'attends cronqu'il soit exécuté, rien ne se passe, du moins aucun changement dans le fichier journal, je pensais peut-être à un "fichier journal cron" "ou il y avait des traces dans la console qui pourraient m'aider à comprendre ce qui se passait, récemment, j'ai changé ma coque de bash en zsh mais je ne pense pas que cela aurait pu affecter cela non plus.
Ali
1
Selon erikslab.com/2011/02/04/logging-with-launchd , vous pouvez modifier le plon cron ( /System/Library/LaunchDaemons/com.vix.cron.plist) avec un chemin Stdout / Stderr pour déboguer le cron lui-même. Je ne me souviens pas si launchctl unloadING et launchctl loading la plist suffit, ou car il est un démon système si vous devez redémarrer entièrement. Je suggérerais ce dernier juste pour être sûr.
Jason Salaz
20
Il est beaucoup plus facile d'ajouter simplement ce qui suit /etc/syslog.conf:
J'aime cette idée - mais dans 10.10.5, ma /etc/syslog.confdit # Note that flat file logs are now configured in /etc/asl.conf. Ce fichier a une syntaxe différente, je ne vois pas comment configurer sa connexion.
Ken Williams
@ KenWilliams même s'il est dit cela, syslog.conf fonctionne toujours, sur High Sierra.
Fish Monitor
14
Par défaut, la "journalisation" n'est pas activée. Mais vous pouvez obtenir des informations utiles en exécutant la mailcommande.
TL; DR sur la mailcommande: appuyez sur Entrée pour lire les messages, puis sur qEntrée pour quitter.
C'est un mail d'erreur stocké dans la boite aux lettres deuser
nohillside
@patrix, j'ai réussi à trouver du succès dans le travail cron également. Mise à jour de la réponse.
Vineeth
Agréable! Devrait être la réponse acceptée!
Trollhorn
3
En fait, quand cron exécute le travail (comme moi), /usr/local/binn’est pas dans le fichier PATH.
J'ai trouvé cela par essais et erreurs et en construisant le travail à partir de choses simples à partir desquelles je savais que cela fonctionnerait, et en ajoutant progressivement des choses jusqu'à ce que je trouve le problème.
À propos des autres suggestions et réponses:
Pour une raison quelconque (du moins sur ma machine, qui exécute un Lion mis à niveau à partir de SnowLeopard), cronn’utilise pas les paramètres spécifiés dans les fichiers plist launchddestinés à être lus /System/Library/LaunchDaemons/com.vix.cron.plistou peut-être que cron sur Lion n’écrit rien. à stdout ou stderr.
En passant, j'utilise http://s3tools.org/s3cmd dans syncun dossier avec un compartiment Amazon S3 comme sauvegarde (comme une DropBox primitive).
cron
travail avec lequel je l'ai créécron -e
et que je peux voircron -l
et je suis sûr que cela a fonctionné sur Lion et avant cela sur Snow Leopard pendant longtemps.Réponses:
Par défaut, cron ne consigne pas la sortie des travaux exécutés. Il est possible de consigner le fait que des cronjobs ont été exécutés, mais ce n'est pas le cas par défaut sous OS X non plus.
Afin d'examiner le résultat de l'exécution de cronjob, je suggère de modifier votre ligne cronjob pour rediriger STDOUT et STDERR vers des fichiers journaux. Dans votre fichier crontab ou après avoir été exécuté
crontab -e
, peu importe la façon dont vous vous y prenez, ajoutez le code suivant à votre ligne de travail:0 0 * * * yourcommand >/tmp/stdout.log 2>/tmp/stderr.log
Cela devrait envoyer STDOUT (la sortie normalement imprimée ou en écho à STDOUT) dans un fichier texte nommé stdout.log dans le répertoire / tmp et STDERR dans stderr.log dans le répertoire temporaire. De nombreux utilitaires utilisent STDERR pour imprimer des messages d'erreur spéciaux lorsqu'il s'agit d'erreurs d'application et non d'erreurs générées par l'exécution réelle du programme. (Vous pouvez en savoir plus sur STDERR sur Wikipedia.)
la source
cron
pour une raison quelconque, n’exécute pas le travail en premier lieu. si je lance le travail moi-même en tapant la commande dans le terminal, il s'exécute et sort dans le fichier journal, mais si j'attendscron
qu'il soit exécuté, rien ne se passe, du moins aucun changement dans le fichier journal, je pensais peut-être à un "fichier journal cron" "ou il y avait des traces dans la console qui pourraient m'aider à comprendre ce qui se passait, récemment, j'ai changé ma coque de bash en zsh mais je ne pense pas que cela aurait pu affecter cela non plus./System/Library/LaunchDaemons/com.vix.cron.plist
) avec un chemin Stdout / Stderr pour déboguer le cron lui-même. Je ne me souviens pas silaunchctl unload
ING etlaunchctl load
ing la plist suffit, ou car il est un démon système si vous devez redémarrer entièrement. Je suggérerais ce dernier juste pour être sûr.Il est beaucoup plus facile d'ajouter simplement ce qui suit
/etc/syslog.conf
:Puis redémarrez syslog
Testé et fonctionnant sous OSX 10.7.4
la source
/etc/syslog.conf
dit# Note that flat file logs are now configured in /etc/asl.conf
. Ce fichier a une syntaxe différente, je ne vois pas comment configurer sa connexion.Par défaut, la "journalisation" n'est pas activée. Mais vous pouvez obtenir des informations utiles en exécutant la
mail
commande.TL; DR sur la
mail
commande: appuyez sur Entrée pour lire les messages, puis surq
Entrée pour quitter.la source
J'ai pu trouver le journal de travail cron,
Voici un journal de travail périodique que j'ai obtenu pour l'exécution d'une commande AWS CLI,
la source
user
En fait, quand cron exécute le travail (comme moi),
/usr/local/bin
n’est pas dans le fichierPATH
.J'ai trouvé cela par essais et erreurs et en construisant le travail à partir de choses simples à partir desquelles je savais que cela fonctionnerait, et en ajoutant progressivement des choses jusqu'à ce que je trouve le problème.
À propos des autres suggestions et réponses:
Pour une raison quelconque (du moins sur ma machine, qui exécute un Lion mis à niveau à partir de SnowLeopard),
cron
n’utilise pas les paramètres spécifiés dans les fichiers plistlaunchd
destinés à être lus/System/Library/LaunchDaemons/com.vix.cron.plist
ou peut-être que cron sur Lion n’écrit rien. à stdout ou stderr.En passant, j'utilise http://s3tools.org/s3cmd dans
sync
un dossier avec un compartiment Amazon S3 comme sauvegarde (comme une DropBox primitive).la source