Journal des actions cron sur OS X


46

Le cron fourni avec OS X enregistre-t-il ses actions n'importe où?

Je ne cherche pas la sortie d'un travail cron particulier, mais plutôt un journal de ce que fait cron. Sur quelques machines Linux que j'ai vérifiées, il y /var/log/crona des contenus comme:

Apr 26 11:00:01 localhost crond[27755]: (root) CMD (/root/bin/mysql-backup)
Apr 26 11:01:01 localhost crond[27892]: (root) CMD (run-parts /etc/cron.hourly)
Apr 26 11:07:01 localhost crond[28138]: (root) CMD (/usr/local/bin/python /home/
user1/scripts/pythonscript.py)
Apr 26 11:18:18 localhost crontab[28921]: (user2) LIST (user2)
Apr 26 11:18:22 localhost crontab[28929]: (user2) BEGIN EDIT (user2)
Apr 26 11:18:59 localhost crontab[28929]: (user2) REPLACE (user2)

Cela indique le moment où les tâches ont été exécutées, les utilisateurs qui ont visualisé ou édité des crontabs, etc. Ces informations ne figurent nulle part ailleurs sur ma machine Snow Leopard.

Réponses:


49

Il est beaucoup plus facile d'ajouter simplement ce qui suit dans /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


Wow, beaucoup plus simple. Avoir un vote positif. Je me demande si cela aurait fonctionné sur Snow Leopard.
Doug Harris

2
Fonctionne sur Mavericks
Clustermagnet

1
Fonctionne sur Yosemite
nickcoxdotme

Travaux sur Snow Leopard, 10.6.8 (oui, je suis une antiquité ...)
Daniel Griscom

2
/System/Library/LaunchDaemons/com.apple.syslogd.plist: opération interdite lorsque la protection de l'intégrité du système est activée (10.13.2 High Sierra). Dois-je désactiver SIP? Merci!
Shane Lu

12

Je lui ai expliqué comment enregistrer l'activité de mon travail cron sans basculer chacun vers un travail launchd.

La page de manuel cron mentionne des -xoptions permettant "l'écriture d'informations de débogage sur la sortie standard". Un effet secondaire de ceci est que ceux-ci écrivent également des informations de base en erreur standard. Les données envoyées à l'erreur standard sont écrites dans /var/log/system.log.

Cela se traduit par des données comme celle-ci écrites dans /var/log/system.log:

debug flags enabled: misc
[42073] cron started
log_it: (user1 42084) CMD (/root/bin/mysql-backup)
log_it: (user1 42094) CMD (run-parts /etc/cron.hourly)

Puisque cron lui-même est lancé par launchd, pour l'activer, j'ai dû éditer /System/Library/LaunchDaemons/com.vix.cron.plistpour qu'il ressemble maintenant à:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.vix.cron</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/sbin/cron</string>
        <string>-x</string>
        <string>misc</string>
    </array>
    <key>KeepAlive</key>
    <dict>
        <key>PathState</key>
        <dict>
            <key>/etc/crontab</key>
            <true/>
        </dict>
    </dict>
    <key>QueueDirectories</key>
    <array>
        <string>/usr/lib/cron/tabs</string>
    </array>
    <key>EnableTransactions</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>/var/log/cron.log</string>
</dict>
</plist>

J'ai utilisé -x miscici, mais peu importe les options que j'ai utilisées. L'ajout de -xcommencé l'enregistrement de l'activité du travail. J'ai également ajouté StandardErrorPath pour écrire à la /var/log/cron.logplace de la valeur par défaut /var/log/system.log.

Et puis déchargez et rechargez ceci:

$ sudo launchctl
Password:
launchd% unload /System/Library/LaunchDaemons/com.vix.cron.plist 
launchd% load /System/Library/LaunchDaemons/com.vix.cron.plist 

1

OSX a maintenant tendance à utiliser launchd plutôt que cron - Apple dev doc - donc il se peut qu'il n'y ait rien dans cron à consigner.

Utilisez launchctl pour contrôler le niveau de journalisation de launchd. Les informations de journalisation du fichier Som apparaissent dans system.log, mais davantage dans l'application console -> Tous les messages


5
Hmmm, je pourrais envisager de passer à launchd, mais je suis un vieil utilisateur unix grincheux. J'ai suivi ce lien. L'exemple de cette page comporte 1046 octets pour remplacer 24 caractères de crontab 0 0 7 11 0 happybirthday.
Doug Harris

-1

Au moins sur Yosemite, cron enregistre les sorties sous forme de mailmessages, utilisez-les mailpour les lire.


cronenvoie la sortie (sinon non redirigée) au propriétaire du travail par courrier électronique. Si toutes les sorties sont redirigées, aucun courrier n'est envoyé. (Même si un message est envoyé, je ne sais pas s'il indique la commande qui a été exécutée.) La question est de savoir comment l'administrateur peut voir toutes les commandes cronexécutées. Pour utiliser votre réponse, une personne devrait consulter le fichier courrier de tout le monde.
G-Man dit 'Réintégrez Monica' le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.