บันทึก cron / crontab อยู่ที่ไหน


753

ฉันต้องการตรวจสอบว่างาน cron ของฉันทำงานอยู่และตามเวลาใด ฉันเชื่อว่ามีบันทึกสำหรับsudo crontab -eงานของฉันแต่อยู่ที่ไหน

ฉันค้นหา google และพบคำแนะนำในการค้นหา/var/log(ซึ่งฉันไม่เห็นอะไรที่มี 'cron' ในชื่อ) และเพื่อแก้ไขไฟล์/etc/syslog.confที่ฉันยังไม่มี

คำตอบ:


895

ในการติดตั้งเริ่มต้นงาน cron จะถูกบันทึกไว้

/var/log/syslog

คุณสามารถเห็นงาน cron ใน logfile นั้นโดยการเรียกใช้

 grep CRON /var/log/syslog

หากคุณยังไม่ได้กำหนดค่าใหม่รายการจะอยู่ในนั้น


46
หากไม่มีการติดตั้ง MTA cron เพียงส่งงานออกไป
Barry Kelly

11
บันทึก cron อาจอยู่ในไฟล์อื่นใน/var/log/ไดเรกทอรี ตรวจสอบ cron.log หรือเทียบเท่า
Navigatron

4
สิ่งนี้ไม่ให้ผลลัพธ์กับงาน มันแค่ให้ข้อความทั่วไปที่ cron ถูกประมวลผล
chovy

2
ใน AWS มันเป็น / var / log / cron
tsukimi

5
@shadi คุณสามารถgrep -i CRONค้นหาตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
nafg

236

คุณสามารถสร้างไฟล์ cron.log เพื่อให้มีเพียงรายการ CRON ที่แสดงใน syslog โปรดทราบว่างาน CRON จะยังคงปรากฏใน syslog หากคุณทำตามคำแนะนำต่อไปนี้

เปิดไฟล์

/etc/rsyslog.d/50-default.conf

ค้นหาบรรทัดที่ขึ้นต้นด้วย:

#cron.*

uncomment บรรทัดนั้นบันทึกไฟล์และรีสตาร์ท rsyslog:

sudo service rsyslog restart

ตอนนี้คุณควรเห็นไฟล์บันทึก cron ที่นี่:

/var/log/cron.log

กิจกรรม Cron จะถูกบันทึกลงในไฟล์นี้ (นอกเหนือจาก syslog)

โปรดทราบว่าใน cron.log คุณจะเห็นรายการเมื่อ cron รันสคริปต์ใน /etc/cron.hourly, cron.daily ฯลฯ - เช่นบางสิ่งบางอย่างเช่น:

Apr 12 14:17:01 cd CRON[14368]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

อย่างไรก็ตามคุณจะไม่เห็นข้อมูลเพิ่มเติมเกี่ยวกับสคริปต์ที่ทำงานจริงภายใน /etc/cron.daily หรือ /etc/cron.hourly เว้นแต่ว่าสคริปต์เหล่านั้นจะส่งเอาต์พุตโดยตรงไปยัง cron.log (หรืออาจเป็นไฟล์บันทึกอื่น ๆ )

หากคุณต้องการตรวจสอบว่า crontab ทำงานอยู่หรือไม่และต้องค้นหาใน cron.log หรือ syslog ให้สร้าง crontab ที่เปลี่ยนเส้นทางเอาต์พุตไปยังล็อกไฟล์ที่คุณเลือกเช่น:

01 14 * * * /home/joe/myscript >> /home/log/myscript.log 2>&1

สิ่งนี้จะเปลี่ยนเส้นทางเอาต์พุตมาตรฐานและข้อผิดพลาดทั้งหมดที่อาจเกิดขึ้นจากสคริปต์ที่เรียกใช้ไปยังล็อกไฟล์ที่ระบุ


1
ด้วยความเห็นของฉันคำตอบนี้ดีกว่าในอนาคต ดังนั้นไฟล์ syslog ของคุณจึงชัดเจนยิ่งขึ้น
shgnInc

9
ยังไม่รวมบันทึก cron จาก syslog คุณสามารถเปลี่ยนสายไป*.*;auth,authpriv.none -/var/log/syslog *.*;auth,authpriv.none,cron.none -/var/log/syslog
โคเอ็น

บน CentOS 6 ของเรา cron. * กำหนดไว้ใน /etc/rsyslog.conf ในขณะที่ i ว่างในโฟลเดอร์ rsyslog.d
Scott Chu

มี2>&1ไว้เพื่ออะไร
John Joe

2
@JohnJoe 2> & 1 ใช้เพื่อส่งต่อ stderr ไปยัง stdout ด้วยวิธีนี้คุณจะได้รับ stderr เพื่อบันทึกไฟล์
Sampo Sarrala

79

บางครั้งอาจมีประโยชน์ในการตรวจสอบอย่างต่อเนื่องในกรณีนั้น:

tail -f /var/log/syslog | grep CRON

10
คุณอาจต้องการใช้-Fซึ่งจะติดตามไฟล์ข้ามการเปลี่ยนชื่อเพื่อที่ว่าเมื่อไฟล์ถูกตัดทอนหรือย้ายไปเช่น/var/log/syslog.1.gzคุณยังคงติดตาม/var/log/syslogไฟล์ปัจจุบันอยู่ ตามเอกสารของมนุษย์นี่ก็เหมือนกับการวิ่งtail xxxx -f --retry
Momer

