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

延伸閱讀