Log das ações do cron no OS X

45

O cron que vem com o OS X registra suas ações em algum lugar?

Eu não estou procurando a saída de qualquer tarefa cron particular, mas sim o log do que o cron está fazendo. Em algumas máquinas linux que eu verifiquei, há /var/log/cron que tem conteúdo como:

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)

Isso mostra quando as tarefas foram executadas, quando os usuários visualizaram ou editaram crontabs, etc. Essas coisas não estão em nenhum lugar que eu encontrei na minha máquina do Snow Leopard.

    
por Doug Harris 26.04.2010 / 17:25

4 respostas

12

Eu percebi como registrar minha atividade de trabalho cron sem alternar cada um deles para os jobs do launchd.

A menciona -x opções que permitem "gravar informações de depuração no resultado padrão". Um efeito colateral disso é que eles também gravam informações básicas para erro padrão. Os dados enviados para o erro padrão são gravados em /var/log/system.log .

Isso resulta em dados como este sendo gravados em /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)

Como o próprio cron é iniciado pelo launchd, para ativar isso, eu tive que editar /System/Library/LaunchDaemons/com.vix.cron.plist para que agora parecesse:

<?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>

Eu usei -x misc aqui, mas não pareceu importar quais opções eu usei. A adição do -x iniciou o registro da atividade do job. Eu também adicionei o StandardErrorPath para gravar em /var/log/cron.log em vez do padrão /var/log/system.log .

E, em seguida, descarregue e recarregue isto:

$ sudo launchctl
Password:
launchd% unload /System/Library/LaunchDaemons/com.vix.cron.plist 
launchd% load /System/Library/LaunchDaemons/com.vix.cron.plist 
    
por 27.04.2010 / 20:27
48

Muito mais fácil simplesmente adicionar o seguinte ao /etc/syslog.conf:

cron.*      /var/log/cron.log

Em seguida, reinicie o syslog

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

Testado e trabalhando no OSX 10.7.4

    
por 15.05.2013 / 14:10
1

O OSX agora usa o launchd em vez do cron - doc de desenvolvimento da Apple - assim, pode ser que não haja nada no cron para registrar.

Use o launchctl para controlar o nível de log do launchd. Algumas informações de log aparecem no system.log, mas mais no aplicativo do console - > Todas as mensagens

    
por 26.04.2010 / 20:41
-1

Pelo menos no Yosemite, os registros do cron saem como mail messages, então use o mail para lê-los.

    
por 20.04.2015 / 22:37