cron job ใช้สั่งงานตามเวลาที่กำหนด
cron job เอาไว้ใช้สั่งรันคำสั่ง หรือสคริปตามเลขเวลานะครับ แต่ถ้ามีสิ่งที่ต้องรันเยอะๆ ก็ไม่แนะนำนะครับ เพราะว่ามันไม่ทราบว่าสิ่งที่รันไปก่อนหน้าจะทำงานเสร็จแล้วรึยัง มันจะทำหน้าที่แค่รันอย่างเดียว อาจจะต้องไปใช้พวกโปแกรมที่ทำหน้าที่ด้านนี้โดยตรงเช่น air flow
- crontab -e เข้าไปที่ไฟล์ cron job กด 1 เพื่อใช้ nano แล้วกด ctrl + / + v เพื่อไปล่างสุดนะครับ
- ภายในไฟล์จะมีโครงสร้างคำสั่งในรูปแบบ m h dom mon dow command โดย m(min)=0-59 นาที, h(hour)=0-23 ชม., dom(day of month)=1-31 วัน, mon(month)=1-12 เดือน, dow(day of week)=0-6 วันในสัปดาห์ (น่าจะเริ่ม 0 ที่วันเสาร์) เช่น 0 1 * * 1-5 /home/NameUser/ScriptName.sh ซึ่งจะหมายถึงรันไฟล์ ScriptName.sh ทุกๆ ตีหนึ่ง วันจันทร์ ถึงศุกร์ นะครับ (ถือว่านาทีที่ 60 ใช้เลข 0)
- Ctrl+s --> Ctrl+x เพื่อเซฟ
- sudo systemctl restart cron สั่งให้ระบบโหลดคำสั่งใน cron job ใหม่อีกครั้ง กรณีที่ไม่ได้รีสตาร์ทเครื่อง
- กรณีที่ต้องการทำให้บางโปรแกรมเริ่มทำงานตอน startup นะครับ ก่อนอื่นต้องหาตัวรันโปรแกรมก่อนด้วยคำสั่ง locate -b AppName | grep -w bin (ถ้าทำบน server) หรือคลิ๊กขวาที่ไอคอนโปรแกรมแล้วเลือก Edit Application ดูที่ Command จะมีคำสั่งที่ใช้รัน app อยู่นะครับ
- ไปที่ crontab -e แล้วใส่ @reboot Command หรือกรณีใช้แบบ GUI ไปที่ Menu > Setting > Session and Startup > Application Autostart > เลือกคลิ๊ก + ด้านล่างซ้าย > ใส่ชื่อ และเอา Command มาใส่แล้วกด OK นะครับ
- กรณีที่ไม่มั่นใจว่า cron job ทำงานอยู่ไหมให้ใช่คำสั่ง sudo systemctl status cron ถ้าไม่เปิดให้ใช้คำสั่ง sudo systemctl enable cron นะครับ
- อันนี้ไว้ดูการทำงานของ cron นะครับ grep CRON /var/log/syslog ถ้าพบความผิดพลาดอะไรมันจะแจ้งไว้ที่นี่
- อย่างของผมเจอ error ประมาณนี้ (CRON) info (No MTA installed, discarding output)
ซึ่งต้องติดตั้งตัวนี้เพิ่มก่อนนะครับ sudo apt-get install postfix ถึงจะใช้งานได้ตามปกติ
ปล. มีเว็บที่จะช่วยให้เราทดลองการตั้งค่าได้ง่ายๆ ไปที่นี้ครับ ส่วนอันนี้ของคนไทยอีกอันที่อธิบายได้ละเอียดดีครับ
ความคิดเห็น
แสดงความคิดเห็น