How to set a crontab to run command on the last day of every month.
เป็นที่ทราบกันดีว่าใน crontab ของ linux มีแค่การกำหนด เวลา วัน เดือน ในการทำงานเท่านั้น หากว่าจะต้องการให้ทำงานในวันสุดท้ายของเดือน หรือ เสาร์แรกของเดือน จะไม่สามารถทำได้ แต่ถ้าหากรู้วิธีการเขียน script ก็สามารถใช้ script มาช่วยในการควบคุมการทำงานอีกต่อหนึ่งได้ ซึ่งในบทความนี้ผมได้นำตัวอย่าง script ที่ใช้ร่วมกับ crontab เพื่อให้สามารถกำหนดวันการทำงานได้อย่างถูกต้องตามความต้องการมากขึ้น
ตัวอย่าง script ที่จะให้ทำงานในวันสุดท้ายของเดือน
สร้างไฟล์ lastdaymonth.sh
1 2 3 |
[root@Ezylinux ~]# vi /root/lastdaymonth.sh |
1 2 3 4 5 6 7 8 9 10 11 12 |
#!/bin/bash TODAY=`/bin/date +%d` TOMORROW=`/bin/date +%d -d "1 day"` # See if tomorrow's day is less than today's if [ $TOMORROW -lt $TODAY ]; then COMMAND //ใส่คำสั่งที่ต้องการให้ทำงาน fi exit 1 |
สร้าง schedule การทำงาน
1 2 3 |
[root@Ezylinux ~]# crontab -e |
1 2 3 |
1 0 * * * /root/lastdaymonth.sh |
ตัวอย่าง script ที่จะให้ทำงานในวันเสาร์แรกของเดือน
สร้างไฟล์ 1stSat.sh
1 2 3 |
[root@Ezylinux ~]# vi /root/1stSat.sh |
1 2 3 4 5 6 7 8 9 |
#!/bin/bash DAY=`date +%d` if (($DAY <= 7)) ; then COMMAND //ใส่คำสั่งที่ต้องการให้ทำงาน fi exit 1 |
สร้าง schedule การทำงาน
1 2 3 |
[root@Ezylinux ~]# crontab -e |
1 2 3 |
1 0 * * 6 /root/1stSat.sh |