Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> สมาร์ทโฟน >> Linux

วิธีจัดตารางงานครั้งเดียวใน Linux ด้วยคำสั่ง at

คู่มือนี้สอนใช้คำสั่ง at สำหรับจัดตารางงาน (Schedule) ที่รัน เพียงครั้งเดียว ในอนาคต ต่างจาก cron ที่รันซ้ำ

ความแตกต่าง at vs cron

คุณสมบัติatcron
ความถี่รันครั้งเดียวรันซ้ำตามตาราง
รูปแบบเวลาภาษาธรรมชาติ (10pm tomorrow)Cron expression (*, */5, ฯลฯ)
เหมาะสำหรับงานครั้งเดียว, Backup ครั้งเดียว, Reboot ทีหลังงานประจำวัน/สัปดาห์, Log rotation

ตรวจสอบและเริ่ม at daemon

# ps -ef | grep atd
# /etc/init.d/atd start    # หรือ systemctl start atd

รูปแบบคำสั่งพื้นฐาน

# at -f script.sh -v 18:30
  • -f script.sh - ไฟล์สคริปต์ที่จะรัน
  • -v 18:30 - เวลาที่จะรัน (HH:MM)

รูปแบบเวลาที่ยืดหยุ่น (Natural Language)

# at -f script.sh 10pm tomorrow
# at -f script.sh 2:50 tuesday
# at -f script.sh 6:00 july 11
# at -f script.sh 2:00 next week
# at -f script.sh now + 30 minutes
# at -f script.sh noon
# at -f script.sh midnight
# at -f script.sh teatime      # 16:00

จัดการงาน at

ตัวอย่างการใช้งานจริง

# 1. สร้างสคริปต์ backup
cat > /home/user/backup.sh << 'EOF'
#!/bin/bash
tar -czf /backup/backup-$(date +%F).tar.gz /home/user/data
EOF
chmod +x /home/user/backup.sh

# 2. จัดตารางรันพรุ่งนี้ 02:00
at -f /home/user/backup.sh 02:00 tomorrow

# 3. ตรวจสอบคิว
atq

ไฟล์ควบคุมการเข้าถึง

  • /etc/at.allow - ผู้ใช้ในไฟล์นี้เท่านั้นที่ใช้ at ได้
  • /etc/at.deny - ผู้ใช้ในไฟล์นี้ ห้ามใช้ at (default: ว่าง = ทุกคนใช้ได้)

คำสั่ง at เหมาะสำหรับงานที่ต้องการรันครั้งเดียวในเวลาเฉพาะ ไม่ต้องตั้งค่า cron ซับซ้อน

คำสั่งคำอธิบาย
atqแสดงคิวงานที่รอรัน (at queue)
at -c <job-id>แสดงเนื้อหาสคริปต์ของงาน
atrm <job-id>ลบงานจากคิว
atrm $(atq | awk '{print $1}')ล้างคิวทั้งหมด