|
ลูเคน สาธารณะ เมื่อสักครู่ที่ผ่านมา การสอนที่ยอดเยี่ยมเกี่ยวกับ cron และ crontab ที่คิดว่าควรค่าแก่การแบ่งปัน Cron เป็นชนิดที่เทียบเท่ากับงานตามกำหนดการใน Windowsเฉพาะที่จัดการจากเทอร์มินัลเท่านั้น ผู้ที่ชื่นชอบอินเทอร์เฟซแบบภาพเพื่อให้บรรลุเป้าหมายเดียวกันสามารถดูได้ รายการอื่น. |
cron คืออะไร?
cron ชื่อนี้มาจากโครโนภาษากรีกซึ่งแปลว่า "เวลา" ในระบบปฏิบัติการ Unix cron เป็นตัวจัดการกระบวนการพื้นหลังปกติ (daemon) ที่รันกระบวนการหรือสคริปต์ในช่วงเวลาปกติ (เช่นทุกนาทีวันสัปดาห์หรือเดือน) กระบวนการที่ต้องดำเนินการและเวลาที่ต้องดำเนินการระบุไว้ในไฟล์ crontab
funciona โคโม
cron daemon เริ่มจาก /etc/rc.d/ o /etc/init.d ขึ้นอยู่กับการกระจาย Cron ทำงานในพื้นหลังตรวจสอบตารางงาน crontab ทุกนาที / etc / crontab en o / var / สปูล / cron ในการค้นหางานที่จะสำเร็จ ในฐานะผู้ใช้เราสามารถเพิ่มคำสั่งหรือสคริปต์ที่มีงานให้กับ cron เพื่อทำให้กระบวนการบางอย่างเป็นไปโดยอัตโนมัติ สิ่งนี้มีประโยชน์สำหรับการอัปเดตระบบโดยอัตโนมัติหรือระบบสำรองข้อมูลที่ดี
Crontab คืออะไร?
Crontab เป็นไฟล์ข้อความธรรมดาที่จัดเก็บรายการคำสั่งที่จะดำเนินการตามเวลาที่ผู้ใช้กำหนด Crontab จะตรวจสอบวันที่และเวลาที่ควรเรียกใช้สคริปต์หรือคำสั่งสิทธิ์ในการดำเนินการและจะทำในพื้นหลัง ผู้ใช้แต่ละคนสามารถมีไฟล์ crontab ของตัวเองในความเป็นจริงไฟล์ / etc / crontab ถือว่าเป็นไฟล์ crontab ของผู้ใช้ root เมื่อผู้ใช้ทั่วไป (และแม้แต่ root) ต้องการสร้างไฟล์ crontab ของตัวเองเราจะใช้คำสั่ง crontab
Crontab เป็นวิธีที่ง่ายที่สุดในการจัดการงาน cron บนระบบผู้ใช้หลายคนไม่ว่าจะเป็นผู้ใช้ระบบธรรมดาหรือผู้ใช้รูท
ใช้ crontab
เรากำลังเริ่มต้นด้วยตัวอย่างง่ายๆ
เราจะทำการอัปเดตระบบโดยอัตโนมัติเพื่อกำจัดความน่ารำคาญของ "ฉันต้องอัปเดตอยู่เสมอและฉันไม่ชอบสิ่งนั้น!"
ก่อนอื่นเราจะสร้างสคริปต์ สคริปต์นี้จะถูกเรียกโดย cron และจะมีคำสั่งทั้งหมดที่เราต้องการให้ทำดังนั้นจึงจำเป็นต้องทดสอบในหลาย ๆ กรณีและหลาย ๆ วิธีก่อนที่จะรวมไว้ใน cron สคริปต์การอัปเดตง่ายๆเช่นนี้:
#! / bin / bash #script ตัวอย่างการอัปเดต # เลือกการแจกจ่ายของคุณ # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu
ลบ # ออกจากบรรทัด distro ของคุณ ในกรณีที่เป็น Ubuntu / Debian จะเริ่มต้นด้วย apt-get
เราบันทึกสคริปต์เป็น update.sh (เช่นสคริปต์ไดเรกทอรีบ้านของคุณ) เราเปลี่ยนสิทธิ์การดำเนินการของสคริปต์ดังกล่าวด้วย:
chmod a + x ~ / scripts / update.sh
เราเรียกใช้สคริปต์สองสามครั้งเพื่อตรวจสอบว่าทุกอย่างทำงานได้อย่างราบรื่นเราแก้ไขสิ่งที่จำเป็น (ต้องไม่มีข้อผิดพลาดหากไม่มี cron จะทำซ้ำข้อผิดพลาดซ้ำแล้วซ้ำเล่า) ตอนนี้เพื่อเพิ่มงานใน crontab ของเรา
เพิ่มงานใน crontab
เราดำเนินการรุ่นของ crontab ด้วย crontab -e ใน distros บางตัว (เช่น ubuntu) มันทำให้เรามีตัวเลือกในการเลือกโปรแกรมแก้ไขข้อความที่เราต้องการส่วนที่เหลือเราเหลือไว้ด้วย vi ไฟล์ crontab จะเป็นแบบนี้
# mh dom mon dow คำสั่งผู้ใช้
ที่อยู่:
- m สอดคล้องกับนาทีที่สคริปต์จะถูกเรียกใช้ค่ามีตั้งแต่ 0 ถึง 59
- h เวลาที่แน่นอนรูปแบบ 24 ชั่วโมงได้รับการจัดการค่าอยู่ในช่วง 0 ถึง 23 โดย 0 เป็นเวลา 12 น.
- ดวงอาทิตย์ หมายถึงวันของเดือนตัวอย่างเช่นคุณสามารถระบุ 15 หากคุณต้องการเรียกใช้ทุก 15 วัน
- Dow หมายถึงวันในสัปดาห์อาจเป็นตัวเลข (0 ถึง 7 โดยที่ 0 และ 7 คือวันอาทิตย์) หรือตัวอักษร 3 ตัวแรกของวันในภาษาอังกฤษ: mon, tue, wed, thu, fri, sat, sun
- ผู้ใช้งาน กำหนดผู้ใช้ที่จะดำเนินการคำสั่งสามารถรูทหรือผู้ใช้อื่นได้ตราบเท่าที่พวกเขามีสิทธิ์ในการรันสคริปต์
- คำสั่ง หมายถึงคำสั่งหรือเส้นทางสัมบูรณ์ของสคริปต์ที่จะดำเนินการตัวอย่าง: /home/usuario/scripts/update.shหากเรียกสคริปต์ก็จะต้องเรียกใช้งานได้
เพื่อความชัดเจนบางตัวอย่างของงาน cron อธิบาย:
15 10 * * * ผู้ใช้ /home/user/scripts/update.sh
มันจะเรียกใช้สคริปต์ update.sh เวลา 10:15 น. ของทุกวัน
15 22 * * * ผู้ใช้ /home/user/scripts/update.sh
มันจะเรียกใช้สคริปต์ update.sh เวลา 10:15 น. ของทุกวัน
00 10 * * 0 root apt-get -y อัปเดตผู้ใช้รูท
จะทำการอัปเดตทุกวันอาทิตย์เวลา 10 น
45 10 * * sun root apt-get -y อัปเดต
ผู้ใช้รูทจะทำการอัปเดตทุกวันอาทิตย์ (อาทิตย์) เวลา 10:45 น
30 7 20 11 * ผู้ใช้ /home/usuario/scripts/update.sh
ในวันที่ 20 พฤศจิกายนเวลา 7:30 น. ผู้ใช้จะเรียกใช้สคริปต์
30 7 11 11 ผู้ใช้อาทิตย์ /home/usuario/scripts/pastel_con_velitas.sh
ในวันที่ 11 พฤศจิกายนเวลา 7 น. และนั่นคือวันอาทิตย์ผู้ใช้จะฉลองผู้ดูแลระบบของเขา (นั่นคือฉัน)
01 * * * * ผู้ใช้ /home/usuario/scripts/molestorecordatorio.sh
การแจ้งเตือนที่น่ารำคาญทุก ๆ นาทีทุก ๆ ชั่วโมงทุกวัน (ไม่แนะนำ)
พวกเขายังสามารถจัดการได้ ช่วงพิเศษ:
30 17 * * 1,2,3,4,5
เวลา 5 น. ในช่วงบ่ายของทุกวันตั้งแต่วันจันทร์ถึงวันศุกร์
00 12 1,15,28 *
เวลา 12 น. ของวันแรกที่สิบห้าและ 28 ของทุกเดือน (เหมาะสำหรับการจ่ายเงินเดือน)
หากเกิดความสับสนให้จัดการ crontab สตริงพิเศษเพื่อกำหนดช่วงเหล่านี้.
@reboot เรียกใช้ครั้งเดียวเมื่อเริ่มต้น
@ ปีละ 0 ครั้งเท่านั้น: 0 1 1 XNUMX *
@ ทุกวันเช่นเดียวกับ @yearly
@ เดือนละ 0 ครั้งวันแรก: 0 1 XNUMX * *
@ ทุกสัปดาห์ทุกนาทีนาทีแรกของชั่วโมงแรกของสัปดาห์ 0 0 * * 0″.
@ ทุกวันเวลา 12 น. 00 0 * * *
@midnight เช่นเดียวกับ @daily
@ ทุกนาทีแรกของทุกชั่วโมง: 0 * * * *
การใช้งานนั้นง่ายมาก
@hourly user /home/user/scripts/molestorecordatorio.sh @monthly user /home/user/scripts/backup.sh @daily root apt-get update && apt-get -y อัพเกรด
สุดท้าย แต่ไม่ท้ายสุด:
การจัดการงาน Cron
ไฟล์ crontab
แทนที่ไฟล์ crontab ที่มีอยู่ด้วยไฟล์ที่ผู้ใช้กำหนดเอง
crontab -e
แก้ไขไฟล์ crontab ของผู้ใช้แต่ละบรรทัดใหม่จะเป็นงาน crontab ใหม่
crontab -l
แสดงรายการงาน crontab ของผู้ใช้ทั้งหมด
crontab -d
ลบ crontab ของผู้ใช้
crontab -c ผบ
กำหนดไดเร็กทอรี crontab ของผู้ใช้ (ต้องมีสิทธิ์ในการเขียนและดำเนินการของผู้ใช้)
ผู้ใช้ crontab -u
คำนำหน้าเพื่อจัดการกับ crontab ของผู้ใช้รายอื่นตัวอย่าง:
$ sudo crontab -l -u root $ sudo crontab -e user2 #crontab -d -u ผู้ใช้
เครื่องมือนี้เช่นเดียวกับเครื่องมืออื่น ๆ สามารถมองเห็นได้ในเชิงลึกและรายละเอียดเพิ่มเติมใน: