บันทึกการทำงาน cron บน OS X


46

cron ที่มาพร้อมกับ OS X บันทึกการทำงานของมันทุกที่หรือไม่?

ฉันไม่ได้มองหาผลลัพธ์ของงาน cron ใด ๆ โดยเฉพาะ แต่ควรบันทึกสิ่งที่ cron กำลังทำอยู่ ในลินุกซ์สองเครื่องที่ฉันตรวจสอบมี/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)

สิ่งนี้แสดงเมื่องานวิ่งเมื่อผู้ใช้ดูหรือแก้ไข crontabs ฯลฯ สิ่งนี้ไม่มีที่ใดที่ฉันพบบนเครื่อง 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


ว้าวง่ายกว่ามาก มี upvote ฉันสงสัยว่าสิ่งนี้จะใช้ได้กับ Snow Leopard หรือไม่
Doug Harris

2
ทำงานกับ Mavericks
Clustermagnet

1
ใช้งานได้กับ Yosemite
nickcoxdotme

ใช้งานได้กับ Snow Leopard, 10.6.8 (ใช่ฉันเป็นของโบราณ ... )
Daniel Griscom

2
/System/Library/LaunchDaemons/com.apple.syslogd.plist: ไม่อนุญาตให้ใช้การดำเนินการในขณะที่มีการป้องกันความถูกต้องของระบบ (10.13.2 High Sierra) ฉันต้องปิดการใช้งาน SIP หรือไม่ ขอบคุณ!
เชนลู

12

ฉันหาวิธีบันทึกกิจกรรม cron ของฉันโดยไม่สลับแต่ละงานเพื่อเริ่มงาน

หน้าคน 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 นั้นเปิดตัวโดย launchd เพื่อเปิดใช้งานนี้ฉันจึงต้องแก้ไข/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 มีแนวโน้มที่จะใช้ launchd มากกว่า cron - Apple dev doc - ดังนั้นจึงอาจไม่มีการบันทึก cron

ใช้ launchctl เพื่อควบคุมระดับการบันทึกของ launchd ข้อมูลบันทึกส้มปรากฏขึ้นใน system.log แต่มากกว่านั้นในแอพคอนโซล -> ข้อความทั้งหมด


5
อืมการเปลี่ยนไปใช้ launchd เป็นสิ่งที่ฉันสามารถพิจารณาได้ แต่ฉันเป็นผู้ใช้ unix เก่าที่ไม่พอใจ ฉันติดตามลิงก์นั้น ตัวอย่างในหน้านั้นคือ 1046 ไบต์นานในการเปลี่ยน 24 ตัวอักษรของ 0 0 7 11 0 happybirthdaycrontab
Doug Harris

-1

อย่างน้อยใน Yosemite cron จะบันทึกเอาต์พุตเป็นmailข้อความดังนั้นให้ใช้mailเพื่ออ่าน


cronส่งเอาต์พุต (ไม่ได้เปลี่ยนทิศทาง) ไปยังเจ้าของงานผ่านเมล หากเอาต์พุตทั้งหมดถูกเปลี่ยนทิศทางจะไม่มีการส่งเมล (แม้ว่าจะมีการส่งข้อความฉันไม่แน่ใจว่าจะแสดงคำสั่งที่เรียกใช้หรือไม่) คำถามจะถามว่าผู้ดูแลระบบสามารถดูคำสั่งทั้งหมดที่cronดำเนินการได้หรือไม่ ในการใช้คำตอบของคุณบุคคลนั้นจะต้องดูไฟล์เมลของทุกคน
G-Man กล่าวว่า 'Reinstate Monica'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.