การตั้งเวลาทำงาน

จาก Wiki Opensource

บันทึกนี้ปรับปรุงล่าสุดเมื่อวันที่ 21-03-2555

ดูแลโดย WIPAT

  • เป็นคำแนะนำเทคนิคการตั้งเวลาให้ระบบทำงานโดยอัตโนมัติ


  1. โปรแกรม cron ใช้สำหรับตั้งเวลาการทำงานแฟ้มชุดคำสั่งที่เตรียมไว้โดยอัตโนมัติตามเวลาที่ กำหนด และทำซ้ำตามรอบเวลา กำหนดได้ละเอียดที่สุดเป็น 1 นาที
  2. แฟ้ม /etc/crontab เก็บข้อมูลหลัก แล้วแยกเป็นคาบเวลาย่อยคือ
    รายชั่วโมง อยู่ที่ /etc/cron.hourly
    รายวัน อยู่ที่ /etc/cron.daily
    รายสัปดาห์ อยู่ที่ /etc/cron.weekly
    รายเดือน อยู่ที่ /etc/cron.monthly
    คาบเวลาอื่นๆตั้งค่าตามใจชอบ อยู่ที่ /etc/cron.d
  3. ข้อมูลในแฟ้มการตั้งค่าของ cron มีรูปแบบตัวอย่างว่า
    25 6    * * *    root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily
    แยกเป็นว่า
    minutes hours day-of-month month day-of-week user  command
    ตัวเลขแรกมีค่าระหว่าง 0-59 เป็นตัวเลขนาทีที่เริ่มทำงาน  ถ้าเป็นเครื่องหมาย * เป็นการทำงานทุกนาที
    ตัวเลขที่ 2 มีค่าระหว่าง 0-23 เป็นตัวเลขชั่วโมงที่เริ่มทำงาน  ถ้าเป็นเครื่องหมาย * เป็นการทำงานทุกชั่วโมง
    ตัวเลขที่ 3 มีค่าระหว่าง 1-31 เป็นตัวเลขวันที่เริ่มทำงาน  ถ้าเป็นเครื่องหมาย * เป็นการทำงานทุกวัน
    ตัวเลขที่ 4 มีค่าระหว่าง 1-12 เป็นตัวเลขเดือนที่เริ่มทำงาน  ถ้าเป็นเครื่องหมาย * เป็นการทำงานทุกเดือน
    ตัวเลขที่ 5 มีค่าระหว่าง 0-6 เป็นตัวเลขวันในสัปดาห์ที่เริ่มทำงาน  ถ้าเป็นเครื่องหมาย * เป็นการทำงานทุกวัน
    ข้อความช่องที่ 6 คือการกำหนดให้ cron ทำงานด้วยสิทธิ์ของผู้ใช้ระดับใด
    ข้อความช่องที่ 7 คือคำสั่งโปรแกรมที่ต้องให้ไปทำงาน
  4. หลังติดตั้ง ubuntu แล้ว จะมี cron พร้อมทำงาน แต่ไม่มีแฟ้มเก็บ log ของ cron ให้สร้างใหม่เองดังนี้
    สร้างแฟ้ม /var/log/cron.log ด้วยคำสั่ง
    sudo touch /var/log/cron.log
    แก้ไขแฟ้ม /etc/rsyslog.d/50-default.conf
    แก้ไขตัวแปรเปิดให้ cron ทำงานเป็น  cron.*  /var/log/cron.log
    เสร็จแล้วสั่งให้ rsyslog ทำงานใหม่ด้วยคำสั่ง sudo /etc/init.d/rsyslog restart
  5. แนะนำตัวอย่างการใช้งานตั้งเวลาให้ระบบตรวจสอบทำงานทุกเช้ามืด แล้วรายงานผลส่งทางอีเมล์
    สร้างแฟ้ม /etc/cron.d/mycron มีข้อมูลว่า
    MAILTO=myuser@mydomain.com
    10 0 * * * root sh /root/mydaily.sh
    สร้างแฟ้ม /root/mydaily.sh มีข้อมูลว่า
    #!/bin/bash
    /usr/sbin/ntpdate pool.ntp.org
    uptime
    grep "ERR" /var/log/kern.log
    grep "DRDY" /var/log/kern.log
    df -h
    vmstat
    หาก server พร้อมส่งอีเมล์ก็จะมีการส่งอีเมล์มาให้ตามตัวแปร MAILTO ด้วย
  6. หากต้องการให้ระบบส่งอีเมล์แจ้งผลการทำงานของ cron ทั้งระบบด้วย
    ให้แก้ไขแฟ้ม /etc/crontab
    เพิ่มตัวแปรบรรทัดข้อความดังตัวอย่าง MAILTO=root
    เสร็จแล้วสั่งให้ cron ทำงานใหม่ด้วยคำสั่ง sudo /etc/init.d/cron restart