Nhật ký hành động cron trên OS X


46

Liệu cron đi kèm với OS X có ghi lại hành động của nó ở bất cứ đâu không?

Tôi không tìm kiếm đầu ra của bất kỳ công việc cron cụ thể nào, mà là nhật ký của những gì cron đang làm. Trên một vài máy linux tôi đã kiểm tra, có những /var/log/cronnội dung như:

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)

Điều này hiển thị khi công việc chạy, khi người dùng xem hoặc chỉnh sửa crontabs, v.v. Công cụ này không có ở đâu trên máy Snow Leopard của tôi.

Câu trả lời:


49

Dễ dàng hơn nhiều chỉ đơn giản là thêm phần sau vào /etc/syslog.conf:

cron.*      /var/log/cron.log

Sau đó khởi động lại syslog

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

Đã thử nghiệm và làm việc trên OSX 10.7.4


Wow, đơn giản hơn nhiều. Có một upvote. Tôi tự hỏi nếu điều này sẽ làm việc trên Snow Leopard.
Doug Harris

2
Hoạt động trên Mavericks
Clustermagnet

1
Hoạt động trên Yosemite
nickcoxdotme

Hoạt động trên Snow Leopard, 10.6.8 (vâng, tôi là đồ cổ ...)
Daniel Griscom

2
/System/L Library / LaunchDaemons / com.apple.syslogd.plist: Hoạt động không được phép trong khi Bảo vệ toàn vẹn hệ thống được tham gia (10.13.2 High Sierra). Tôi có phải tắt SIP không? Cảm ơn!
Shane Lu

12

Tôi đã tìm ra cách ghi nhật ký hoạt động công việc định kỳ của mình mà không chuyển đổi từng công việc sang các công việc khởi động.

Trang cron man đề cập đến -xcác tùy chọn cho phép "ghi thông tin gỡ lỗi vào đầu ra tiêu chuẩn." Một tác dụng phụ của việc này là chúng cũng ghi thông tin cơ bản vào lỗi tiêu chuẩn. Dữ liệu gửi đến lỗi tiêu chuẩn được ghi vào /var/log/system.log.

Điều này dẫn đến dữ liệu như thế này được ghi vào /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)

Vì bản thân cron được khởi chạy bởi launchd, để kích hoạt tính năng này, tôi đã phải chỉnh sửa /System/Library/LaunchDaemons/com.vix.cron.plistđể bây giờ nó trông giống như:

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

Tôi đã sử dụng -x miscở đây, nhưng dường như không quan trọng tôi đã sử dụng tùy chọn nào. Thêm việc -xbắt đầu đăng nhập của hoạt động công việc. Tôi cũng đã thêm StandardErrorPath để viết /var/log/cron.logthay vì mặc định /var/log/system.log.

Và sau đó dỡ và tải lại cái này:

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

1

OSX hiện có xu hướng sử dụng launchd thay vì cron - Apple dev doc - vì vậy có thể không có gì trong cron để đăng nhập.

Sử dụng launchctl để kiểm soát mức ghi nhật ký của launchd. Thông tin nhật ký Som xuất hiện trong system.log nhưng nhiều thông tin khác trong ứng dụng bảng điều khiển -> Tất cả tin nhắn


5
Hmmm, chuyển sang launchd là điều tôi có thể xem xét, nhưng tôi là một người dùng unix cũ khó chịu. Tôi theo liên kết đó. Ví dụ trên trang đó dài 1046 byte để thay thế 24 ký tự của crontab 0 0 7 11 0 happybirthday.
Doug Harris

-1

Ít nhất là trên Yosemite, cron ghi nhật ký đầu ra dưới dạng mailtin nhắn, vì vậy hãy sử dụng mailđể đọc chúng.


crongửi đầu ra (nếu không được chuyển hướng) cho chủ sở hữu của công việc qua thư. Nếu tất cả đầu ra được chuyển hướng, không có thư nào được gửi. (Ngay cả khi một tin nhắn được gửi, tôi không chắc liệu nó có hiển thị lệnh đã được thực thi hay không.) Câu hỏi là hỏi làm thế nào quản trị viên có thể thấy tất cả các lệnh cronđã thực hiện. Để sử dụng câu trả lời của bạn, một người sẽ phải xem tệp thư của mọi người.
G-Man nói 'Phục hồi Monica'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.