ไฟล์บันทึก cron ใน MacOSX Lion อยู่ที่ไหน


25

ฉันต้องการแก้ไขปัญหา cron ที่ทำงานได้ดีจนกระทั่งมีการแก้ไขล่าสุด แต่ฉันหาไฟล์บันทึก cron ไม่พบ


2
มันเป็นงาน cron หรือคุณใช้ launchd Cron เลิกใช้แล้วใน OS X.
jaberg

1
คุณตั้งค่าล็อกไฟล์สำหรับงาน cron หรือไม่
daviesgeek

มันเป็นcronงานที่ฉันตั้งไว้cron -eและฉันสามารถเห็นมันด้วยcron -lและฉันแน่ใจว่ามันใช้ได้กับ Lion และก่อนหน้านั้นบน Snow Leopard เป็นเวลานาน
Ali

และไม่ฉันไม่ได้ตั้งค่าไฟล์บันทึกด้วยตนเองสำหรับ 'cron' เองแม้ว่าฉันจะเขียนไปยังไฟล์บันทึกภายในงานและมันหยุดทำงานเมื่อไม่นานมานี้หลังจากฉันเปลี่ยนบางสิ่ง
Ali

2
อาลีเนื่องจากคุณมีคำตอบโปรดโพสต์มันเป็นคำตอบและยอมรับมัน อย่าแก้ไขเป็นคำถาม คุณไม่เพียงได้รับอนุญาต แต่ได้รับการสนับสนุนให้ตอบคำถามของคุณเอง
Jason Salaz

คำตอบ:


30

โดยค่าเริ่มต้น cron จะไม่บันทึกผลลัพธ์ของงานที่ดำเนินการ เป็นไปได้ที่จะบันทึกความจริงที่ว่า cronjobs ได้ถูกดำเนินการแล้ว แต่นั่นไม่ใช่ค่าเริ่มต้นบน OS X เช่นกัน

เพื่อตรวจสอบเอาต์พุตการประมวลผล cronjob ฉันขอแนะนำให้แก้ไขบรรทัด cronjob ของคุณเพื่อเปลี่ยนเส้นทาง STDOUT และ STDERR ไปยัง logfiles ในไฟล์ crontab ของคุณหรือหลังการรันcrontab -eอย่างไรก็ตามคุณสามารถเพิ่มสิ่งต่อไปนี้ในสายงานของคุณ:

0 0 * * * yourcommand >/tmp/stdout.log 2>/tmp/stderr.log

