ดูแลระบบของฉันตั้งค่างาน cron จำนวนมากบนเครื่องของฉัน ฉันต้องการที่จะรู้ว่าสิ่งที่กำหนดไว้สำหรับเวลาอะไร ฉันจะรับรายการนั้นได้อย่างไร
ดูแลระบบของฉันตั้งค่างาน cron จำนวนมากบนเครื่องของฉัน ฉันต้องการที่จะรู้ว่าสิ่งที่กำหนดไว้สำหรับเวลาอะไร ฉันจะรับรายการนั้นได้อย่างไร
คำตอบ:
ขึ้นอยู่กับการตั้งค่าระบบ linux ของคุณคุณสามารถดู:
/var/spool/cron/*
(ผู้ใช้ crontabs)/etc/crontab
(crontab ทั้งระบบ)นอกจากนี้หลาย distros มี:
/etc/cron.d/*
การกำหนดค่าเหล่านี้มีไวยากรณ์เหมือนกัน /etc/crontab
/etc/cron.hourly
, /etc/cron.daily
, /etc/cron.weekly
,/etc/cron.monthly
เหล่านี้เป็นไดเรกทอรีที่มีไฟล์เรียกทำงานที่เรียกใช้งานรายชั่วโมงรายวันรายสัปดาห์หรือรายเดือนตามชื่อไดเรกทอรี
ยิ่งไปกว่านั้นคุณสามารถมีงาน (เช็ค/var/spool/at/*
) anacron ( /etc/anacrontab
และ/var/spool/anacron/*
) และอื่น ๆ ที่ฉันลืมได้
/etc/cron.daily
มา วิธีการที่ไม่ว่าdaily
ไฟล์ที่ทำงานหรือไม่ งานรายวันจะทำงานกี่โมง บนเครื่องของฉันดูเหมือนว่าพวกเขาจะวิ่งไปตอนเที่ยง แต่อยากจะบอกระบบดูแลฉันว่าจะเปลี่ยนเป็นเที่ยงคืนได้อย่างไร
/etc/crontab
เช่นในระบบ Ubuntu ของฉันมันคือ: 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
ซึ่งหมายถึง 6:25 น.
cronie
daemon จะดูแลสิ่งเหล่านั้นโดยใช้การกำหนดค่า/etc/anacrontab
ระบบ
/var/cron
ด้วย
ด้วย Crons ส่วนใหญ่ (เช่นVixie-Cron - ค่าเริ่มต้น Debian / Ubuntu, ค่าเริ่มต้นของ Cronie - Fedora, Solaris Cron ... ) คุณจะได้รับรายการงาน cron ที่กำหนดไว้สำหรับผู้ใช้ปัจจุบันผ่าน:
$ crontab -l
หรือสำหรับผู้ใช้รายอื่นผ่านทาง
# crontab -l -u juser
รับ crontabs สำหรับผู้ใช้ทั้งหมดคุณสามารถวนรอบผู้ใช้ทั้งหมดและเรียกคำสั่งนี้
หรือคุณสามารถค้นหาไฟล์สปูล โดยปกติแล้วพวกเขาจะถูกบันทึกไว้ภายใต้/var/spool/cron
เช่นสำหรับ vcron ไดเรกทอรีต่อไปนี้
/var/spool/cron/crontabs
มี crontabs ที่กำหนดค่าไว้ทั้งหมดของผู้ใช้ทั้งหมดยกเว้นผู้ใช้รูทที่สามารถกำหนดค่างานผ่าน crontab ทั่วทั้งระบบซึ่งตั้งอยู่ที่
/etc/crontab
ด้วยcronie (ค่าดีฟอลต์บน Fedora / CentOS) มี.d
ไดเร็กทอรีการกำหนดค่าสไตล์สำหรับงาน cron ของระบบเช่นกัน:
/etc/cron.d
(เช่นเคย.d
ไดเรกทอรีทำให้การบำรุงรักษารายการกำหนดค่าง่ายขึ้นซึ่งเป็นส่วนหนึ่งของแพ็คเกจที่ต่างกัน)
เพื่อความสะดวกมากที่สุดการแจกแจงส่วนใหญ่ยังมีไดเรกทอรีที่สคริปต์ที่เชื่อมโยง / เก็บไว้จะถูกดำเนินการเป็นระยะเช่น:
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
การดำเนินการทันเวลาของสคริปต์เหล่านั้นมักจะมีการจัดการผ่านทางrun-parts
รายการใน crontab ระบบหรือผ่านทางanacron
ด้วยSystemd (เช่นใน Fedora, CentOS 7, ... ) การปฏิบัติงานเป็นระยะสามารถกำหนดค่าเพิ่มเติมผ่านหน่วยตัวจับเวลาได้ ตัวจับเวลาระบบที่เปิดใช้งานสามารถแสดงผ่าน:
$ systemctl list-timers
โปรดทราบว่าผู้ใช้ที่อยู่ข้างๆรูทอาจมีอินสแตนซ์ผู้ใช้ systemd กำลังทำงานที่มีการกำหนดค่าตัวนับเช่นกัน ตัวอย่างเช่นบน Fedora โดยค่าเริ่มต้นอินสแตนซ์ผู้ใช้ systemd เริ่มต้นขึ้นสำหรับผู้ใช้แต่ละรายที่เข้าสู่ระบบในปัจจุบันพวกเขาสามารถจดจำได้ผ่าน:
$ ps aux | grep 'systemd[ ]--user'
ตัวจับเวลาผู้ใช้เหล่านั้นสามารถแสดงได้ผ่าน:
$ systemctl --user list-timers
ทางเลือกอื่นในการออกlist-timers
คำสั่งคือการค้นหาไฟล์หน่วยตัวจับเวลา (รูปแบบ*.timer
:) และลิงก์สัญลักษณ์ไปยังพวกเขาในไดเรกทอรีระบบและผู้ใช้ systemd config ปกติ:
$ find /usr/lib/systemd/ /etc/systemd -name '*.timer'
$ find /home '(' -path '/home/*/.local/share/systemd/user/*' \
-o -path '/home/*/.config/systemd/*' ')' \
-name '*.timer' 2> /dev/null
(เช่นเดียวกับหน่วยบริการปกติหน่วยจับเวลาถูกเปิดใช้งานผ่านการสร้างลิงก์สัญลักษณ์ในไดเรกทอรี systemd config ที่เหมาะสม)
ดูสิ่งนี้ด้วย:
crontab -l -u root
(เพราะ cronjobs ผู้ที่ฉันต้องการที่จะรู้เกี่ยวกับการทำงานภายใต้root
) -u
และมันบอกว่าผมไม่ได้มีสิทธิพิเศษในการใช้
root
ผู้ใช้
cronie
ในขณะที่จัดส่งใน Fedora และ RHEL6 ไม่ได้หมายถึงผู้ที่อยู่ในแต่แทนที่จะใช้/etc/crontab
/etc/anacrontab
ฉันอาจเข้าใจผิดเกี่ยวกับการใช้งานจริงใด ๆ ที่ไม่ได้อ้างถึงสิ่งเหล่านี้ในไฟล์ปรับแต่งใด ๆ (แต่แล้วฉันก็ไม่ได้ลงคะแนนด้วยเช่นกัน .... ฉันแค่บอกว่า ')
เพื่อแสดงรายการ crons ทั้งหมดสำหรับผู้ใช้ที่กำหนด
crontab -u ชื่อผู้ใช้ -l;
เพื่อแสดงรายการ crons ทั้งหมดสำหรับผู้ใช้ทั้งหมด
เรียกใช้ในฐานะผู้ใช้ขั้นสูง
#!/bin/bash
#List all cron jobs for all users
for user in `cat /etc/passwd | cut -d":" -f1`;
do
crontab -l -u $user;
done
root
หรือapache
หรืออะไรก็ตาม แต่ควรใช้/etc/crontab
หรือ (ดีกว่าใน distros ส่วนใหญ่) และ/etc/cron.d
/etc/cron.[timeframe]