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?

Ali
la source
2
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:

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.)

Jason Salaz
la source
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:

cron.* /var/log/cron.log 

Puis redémarrez syslog

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist 
sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist 

Testé et fonctionnant sous OSX 10.7.4

Fraidoon Sarwary
la source
3
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.

William Entriken
la source
4
Très bien, merci. Le mien m'a montré qu'il y avait une commande non reconnue avec mon Cron. À votre santé!
Joshua Pinter
6

J'ai pu trouver le journal de travail cron,

/var/mail/{user-name}

Voici un journal de travail périodique que j'ai obtenu pour l'exécution d'une commande AWS CLI,

From [email protected]  Fri Mar  2 10:00:00 2018
Return-Path: <[email protected]>
X-Original-To: build
Delivered-To: [email protected]
Received: by BuildServer1.local (Postfix, from userid 501)
    id A7A94296CBA3; Fri,  2 Mar 2018 10:00:00 +0100 (CET)
From: [email protected] (Cron Daemon)
To: [email protected]
Subject: Cron <build@BuildServer1> /app/scripts/s3-sync.sh
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=build>
X-Cron-Env: <USER=build>
X-Cron-Env: <HOME=/Users/build>
Message-Id: <[email protected]>
Date: Fri,  2 Mar 2018 10:00:00 +0100 (CET)

upload: ../../app/logs/debug.log to s3://**my-s3***/app/logs/debug.log
Vigne
la source
1
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).

Ali
la source