- วิธีการทำงานของ daemon crond และวิธีการจัดการงานต่างๆ โดยใช้ไฟล์ crontab
- ไวยากรณ์โดยละเอียดและการใช้ตัวอักษรพิเศษเพื่อตั้งโปรแกรมให้ทำงานอย่างแม่นยำ
- การนำสคริปต์สำรองข้อมูลมาใช้ร่วมกับไฟล์ TAR และการบำรุงรักษาระบบแบบอัตโนมัติ
- ทางเลือกที่ทันสมัย เช่น ตัวจับเวลา systemd และเครื่องมือแบบกราฟิกสำหรับการจัดการกระบวนการ
ไม่ว่าคุณจะเพิ่งเปลี่ยนมาใช้ Linux หรือจัดการเซิร์ฟเวอร์ของคุณเองมาสักระยะแล้ว คุณคงตระหนักดีว่างานบางอย่างนั้นยุ่งยากมากหากต้องทำด้วยมือ ตั้งแต่การล้างไฟล์ชั่วคราวไปจนถึงการตรวจสอบให้แน่ใจว่าข้อมูลของคุณปลอดภัยด้วยการสำรองข้อมูล การทำให้กระบวนการเหล่านี้เป็นไปโดยอัตโนมัติจึงเป็นกุญแจสำคัญในการหลีกเลี่ยงความหงุดหงิดและป้องกันไม่ให้ความผิดพลาดเล็กน้อยทำลายงานที่ทำมาเป็นเดือน
เพื่อแก้ปัญหานี้ ระบบปฏิบัติการที่คล้าย UNIX จึงมีเครื่องมือในตำนานที่เรียกว่า Cron โดยพื้นฐานแล้ว มันก็เหมือนนาฬิกาปลุกสำหรับคำสั่งต่างๆที่จะเรียกใช้สคริปต์หรือแอปพลิเคชันในเวลาที่คุณระบุไว้อย่างแม่นยำ ทำงานอยู่เบื้องหลังในขณะที่คุณไปดื่มกาแฟหรือลืมไปเลยว่ามีงานนั้นอยู่
Cron คืออะไรกันแน่ และมันทำงานอย่างไร?
เมื่อเราพูดถึง Cron เรากำลังหมายถึงdaemon ที่ชื่อว่า crondในโลกของ Linux นั้น daemon ก็คือกระบวนการที่ทำงานอยู่เบื้องหลังโดยไม่มีส่วนติดต่อผู้ใช้ ตั้งแต่ระบบเริ่มทำงาน หน้าที่ของมันซ้ำซากจำเจแต่สำคัญมาก นั่นคือ ทุกนาทีมันจะตรวจสอบไฟล์การกำหนดค่าเพื่อดูว่ามีงาน cronที่กำหนดไว้ตรงกับเวลาและวันที่ปัจจุบัน หรือไม่
เพื่อให้ทุกอย่างทำงานได้อย่างราบรื่น การตั้งค่านาฬิการะบบให้ถูกต้องนั้นมีความสำคัญอย่างยิ่ง หากเวลาหรือเขตเวลาไม่ถูกต้อง การสำรองข้อมูลของคุณจะทำงานในเวลาที่ไม่ถูกต้อง ดังนั้น ขอแนะนำให้ใช้ คำสั่ง `timedatectl`เพื่อตรวจสอบว่าการซิงโครไนซ์กับเซิร์ฟเวอร์ NTP นั้นถูกต้อง เพื่อให้แน่ใจว่าระบบไม่มีความคลาดเคลื่อนของเวลา
ไฟล์ Crontab: ที่ซึ่งความมหัศจรรย์เกิดขึ้น
ถ้า Cron เปรียบเสมือนเครื่องยนต์Crontab ก็เปรียบเสมือนแผนที่คำสั่งมันเป็นไฟล์ข้อความที่เราใช้เขียนสิ่งที่เราต้องการเรียกใช้และเวลาที่จะเรียกใช้ ที่น่าสนใจคือ ระบบไม่ได้มีแค่ไฟล์เดียว ระบบมี Crontab ส่วนกลางอยู่ที่ /etc/crontab แต่ผู้ใช้แต่ละคนสามารถมี Crontab ของตนเองได้ทำให้ผู้คนสามารถกำหนดตารางงานของตนเองได้โดยไม่จำเป็นต้องมีสิทธิ์ผู้ดูแลระบบตลอดเวลา
ในการจัดการงานเหล่านี้ เราใช้คำสั่ง`crontab -e`เพื่อแก้ไข`crontab -l`เพื่อแสดงรายการสิ่งที่กำลังทำงานอยู่ และ`crontab -r`หากเราต้องการลบทุกอย่างและเริ่มต้นใหม่ทั้งหมด นี่เป็นวิธีที่สะอาดมากในการจัดการการบำรุงรักษาระบบโดยไม่ต้องแตะต้องไฟล์เคอร์เนลที่สำคัญ
การวิเคราะห์ไวยากรณ์ของ Cron
ในการตั้งเวลาการทำงาน คุณต้องปฏิบัติตามลำดับที่เข้มงวดมาก โดยป้อนช่องเวลาห้าช่องตามด้วยคำสั่ง ลำดับคือนาที ชั่วโมง วันในเดือน เดือน และวันในสัปดาห์ตัวอย่างเช่น หากเราป้อน 0 19 * * 0 เรากำลังบอกระบบให้ทำงานเวลา 19:00 น. ทุกวันอาทิตย์
เพื่อทำให้ชีวิตเราง่ายขึ้น มีสิ่งต่างๆ ดังนี้ ตัวอักษรพิเศษ ซึ่งทำให้เราควบคุมได้อย่างสมบูรณ์ เครื่องหมายดอกจัน (*) หมายถึง "เสมอ" หรือ "ค่าใดๆ" ในขณะที่เครื่องหมายทับ (/) ใช้เพื่อกำหนดช่วง เช่น */10 เพื่อเรียกใช้งานบางอย่างทุกสิบนาที เครื่องหมายขีด (-) ใช้กำหนดช่วง และเครื่องหมายจุลภาค (,) ช่วยให้คุณระบุค่าที่เฉพาะเจาะจงได้ นอกจากนี้ยังมี ทางลัดที่กำหนดไว้ล่วงหน้า เช่น @daily, @weekly หรือ @reboot ซึ่งช่วยให้การเขียนข้อความสำหรับกรณีทั่วไปง่ายขึ้น
การสร้างระบบสำรองข้อมูลครั้งแรกของคุณ
หนึ่งในแอปพลิเคชันที่มีประโยชน์ที่สุดคือการสำรองข้อมูล สำหรับเรื่องนี้เครื่องมือ TAR เป็นตัวเลือกที่เหมาะสมที่สุดเราสามารถสร้างสคริปต์ Bash ที่บรรจุไฟล์ของเรา กำหนดวันที่ปัจจุบันให้กับชื่อไฟล์ และที่สำคัญมากคือไม่รวมโฟลเดอร์ที่ไม่จำเป็นเช่น แคชหรือถังขยะ เพื่อไม่ให้ไฟล์สำรองข้อมูลกลายเป็นไฟล์ขยะขนาดหลายกิกะไบต์
เมื่อสร้างสคริปต์เสร็จแล้ว (ตัวอย่างเช่น ใน /usr/local/bin/mybackup) และได้ให้สิทธิ์ในการเรียกใช้งานด้วยคำสั่ง chmod +xแล้ว ให้เพิ่มบรรทัดลงใน crontab ของผู้ใช้ root ด้วยวิธีนี้ เซิร์ฟเวอร์จะทำการสำรองข้อมูลโดยอัตโนมัติ และคุณยังสามารถตั้งเวลาให้สคริปต์ลบไฟล์สำรองข้อมูลที่เก่ากว่าสองสัปดาห์โดยอัตโนมัติเพื่อ ป้องกันไม่ให้ ฮาร์ดไดรฟ์เต็มได้อีก ด้วย
การบริหารขั้นสูงและเส้นทางสัมบูรณ์
ข้อผิดพลาดที่พบบ่อยมากในหมู่ผู้เริ่มต้นคือการใช้พาธสัมพัทธ์ในสคริปต์ Cron ทำงานในสภาพแวดล้อมที่จำกัดมากและไม่ทราบตำแหน่งของคุณ ดังนั้นคุณควรใช้พาธสัมบูรณ์เสมอ (เช่น /home/user/script.sh แทนที่จะเป็น ./script.sh) มิเช่นนั้น คำสั่งจะล้มเหลวโดยไม่มีข้อความแจ้งเตือน และคุณจะต้องพบกับเรื่องที่ไม่พึงประสงค์เมื่อคุณต้องการกู้คืนข้อมูลของคุณ
เพื่อหลีกเลี่ยงการไม่รู้เรื่องอะไรเลย สิ่งสำคัญคือต้องดำเนินการให้รอบคอบ เปลี่ยนเส้นทางการส่งออกไปยังไฟล์บันทึกการใช้ตัวดำเนินการ >>> /var/log/backup.log 2>&1เราสามารถบันทึกทั้งความสำเร็จและความล้มเหลวลงในไฟล์ได้ ด้วยวิธีนี้ หากมีสิ่งผิดปกติเกิดขึ้น เราก็แค่ดูไฟล์บันทึกเพื่อทราบได้อย่างแน่ชัดว่าเกิดอะไรขึ้น โดยไม่ต้องเดา
ผลกระทบต่อประสิทธิภาพและแนวปฏิบัติที่ดีที่สุด
ไม่ควรใช้งานระบบด้วยโปรแกรมที่ทำงานทุกวินาทีมากเกินไป เพราะอาจทำให้การใช้งาน CPU และ RAM พุ่งสูงขึ้นอย่างผิดปกติ วิธีที่ชาญฉลาดที่สุดคือการกำหนดเวลาการทำงานของกระบวนการที่ใช้ทรัพยากรมาก เช่น การอัปเดตฐานข้อมูลหรือการสำรองข้อมูลขนาดใหญ่ ในช่วงเช้าตรู่หรือช่วงเวลาที่ไม่ใช่ช่วงเวลาที่มีการใช้งานสูงสุดเพื่อหลีกเลี่ยงผลกระทบต่อผู้ใช้งาน
เพื่อป้องกันไม่ให้งานหนึ่งทับซ้อนกับงานอื่นหากงานแรกใช้เวลานานกว่าที่คาดไว้ ขอแนะนำให้ใช้flockซึ่งจะป้องกันการเรียกใช้สคริปต์เดียวกันพร้อมกัน นอกจากนี้ เพื่อจำกัดผู้ที่สามารถใช้ Cron ได้ ผู้ดูแลระบบสามารถกำหนดค่า ไฟล์ cron.allow และ cron.denyเพื่อให้แน่ใจว่าเฉพาะบุคลากรที่ได้รับอนุญาตเท่านั้นที่สามารถกำหนดเวลาการทำงานบนเซิร์ฟเวอร์ได้
ทางเลือกที่ทันสมัย: ตัวจับเวลา Systemd และอื่นๆ
แม้ว่า Cron จะเป็นเครื่องมือคลาสสิก แต่ระบบสมัยใหม่ใช้ตัวจับเวลา systemd แทนซึ่งมีประสิทธิภาพมากกว่ามาก เพราะช่วยให้คุณจัดการการพึ่งพา จัดการข้อผิดพลาดได้อย่างมีประสิทธิภาพมากขึ้น และเรียกใช้งานตามเหตุการณ์ของระบบ (เช่น การเริ่มต้นระบบ) ไม่ใช่แค่ตามเวลาเท่านั้น สามารถตั้งค่าได้โดยใช้ไฟล์ .timer และ .service ใน /etc/systemd/system/
สำหรับผู้ที่ไม่ถนัดการใช้งานเทอร์มินัล ก็มีตัวเลือกแบบกราฟิกเช่น KCron (สำหรับ KDE) หรือเครื่องมือบนเว็บ เช่น Webmin ส่วนในระบบปฏิบัติการอื่นๆ เช่น macOS จะใช้ launchdซึ่งมีการบูรณาการที่ลึกซึ้งยิ่งขึ้นกับระบบนิเวศของ Apple ทำให้สามารถเริ่มต้นงานที่ล้มเหลวใหม่ได้โดยอัตโนมัติ
กรณีการใช้งานจริงอื่นๆ บนเซิร์ฟเวอร์
นอกเหนือจากการสำรองข้อมูลแล้ว Cron ยังเป็นเครื่องมือที่สมบูรณ์แบบสำหรับการรักษาระบบของคุณให้สะอาดคุณสามารถตั้งเวลาให้ลบไฟล์บันทึกเก่าๆ ทุกสัปดาห์ หรือรีสตาร์ทบริการที่มักจะเกิดข้อผิดพลาดได้ นอกจากนี้ยังจำเป็นอย่างยิ่งสำหรับการซิงโครไนซ์ข้อมูลโดยใช้ rsync ระหว่างเครื่องต่างๆ เพื่อให้มั่นใจว่าข้อมูลจะถูกจำลองโดยไม่ต้องมีการแทรกแซงจากมนุษย์
ในสภาพแวดล้อมเว็บ Cron ถูกใช้เป็นประจำในการส่งอีเมลจำนวนมากสร้างรายงานยอดขายรายวัน หรืออัปเดตแคชของหน้าเว็บ โดยพื้นฐานแล้ว การกระทำที่ซ้ำซากและคาดเดาได้นั้น สามารถและควรถูกมอบหมายให้ Cron เพื่อเพิ่มประสิทธิภาพการทำงานของผู้ดูแลระบบ
การใช้งานระบบอัตโนมัติใน Linux อย่างเชี่ยวชาญจะช่วยให้คุณเปลี่ยนเซิร์ฟเวอร์ที่ต้องจัดการด้วยตนเองให้กลายเป็นเครื่องจักรที่ทำงานได้อย่างอิสระและมีประสิทธิภาพ ด้วยการผสมผสานการใช้สคริปต์ Bash ความแม่นยำของ crontab และการตรวจสอบบันทึก คุณจะมั่นใจได้ว่าการบำรุงรักษา ความปลอดภัย และความสมบูรณ์ของข้อมูลจะได้รับการจัดการโดยอัตโนมัติ ช่วยประหยัดเวลาและลดโอกาสเกิดข้อผิดพลาดจากมนุษย์ในการจัดการโครงสร้างพื้นฐานได้อย่างมาก



