Skip to main content

การใช้ Cron ใน Linux

บทนำ​

Cron คือเครื่องมือในระบบปฏิบัติการ Linux ที่ใช้สำหรับการตั้งเวลารันคำสั่งหรือโปรแกรมต่างๆ โดยอัตโนมัติ ซึ่งสามารถตั้งเวลาให้รันคำสั่งที่ต้องการได้ในระยะเวลาที่กำหนด เช่น การรันงานทุกๆ วัน เวลา 2 ทุ่ม หรือทุกๆ เดือน เป็นต้น

ในบทนี้, เราจะเรียนรู้เกี่ยวกับการตั้งค่า Cron Jobs, การใช้งานคำสั่ง crontab, และการจัดการกับไฟล์ cron.

1. การใช้งาน Cron​

1.1 Cron Daemon​

เพื่อให้ Cron ทำงานได้, ระบบจะต้องมี cron daemon ทำงานอยู่ ซึ่งจะคอยตรวจสอบไฟล์ cron และรันคำสั่งตามเวลาที่กำหนด

1.2 การตั้งค่า Cron Job​

Cron job คือคำสั่งหรือสคริปต์ที่ถูกตั้งเวลาให้ทำงานตามที่กำหนดไว้ในไฟล์ cron

1.3 ไฟล์ Crontab​

ไฟล์ crontab คือไฟล์ที่บรรจุคำสั่งหรือสคริปต์ที่จะรันตามเวลา และมีลักษณะของการตั้งเวลาเป็นรูปแบบของตารางที่ประกอบไปด้วย:

* * * * * /path/to/command
- - - - -
| | | | |
| | | | +---- วันในสัปดาห์ (0 - 7) (0 หรือ 7 คือวันอาทิตย์)
| | | +------ เดือน (1 - 12)
| | +-------- วันในเดือน (1 - 31)
| +---------- ชั่วโมง (0 - 23)
+------------ นาที (0 - 59)

ตัวอย่าง:

30 2 * * 1 /home/user/script.sh

คำสั่งนี้จะรันสคริปต์ script.sh ทุกๆ วันจันทร์ (วันในสัปดาห์) เวลา 02:30 น.

1.4 คำสั่ง Cron ที่สามารถใช้ใน Crontab​

  • * หมายถึง ทุกๆ ค่าในช่วงเวลา
  • , ใช้เพื่อระบุหลายค่า เช่น 1,2,3 หมายถึง วันจันทร์, วันอังคาร, และวันพุธ
  • - ใช้เพื่อระบุช่วงเวลา เช่น 1-5 หมายถึงวันจันทร์ถึงวันศุกร์
  • / ใช้เพื่อระบุความถี่ เช่น */5 หมายถึงทุกๆ 5 นาที

2. การใช้งาน Crontab​

2.1 การแก้ไข Crontab​

คำสั่ง crontab -e ใช้เพื่อแก้ไขไฟล์ cron สำหรับผู้ใช้ปัจจุบัน

crontab -e

หลังจากใช้คำสั่งนี้, จะเปิดไฟล์ crontab ใน editor ที่ตั้งค่าไว้ในระบบ ซึ่งสามารถเพิ่ม, แก้ไข หรือลบ cron jobs ได้

2.2 การดู Cron Jobs ที่ตั้งค่าไว้​

ใช้คำสั่ง crontab -l เพื่อแสดง cron jobs ที่ตั้งค่าไว้

crontab -l

2.3 การลบ Cron Jobs​

ใช้คำสั่ง crontab -r เพื่อลบไฟล์ cron ของผู้ใช้ปัจจุบัน

crontab -r

2.4 การใช้ Cron กับผู้ใช้หลายคน​

หากคุณต้องการตั้งค่า cron jobs สำหรับผู้ใช้ที่ต่างกันในระบบ, คุณสามารถใช้คำสั่ง crontab -u ตามด้วยชื่อผู้ใช้

sudo crontab -u username -e

3. ตัวอย่าง Cron Jobs ที่ใช้บ่อย​

3.1 การรันงานทุกวันตอนเที่ยงคืน​

0 0 * * * /path/to/backup.sh

คำสั่งนี้จะรันสคริปต์ backup.sh ทุกวันเวลาเที่ยงคืน

3.2 การรันงานทุกๆ 5 นาที​

*/5 * * * * /path/to/script.sh

คำสั่งนี้จะรันสคริปต์ script.sh ทุกๆ 5 นาที

3.3 การรันงานทุกวันจันทร์เวลา 9:00 AM​

0 9 * * 1 /path/to/report.sh

คำสั่งนี้จะรันสคริปต์ report.sh ทุกๆ วันจันทร์ เวลา 9:00 AM

3.4 การรันงานทุกวันที่ 1 ของเดือนเวลาเที่ยงคืน​

0 0 1 * * /path/to/monthly_task.sh

คำสั่งนี้จะรันสคริปต์ monthly_task.sh ทุกวันที่ 1 ของเดือน เวลาเที่ยงคืน

4. การตรวจสอบสถานะของ Cron​

4.1 การดูสถานะของ Cron Daemon​

การตรวจสอบว่า cron daemon กำลังทำงานอยู่หรือไม่ สามารถใช้คำสั่ง systemctl:

sudo systemctl status cron

หาก daemon กำลังทำงาน, คุณจะเห็นข้อความที่บ่งบอกว่า active (running)

4.2 การดู Log ของ Cron Jobs​

การดู log ของ cron jobs สามารถใช้คำสั่ง journalctl:

sudo journalctl -u cron

4.3 การตรวจสอบว่า Cron Job ทำงานสำเร็จหรือไม่​

หากคุณต้องการตรวจสอบว่า cron job รันสำเร็จหรือไม่, คุณสามารถบันทึกผลลัพธ์ของมันไปยังไฟล์ log:

*/5 * * * * /path/to/script.sh >> /path/to/logfile.log 2>&1

คำสั่งนี้จะบันทึกทั้ง stdout และ stderr ของสคริปต์ไปยังไฟล์ logfile.log

5. สรุป​

Cron เป็นเครื่องมือที่มีประสิทธิภาพใน Linux สำหรับการตั้งเวลาให้คำสั่งหรือสคริปต์ต่างๆ รันโดยอัตโนมัติในเวลาที่กำหนดไว้ คุณสามารถใช้คำสั่ง crontab เพื่อจัดการ cron jobs และตั้งค่าการทำงานต่างๆ ได้ตามที่ต้องการ ทั้งนี้คุณสามารถตั้งค่า cron jobs สำหรับการสำรองข้อมูล, การรันสคริปต์, หรือการทำงานอื่นๆ ที่ต้องการความสม่ำเสมอ