Журнал дій cron на OS X


46

Чи реєструє хрон, що поставляється з OS X, свої дії де завгодно?

Я не шукаю випуску якоїсь конкретної роботи з cron, а скоріше журнал того, що робить cron. На декількох машинах Linux, які я перевірив, є такий /var/log/cronвміст, як:

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)

Це показує, коли виконувались робочі місця, коли користувачі переглядали чи редагували кронштейни тощо. Цього матеріалу я ніде не знайшов на своїй машині Snow Leopard.

Відповіді:


49

Набагато простіше просто додати таке /etc/syslog.conf:

cron.*      /var/log/cron.log

Потім перезапустіть syslog

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

Випробуваний та працює на OSX 10.7.4


Нічого собі, набагато простіше. Майте нагороду. Цікаво, якби це працювало на Сніжному Леопарді.
Дуг Харріс

2
Працює над Mavericks
Clustermagnet

1
Працює над Yosemite
nickcoxdotme

Працює над Snow Leopard, 10.6.8 (так, я антиквар ...)
Daniel Griscom

2
/System/Library/LaunchDaemons/com.apple.syslogd.plist: Операція заборонена, коли захищено цілісність системи (10.13.2 Висока Сьєрра). Чи потрібно вимкнути SIP? Дякую!
Шейн Лу

12

Я подумав, як зареєструвати свою роботу з кроном, не перемикаючи кожен на запуск завдань.

Сторінка man cron згадує -xпараметри, які дозволяють "записувати інформацію про налагодження на стандартний вихід". Побічним ефектом цього є те, що вони також записують основну інформацію до стандартної помилки. Дані, надіслані до стандартної помилки, записуються в /var/log/system.log.

Це призводить до того, що такі дані записуються на /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)

Оскільки сам cron запускається при запуску, щоб увімкнути це, мені довелося відредагувати /System/Library/LaunchDaemons/com.vix.cron.plistтак, щоб він виглядав так:

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

Я використовував -x miscтут, але, здавалося, неважливо, які варіанти я використовував. Додавання -xрозпочатої реєстрації робочої діяльності. Я також додав StandardErrorPath для запису, /var/log/cron.logа не за замовчуванням /var/log/system.log.

А потім вивантажте та перезавантажте це:

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

1

OSX тепер має тенденцію використовувати запуск, а не cron - Apple dev doc - так що, можливо, у кроні немає нічого для реєстрації.

Використовуйте startctl для контролю рівня реєстрації запуску. Інформація про журнал Сома відображається в system.log, але більше в додатку консолі -> Усі повідомлення


5
Гммм, перехід на запуск - це те, що я міг би розглянути, але я старий юрський користувач Unix. Я перейшов за цим посиланням. Приклад на цій сторінці становить 1046 байт, щоб замінити 24 символи crontab 0 0 7 11 0 happybirthday.
Даг Харріс

-1

Принаймні, на Yosemite, cron реєструє вихідні дані як mailповідомлення, тому використовуйте mailдля їх читання.


cronнадсилає (інакше не перенаправлений) вихід власнику роботи поштою. Якщо весь вихід буде переспрямовано, пошта не надсилається. (Навіть якщо повідомлення надіслане, я не впевнений, чи відображається команда, яка була виконана.) Питання полягає в тому, як адміністратор може бачити всі команди, які cronвиконував. Щоб скористатися вашою відповіддю, людині доведеться переглянути файл пошти кожного.
G-Man каже: "Відновіть Моніку"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.