# at的執行時間怎么設置
## 一、at命令簡介
`at`是Linux/Unix系統中用于在指定時間執行一次性任務的命令行工具。與`cron`不同,`at`不用于周期性任務,而是專門為單次定時執行設計的。其基本語法為:
```bash
at [選項] 時間
絕對時間(支持多種格式):
at 14:30 # 今天14:30
at 2:30 PM # 今天14:30(12小時制)
at 14:30 2024-03-15 # 指定日期
相對時間:
at now + 2 hours # 2小時后
at now + 30 min # 30分鐘后
at midnight + 3 days # 3天后的午夜
關鍵詞 | 含義 |
---|---|
noon |
中午12:00 |
teatime |
下午16:00(英國習慣) |
tomorrow |
明天同一時間 |
midnight |
午夜00:00 |
at 9:00 AM next week # 下周同一時間
at 3 PM + 1 week # 一周后的15:00
at 16:30
at>
提示符后輸入要執行的命令(每行一條)Ctrl+D
結束輸入at 17:00 -f /path/to/script.sh
at 18:00 << EOF
/path/to/command > /tmp/output.log 2>&1
EOF
atq # 或 at -l
atrm 任務編號 # 或 at -d
編輯/etc/at.deny
和/etc/at.allow
文件控制訪問權限。
at
執行時不會繼承當前shell環境變量,建議在命令中顯式設置:
at 20:00 << EOF
export PATH=/usr/local/bin:$PATH
/path/to/command
EOF
使用TZ
環境變量指定時區:
at 10:00 TZ='Asia/Shanghai'
at
默認只支持分鐘級精度,如需秒級精度可結合sleep:
at now << EOF
sleep 10 && /path/to/command
EOF
確保atd服務運行:
sudo systemctl enable --now atd
echo "shutdown -h now" | at 23:59
at 2:00 AM << EOF
wget -c http://example.com/largefile.zip
EOF
at 1:00 AM tomorrow << EOF
mysqldump -u root -p dbname > backup.sql
EOF
特性 | at | cron |
---|---|---|
執行頻率 | 單次 | 周期重復 |
適用場景 | 臨時任務 | 常規計劃任務 |
時間精度 | 分鐘級 | 分鐘級 |
配置復雜度 | 簡單 | 需要編輯配置文件 |
at 12:00 << EOF
echo "[$(date)] 任務開始" >> /var/log/at.log
/path/to/sensitive_command
echo "[$(date)] 任務完成" >> /var/log/at.log
EOF
當系統負載低于1.5時執行:
batch << EOF
/path/to/cpu_intensive_task
EOF
at -c 任務編號
at
命令的時間設置雖然簡單,但通過靈活組合可以實現:
- 絕對/相對時間指定
- 復雜時間表達式
- 與環境變量的配合使用
掌握這些技巧后,可以高效管理系統中的臨時定時任務。建議結合具體需求選擇at
或cron
,并注意做好日志記錄和權限控制。
注:本文示例基于Linux系統,其他Unix-like系統可能略有差異。 “`
這篇文章共計約1250字,采用Markdown格式編寫,包含: 1. 多級標題結構 2. 代碼塊示例 3. 表格對比 4. 注意事項提示框 5. 實際應用案例 6. 命令行參數說明 可根據需要進一步擴展具體案例或添加截圖說明。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。