การทำเช่นนี้ควรส่ง STDOUT (โดยปกติแล้วพิมพ์หรือ echo'ed เอาต์พุตไปยัง STDOUT) ไปยังไฟล์ข้อความชื่อ stdout.log ในไดเร็กทอรี / tmp และ STDERR to stderr.log ในไดเรกทอรี temp ยูทิลิตี้หลายแห่งใช้ STDERR เพื่อพิมพ์ข้อความแสดงข้อผิดพลาดพิเศษเมื่อพวกเขาเกิดข้อผิดพลาดของแอปพลิเคชันและไม่ใช่ข้อผิดพลาดที่เกิดขึ้นจากการดำเนินการตามจริงของโปรแกรม (คุณสามารถอ่านเพิ่มเติมเกี่ยวกับSTDERRใน Wikipedia)


ขอบคุณนั่นคือสิ่งที่ฉันพยายามทำดูเหมือนว่าcronด้วยเหตุผลบางประการที่ล้มเหลวในการเริ่มงานตั้งแต่แรก ถ้าฉันทำงานด้วยตนเองโดยพิมพ์คำสั่งในเทอร์มินัลมันจะรันและส่งออกไปยัง logfile แต่ถ้าฉันรอcronให้มันทำงานไม่มีอะไรเกิดขึ้นอย่างน้อยก็ไม่มีการเปลี่ยนแปลงในไฟล์บันทึกฉันคิดว่าอาจเป็น "ไฟล์บันทึก cron "หรือมีร่องรอยใด ๆ ในคอนโซลที่จะช่วยให้ฉันค้นหาสิ่งที่เกิดขึ้นเมื่อเร็ว ๆ นี้ฉันเปลี่ยนเปลือกของฉันจากทุบตีเป็น zsh แต่ฉันไม่คิดว่าจะมีผลกระทบกับเรื่องนี้
Ali

1
ตามerikslab.com/2011/02/04/logging-with-launchdคุณสามารถแก้ไข cron plist ( /System/Library/LaunchDaemons/com.vix.cron.plist) ด้วย Stdout / Stderr เพื่อแก้ปัญหา cron ได้ ฉันจำไม่ได้ว่าการlaunchctl unloading และlaunchctl loading plist นั้นเพียงพอหรือเนื่องจากเป็น daemon ของระบบหากคุณต้องเริ่มต้นใหม่ทั้งหมด ฉันอยากจะแนะนำอย่างหลังเพื่อให้แน่ใจ
Jason Salaz

21

ง่ายต่อการเพิ่มสิ่งต่อไปนี้ลงใน/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


3
ผมชอบความคิดนี้ - แต่ใน 10.10.5 ของฉันบอกว่า/etc/syslog.conf # Note that flat file logs are now configured in /etc/asl.confไฟล์นั้นมีรูปแบบที่แตกต่างกันฉันไม่ทราบวิธีกำหนดค่าการเข้าสู่ระบบ
Ken Williams

@KenWilliams แม้ว่ามันจะบอกว่า syslog.conf ยังคงใช้งานได้ใน High Sierra
Fish Monitor

15

ตามค่าเริ่มต้น "การบันทึก" จะไม่เปิดใช้งาน แต่คุณอาจได้รับข้อมูลที่เป็นประโยชน์โดยการเรียกใช้mailคำสั่ง

TL; DR บนmailคำสั่ง: กด Enter เพื่ออ่านข้อความจากนั้นqและป้อนเพื่อออก


4
ดีมากขอบคุณ ฉันแสดงให้ฉันเห็นว่ามีคำสั่งที่ไม่รู้จักกับ Cron ของฉัน ไชโย!
Joshua Pinter

7

ฉันสามารถค้นหาการเข้าสู่ระบบงาน cron

/var/mail/{user-name}

ต่อไปนี้เป็นบันทึกการใช้งาน cron ที่ฉันได้รับสำหรับการเรียกใช้คำสั่ง AWS CLI

From build@BuildServer1.local  Fri Mar  2 10:00:00 2018
Return-Path: <build@BuildServer1.local>
X-Original-To: build
Delivered-To: build@BuildServer1.local
Received: by BuildServer1.local (Postfix, from userid 501)
    id A7A94296CBA3; Fri,  2 Mar 2018 10:00:00 +0100 (CET)
From: build@BuildServer1.local (Cron Daemon)
To: build@BuildServer1.local
Subject: Cron <build@BuildServer1> /app/scripts/s3-sync.sh
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=build>
X-Cron-Env: <USER=build>
X-Cron-Env: <HOME=/Users/build>
Message-Id: <20180302090000.A7A94296CBA3@BuildServer1.local>
Date: Fri,  2 Mar 2018 10:00:00 +0100 (CET)

upload: ../../app/logs/debug.log to s3://**my-s3***/app/logs/debug.log

1
นั่นเป็นจดหมายข้อผิดพลาดที่เก็บไว้ในกล่องจดหมายของuser
nohillside

@patrix ฉันก็สามารถหางาน cron ที่ประสบความสำเร็จได้ อัปเดตคำตอบ
Vineeth

ดี! ควรเป็นคำตอบที่ยอมรับได้!
Trollhorn

3

เปิดออกเมื่อ cron กำลังเรียกใช้งาน (ค่ะ) ไม่ได้อยู่ใน/usr/local/bin ฉันพบสิ่งนี้จากการลองผิดลองถูกและสร้างงานจากศูนย์จากสิ่งง่าย ๆ ที่ฉันรู้ว่าจะทำงานและค่อยๆเพิ่มสิ่งต่าง ๆ จนกระทั่งพบปัญหา PATH

เกี่ยวกับคำแนะนำและคำตอบอื่น ๆ :
ด้วยเหตุผลบางอย่าง (อย่างน้อยในเครื่องของฉันซึ่งใช้ Lion อัพเกรดจาก SnowLeopard) cronไม่ใช้พารามิเตอร์ที่ระบุในไฟล์ plist ที่launchdอ่าน/System/Library/LaunchDaemons/com.vix.cron.plistหรือ cron บน Lion ไม่เขียนอะไรเลย เพื่อ stdout หรือ stderr

โดยวิธีการที่ฉันใช้http://s3tools.org/s3cmdไปยังsyncโฟลเดอร์ที่มีที่ฝากข้อมูล Amazon S3 เป็นการสำรองข้อมูล (เช่น DropBox ดั้งเดิม)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.