Site icon PlusMagi's Blog By Pitt Phunsanit

Linux: Cron Job ล้างขยะ clear cache อัตโนมัติ

จะเป็นการเขียนตัวอย่างการใช้ Cron Job ตั้งเวลาเพื่อที่จะทำ automation task ตั้งเวลาไปลบไฟล์พวก temp หรือ clear cache ที่เป็นขยะในระบบ linux ตามเวลา ยกตัวอย่างโดย ลบไฟล์ Log ต่างๆ มักจะสะสมจนเต็มพื้นที่ดิสก์ การตั้งค่าให้ระบบลบไฟล์เหล่านี้ทิ้งโดยอัตโนมัติในเวลาที่คนใช้งานน้อยที่สุด (เช่น เที่ยงคืนวันอาทิตย์) เป็นวิธีที่ดีในการดูแลรักษาเครื่อง


cron คืออะไร

cron คือ ระบบตั้งเวลาทำงานใน linux และ MacOs เหมือน Windows Task Scheduler ใน windows ก่อนจะเขียนคำสั่ง เราต้องเข้าใจระบบ “5 ดาว” ของ Cron ซึ่งเรียงลำดับดังนี้:

จากโจทย์ ทุกวันอาทิตย์ เวลาเที่ยงคืน จะได้

อะไรที่ไม่ระบุให้ใช้ * แทน
ดังนั้นรหัสเวลาคือ: 0 0 * * 0
หรือจะใช้เว็บ online cron editor อย่าง


คำสั่งตัวอย่าง

การลบ cache จะใช้คำสั่ง
find /tmp -type f -atime +7 -delete
อธิบายคือ

เราสามารถทดสอบว่าคำสั่งนี้ได้ผลตามที่ต้องการมั๋ย โดยการ run ใน terminal ตามปกติได้เลย
find /tmp -type f -atime +7 -ls
ผลลัพธ์ที่แสดงออกมา คุณจะเห็นวันที่และเวลาเข้าถึงครั้งสุดท้ายของแต่ละไฟล์ครับ


เปิดหน้าจัดการ Cron

sudo crontab -e
ถ้าเป็นการใช้ครั้งแรกจะมีตัวเลือกอย่าง
1. /bin/nano <—- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed

Choose 1-4 [1]:
ตอบโดยใช้ edittor ที่ชอบโดยใส่ตัสเลจ แล้ว enter ถ้า enter เลยจะใช่ default คือ 1 nano หลังจากนั้นจะใช้ editor เปิด cron config มาให้แก้


การดู Cron job

sudo crontab -l


การเพิ่ม / แก้ / ลบ Cron job

  1. เปิดโดยคำสั่ง
    sudo crontab -e
  2. การแก้ไข
    • การเพิ่มก็เลื่อนลงมา แล้ว ใส่ข้อความในรูบแบบ
      รหัสเวลา ว่าง คำสั่ง
      เช่น
      0 0 * * 0 find /tmp -type f -atime +7 -delete
    • การแก้บรรทัดที่ตรงกับคำสั่งต้องการ แล้วแก้ในรูปแบบเหมือน การเพิ่ม
    • การลบ คือหาแล้วลบบรรทัดที่ตรงกับคำสั่ง
  3. save อย่าง nano ใช้ control + x แล้ว Y
    • ถ้าเขียนผิด: เมื่อกดออกจาก Editor ระบบจะแจ้งเตือนว่า crontab: installing new crontab พร้อมข้อความ Error และถามว่าคุณจะแก้ไขใหม่หรือไม่ (Edit again? [y/n])

อ่านเพิ่มเติม

Exit mobile version