วันพฤหัสบดีที่ 18 พฤษภาคม พ.ศ. 2560

วิธีใช้งาน Crontab (Cron Jobs) บน Raspberry

Cron GUI

A graphical application for Cron is available by installing the gnome-schedule package:
 
sudo apt-get install gnome-schedule
Crontab คือคำสั่งที่จะทำงานตามเวลาที่กำหนด ซึ่งจะช่วยทำให้เราสะดวกขึ้นมากในการที่จะต้องสั่งงานบางอย่างซ้ำๆ กันหลายๆ ครั้ง อาจจะเป็นทุกๆ ชั่วโมง ทุกๆ วัน หรือ ทุกๆ เดือน เช่นการสั่งให้ Server ทำ Backup ทุกๆ สัปดาห์

คำสั่งและ option ของ crontab มีดังนี้
#crontab filename การนำเอาคำสั่ง crontab เข้ามาจาก ไฟล์อื่น
#crontab -e แก้ไข crontab ปัจจุบัน (ส่วนมากเราจะเพิ่มคำสั่งลงไปในนี้เลย)
#crontab -l ดูคำสั่ง crontab ทั้งหมดที่มีอยู่
#crontab -r ลบคำสั่ง crontab ที่มีทั้งหมด
#crontab -u user เป็นคำสั่งของผู้ดูแลระบบเท่านั้น เพื่อใช้ดู แก้ไข ลบ crontab ของ user แต่ละคน

เมื่อเรียกคำสั่งตามข้างบนแล้ว crontab จะเข้าสู่ระบบการ กำหนด หรือแก้ไข ซึ่งการกำหนด หรือแก้ไขนี้จะเหมือนกับการใช้งาน vi

รูปแบบของคำสั่ง crontab มีทั้งหมด 6 fields ดังนี้
1 = minute มีค่า 0 - 59 เวลาเป็นนาที จะสั่งให้คำสั่งที่กำหนดทำงานทันที่เมื่อถึงนาทีที่กำหนด
2 = hour มีค่า 0 - 23 เวลาเป็นชั่วโมง จะสั่งให้คำสั่งที่กำหนดทำงานทันที่เมื่อถึงชั่วโมงที่กำหนด
3 = day มีค่า 1 - 31 เวลาเป็นวัน จะสั่งให้คำสั่งที่กำหนดทำงานทันที่เมื่อถึงวันที่กำหนด
4 = month มีค่า 1 - 12 เวลาเป็นเดือน จะสั่งให้คำสั่งที่กำหนดทำงานทันที่เมื่อถึงเดือนที่กำหนด
5 = weekday มีค่า 0 - 6 วันขะงแต่ละสัปดาห์ มีค่าดังนี้ (อาทิตย์ = 0, จันทร์ = 1, อังคาร = 2, พุธ = 3, พฤหัส = 4, ศุกร์ = 5 ,เสาร์ = 6 )
6 = command คำสั่ง เราสามารถกำหนดคำสั่งได้มากมาย รวมทั้ง script ต่าง ๆ ตามที่เราต้องการ

โดยสามารถจำเป็นรูปแบบง่ายได้ดังนี้
* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)


เริ่มเพิ่ม Cron Jobs โดยใช้คำสั่ง
crontab -e

จากนั้นเพิมพ์คำสั่งดังต่อไปนี้ได้เลย
1 2 3 4 5 /path/to/script.sh

ยกตัวอย่างคำสั่ง Crontab รูปแบบต่างๆ

การสั่งให้ /path/to/command ทำงานเมื่อเวลาผ่านไป 5นาที หลังเที่ยงคืน ในทุกๆ วัน
5 0 * * * /path/to/command

การสั่งให้ /path/to/script.sh ทำงานเวลา 14.25น. ของวันที่ 1 ในทุกๆ เดือน
15 14 1 * * /path/to/script.sh

การสั่งให้ /scripts/phpscript.php ทำงานเวลา 22.00น. ในทุกๆ วัน ยกเว้นวันเสาร์ อาทิตย์
0 22 * * 1-5 /scripts/phpscript.php

โดยปกติแล้วเมื่อ Cron Jobs ทำงานระบบจะส่ง E-Mail เพื่อแจ้งให้ Server Admin หรือ User ที่ตั้ง Cron Jobs ทราบว่า Cron Jobs ทำงานเรียบร้อยหรือติดปัญหาอย่างไร

หากต้องการให้ Cron Jobs ส่ง E-Mail ไปยังบัญชีที่เราตั้งค่าไว้เราสามารถเพิ่มคำสั่งได้ดังนี้
MAILTO="admin@domain.com"
0 3 * * * /root/backup.sh


หากเราไม่ต้องการให้ระบบส่ง E-Mail เราสามารถตั้งค่า Cron Jobs ได้โดยเพิ่ม /dev/null 2>&1 ตามหลัง command ที่จะสั่งให้ทำงาน ยกตัวอย่างเช่น
0 1 5 10 * /path/to/script.sh >/dev/null 2>&1

ทำการ save แล้วสั่ง
/etc/init.d/crond restart

Run a task on reboot

To run a command every time the Raspberry Pi starts up, write @reboot instead of the time and date. For example:
@reboot python /home/pi/myscript.py
This will run your Python script every time the Raspberry Pi reboots. If you want your command to be run in the background while the Raspberry Pi continues starting up, add a space and & at the end of the line, like this:
@reboot python /home/pi/myscript.py &
 
เช่น
รันคำสั่ง reboot ทุก 5 นาที
*/5 * * * * /sbin/reboot
หรือ
*/5 * * * * reboot
 รันคำสั่ง reboot ทุก 16:55
55 16 * * * /sbin/reboot

รันคำสั่ง reboot ทุก วันที่ 15 ของทุกเดือน
* * 15 * * /sbin/reboot 

ไม่มีความคิดเห็น:

แสดงความคิดเห็น