คู่มือนี้สอนใช้คำสั่ง at สำหรับจัดตารางงาน (Schedule) ที่รัน เพียงครั้งเดียว ในอนาคต ต่างจาก cron ที่รันซ้ำ
ความแตกต่าง at vs cron
| คุณสมบัติ | at | cron |
| ความถี่ | รันครั้งเดียว | รันซ้ำตามตาราง |
| รูปแบบเวลา | ภาษาธรรมชาติ (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
| คำสั่ง | คำอธิบาย |
atq | แสดงคิวงานที่รอรัน (at queue) |
at -c <job-id> | แสดงเนื้อหาสคริปต์ของงาน |
atrm <job-id> | ลบงานจากคิว |
atrm $(atq | awk '{print $1}') | ล้างคิวทั้งหมด |
ตัวอย่างการใช้งานจริง
# 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 ซับซ้อน