OS X'te cron eylemlerinin günlüğü


46

OS X ile gelen cron eylemlerini herhangi bir yere kaydediyor mu?

Belirli bir cron işinin çıktısını aramıyorum, fakat cron'un ne yaptığına dair bir kayıt tutuyorum. Kontrol ettiğim birkaç linux makinesinde /var/log/cron, içeriği şöyle:

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)

Bu işler ne zaman çalışır, kullanıcılar crontabları görüntülediğinde veya düzenlediğinde gösterir. Bu şey Snow Leopard makinemde bulduğum bir yer değil.

Yanıtlar:


49

Aşağıdakini /etc/syslog.conf dosyasına eklemek çok daha kolay:

cron.*      /var/log/cron.log

Ardından syslog'u yeniden başlatın

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

OSX 10.7.4'te test edildi ve çalışıyor


Vay, çok daha basit. Olumlu bir oy ver. Acaba Snow Leopard'da işe yarayabilir mi?
Doug Harris

2
Mavericks Üzerinde Çalışıyor
Clustermagnet

1
Yosemite üzerinde çalışıyor
nickcoxdotme

Snow Leopard üzerinde çalışır, 10.6.8 (evet, ben bir antikayım ...)
Daniel Griscom

2
/System/Library/LaunchDaemons/com.apple.syslogd.plist: Sistem Bütünlüğü Koruması devreye girdiğinde çalışmaya izin verilmez (10.13.2 Yüksek Sierra). SIP'yi devre dışı bırakmak zorunda mıyım? Teşekkürler!
Shane Lu,

12

Her birinin işini başlatmaya geçmeden cron iş aktivitemi nasıl günlüğe kaydedeceğimi düşündüm.

Cron adam sayfası bahseder -xsağlayan seçenekleri "standart çıkışa hata ayıklama bilgileri yazma." Bunun bir yan etkisi, bunların standart hataya temel bilgiler yazmasıdır. Standart hataya gönderilen veriler yazılır /var/log/system.log.

Bu, şöyle yazılan verilerle sonuçlanır /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 lansmanla başlatıldığından, bunu etkinleştirmek /System/Library/LaunchDaemons/com.vix.cron.plistiçin şimdi göründüğü şekilde düzenlemek zorunda kaldım :

<?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 miscBurada kullandım , ama hangi seçenekleri kullandığım önemli değildi. Ekleme -xiş aktivitesi günlüğüne başladı. Ayrıca StandardErrorPath'i /var/log/cron.logvarsayılan yerine yazmak üzere de ekledim /var/log/system.log.

Ve sonra bunu kaldırın ve yeniden yükleyin:

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

1

OSX şimdi cron yerine fırlatma işlevini kullanıyor - Apple dev doc - yani cron'da kaydedilecek bir şey olmayabilir.

Başlatmanın günlük seviyesini kontrol etmek için launchctl komutunu kullanın. System.log dosyasında bir som günlük bilgisi görünür, ancak konsol uygulamasında daha fazlası -> Tüm mesajlar


5
Hmmm, lansmana geçmek düşünebileceğim bir şey ama ben huysuz yaşlı bir Unix kullanıcısıyım. Bu bağlantıyı takip ettim. Bu sayfadaki örnek, 24 karakter crontab'ın yerini almak üzere 1046 bayttır 0 0 7 11 0 happybirthday.
Doug Harris

-1

En azından Yosemite'de cron çıktı olarak mailmesaj günlüğü kaydeder , bu yüzden mailonları okumak için kullanın .


cronişin sahibine posta yoluyla (aksi halde yeniden yönlendirilmemiş) çıktı gönderir. Tüm çıktılar yeniden yönlendirilirse posta gönderilmez. (Bir mesaj gönderilse bile, yürütülen komutu gösterip göstermediğinden emin değilim.) Soru, yöneticinin yapılan tüm komutları nasıl görebileceğini soruyor cron. Cevabınızı kullanmak için, bir kişinin herkesin posta dosyasına bakması gerekir.
G-Man 'Monica'yı Yeniden Girin' diyor
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.