at — 排程一次性工作(指定時間執行一次)
排程工作在指定的未來時間執行一次(非週期性)。
語法
at 時間 [選項]
常用選項
| 選項 | 說明 | 範例 |
|---|---|---|
-l / atq |
列出待執行的排程工作 | at -l |
-d N / atrm N |
刪除工作號碼 N 的排程 | at -d 3 |
-f 檔案 |
從指定檔案讀取要執行的指令 | at -f commands.sh 3pm |
-m |
工作完成後傳送 email(即使沒有輸出) | at -m 3pm |
-v |
顯示工作執行的時間 | at -v 3pm |
-q 佇列 |
指定佇列(a-z,預設 a) | at -q b 3pm |
使用範例
範例 1:30 分鐘後執行備份
在指定時間後執行一次腳本,at 會進入互動模式,輸入完按 Ctrl+D 確認。
$ at now + 30 minutes << 'EOF'
/home/user/backup.sh
EOF
job 5 at Tue May 20 11:00:00 2026
範例 2:今天下午 3 點執行
使用直觀的時間表示法。
$ echo '/usr/local/bin/send-report.sh' | at 3pm
job 6 at Tue May 20 15:00:00 2026
範例 3:查看與管理排程工作
$ atq # 列出所有排程
at -d 6 # 刪除工作 6
5 Tue May 20 11:00:00 2026 a user
6 Tue May 20 15:00:00 2026 a user
範例 4:時間格式範例
at 支援多種時間格式。
$ at 14:30 # 今天 14:30
at 2:30pm tomorrow # 明天下午 2:30
at now + 2 hours # 2 小時後
at midnight # 今晚午夜
at noon + 3 days # 3 天後中午
常見錯誤與排錯
Can't open /var/run/atd.pid to signal atd. No atd running?
- 原因
- atd 服務未啟動。
- 解法
- sudo systemctl start atd && sudo systemctl enable atd