37

นอกจากนี้คุณยังสามารถนำเอาต์พุตของ cronjobs แต่ละรายการไปยังบันทึกของตนเองเพื่อให้อ่านง่ายขึ้นคุณจะต้องผนวกเอาท์พุทของวันที่ที่ไหนสักแห่ง

 0 15 * * *    /home/andrew/daily-backup.sh >> /var/log/daily-backup.log 2>&1

4
จริง แต่ถ้าบรรทัดนี้ไม่สามารถทำงานได้เนื่องจากข้อผิดพลาดทางไวยากรณ์จะไม่มีการเขียนสิ่งใดในบันทึกผลลัพธ์ที่ระบุ
Raptor

11
คุณสามารถแก้ปัญหานี้ได้โดยเพิ่ม 2> & 1 หลังจากระบุไฟล์บันทึกแล้ว เป็นวิธีปฏิบัติที่ดีที่สุดในการทดสอบ cronjobs ของคุณก่อนที่จะเพิ่มลงใน crontab จากนั้นนำเสนอสำหรับการรันตามกำหนดเวลาครั้งแรกเพื่อให้แน่ใจว่า crontab นั้นมีรูปแบบที่ถูกต้อง
Andrew Meyer

10

หากคุณsystemdติดตั้งบนระบบของคุณคุณสามารถแสดงบันทึกการใช้งาน cron โดยใช้journalctlคำสั่ง

ตัวอย่างเช่นใน Ubuntu 17.10 ของฉัน:

journalctl -u cron.service

9

นี่เป็นคำถามที่เก่ามาก แต่ไม่มีคำตอบใดที่น่าพอใจ

ขั้นแรกให้งาน cron ของคุณทำงานทุก ๆ นาทีจากนั้นเรียกใช้ cron เป็น non-daemon (ชั่วคราวเพียงฆ่า crond ใด ๆ ที่อาจเริ่มทำงานแล้ว) ด้วยการบันทึกการทดสอบ:

crond -nx test

และดูบันทึกการทำงานของโปรแกรมที่ไหลผ่านเทอร์มินัลของคุณ


7
ไม่ทำงานบน 14.04 -No command 'crond' found, did you mean: Command 'cron' from package 'cron' (main)
G-

8

มันอยู่ใน/var/log/syslogค่าเริ่มต้น

แต่สามารถตั้งค่าเพื่อสร้าง cron.log แยกต่างหากซึ่งมีประโยชน์มากกว่า

คำถาม & คำตอบนี้อธิบายกระบวนการ:

16.04: ฉันจะทำให้ cron สร้าง cron.log และตรวจสอบในเวลาจริงได้อย่างไร

นอกจากนี้ในคำตอบนี้เป็นคำแนะนำในการสร้างwcronคำสั่งที่แสดงว่าใกล้เวลาจริง นอกจากนี้ยังเชื่อมโยงกับคำตอบอื่น

จะเปลี่ยนระดับการบันทึก cron ได้อย่างไร?

ที่แสดงวิธีการเปลี่ยนระดับการบันทึกเพื่อรวมมากกว่าแค่การเริ่มงาน - ระดับ 15 จะแสดงข้อผิดพลาดและเวลาสิ้นสุดเช่นกัน


5

Fedoar 29 และ RHEL 7

journalctl -t CROND

จากjournalctlคู่มือ:

   -t, --identifier=SYSLOG_IDENTIFIER|PATTERN
       Show messages for the specified syslog identifier SYSLOG_IDENTIFIER, or for any of the messages with a "SYSLOG_IDENTIFIER" matched by PATTERN.

       This parameter can be specified multiple times.

3

คุณสามารถเปลี่ยนเส้นทางเอาต์พุตของ cron ไปยังไฟล์ tmp

เช่น 00 11 07 * * / bin / bash /home/ubuntu/command.sh> / tmp / output 2> & 1

ข้อผิดพลาดและผลลัพธ์ปกติทั้งสองจะถูกเปลี่ยนเส้นทางไปยังไฟล์เดียวกัน


2

เช่นเดียวกับที่กล่าวถึงก่อนหน้างาน cron ได้รับการเข้าสู่ระบบ /var/log/syslog

คุณสามารถไพพ์ syslog เพื่อ grep และกรองบันทึก CRON เช่นนี้

less /var/log/syslog | grep CRON 

คุณสามารถค้นหาบันทึก crontab ของคุณเช่นนี้

less /var/log/syslog | grep CRON | grep <search-keyword-comes-here>

คุณสามารถค้นหาบันทึกประวัติ crontab ที่เก็บไว้ในไฟล์ gz เช่นนี้

less /var/log/syslog.2.gz | grep CRON | grep <search-keyword-comes-here>

มันมักจะคิดว่าดีที่จะมีกลไกในการเข้าสู่ระบบที่คุณสามารถติดตั้งได้อย่างรวดเร็วELKสำหรับเซิร์ฟเวอร์ของคุณคุณยังสามารถทดลองกับlogz

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