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 สำหรับการสำรองข้อมูล, การรันสคริปต์, หรือการทำงานอื่นๆ ที่ต้องการความสม่ำเสมอ