OS X에서 크론 조치 로그


46

OS X과 함께 제공되는 cron은 어디에서나 작업을 기록합니까?

특정 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)

이것은 작업이 실행 된 시간, 사용자가 크론 탭을 보거나 편집 할 때 등을 보여줍니다.이 항목은 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에서 테스트 및 작업


와우, 훨씬 간단 해 공감하십시오. 이것이 Snow Leopard에서 효과가 있었는지 궁금합니다.
더그 해리스

2
Mavericks
Clustermagnet

1
요세미티에서 작동
nickcoxdotme

스노우 레오파드 (Snow Leopard)에 대한 작품, 10.6.8 (예, 난 골동품 ...)
다니엘 Griscom

2
/System/Library/LaunchDaemons/com.apple.syslogd.plist : 시스템 무결성 보호 (10.13.2 High Sierra)가 실행되는 동안에는 작업이 허용되지 않습니다. SIP를 비활성화해야합니까? 감사!
Shane Lu

12

각 작업을 시작된 작업으로 전환하지 않고 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시작된 작업 활동 로깅을 추가합니다 . 또한 defaultError /var/log/cron.log대신에 StandardErrorPath를 작성했습니다 /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) 대신에 launchd를 사용하는 경향이 있으므로 cron에 기록 할 내용이 없을 수도 있습니다.

launchctl을 사용하여 실행 된 로깅 레벨을 제어하십시오. Som 로그 정보는 system.log에 나타나지만 콘솔 앱에는 더 있습니다-> 모든 메시지


5
흠, 발사로 전환하는 것은 내가 고려할 수있는 일이지만 나는 심술 old은 오래된 유닉스 사용자입니다. 나는 그 링크를 따랐다. 이 페이지의 예제는 24 개의 crontab 문자를 대체하기 위해 길이가 1046 바이트 0 0 7 11 0 happybirthday입니다.
Doug Harris

-1

적어도 요세미티에서는 cron이 출력을 mail메시지 로 기록 하므로를 사용하여 mail읽습니다.


cron메일을 통해 작업 소유자에게 (재전송되지 않은) 출력을 보냅니다. 모든 출력이 리디렉션되면 메일이 전송되지 않습니다. (메시지를 보낸 경우에도 실행 된 명령을 표시하는지 잘 모르겠습니다.) 질문은 관리자 cron가 수행 한 모든 명령을 어떻게 볼 수 있는지 묻는 것 입니다. 답을 사용하려면 모든 사람의 메일 파일을보아야합니다.
G-Man, 'Reinstate Monica'라고
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.