1. atd 和 crond 兩個任務管理程序的區別
-
atd:用于執行一次性的定時任務,即設置任務在某個特定的時間點僅執行一次 ,適合處理不需要重復執行的定時操作,比如在未來某個確切時間執行一個腳本、發送一份文件等場景。
-
crond:用于執行周期性的定時任務,可按照設定的周期(如每分鐘、每小時、每天、每周等)重復執行任務,常用來做系統監控、日志備份、定期數據清理或生成等周期性需求。
對比項 atd crond 任務執行性質 一次性定時任務,任務僅執行一次 周期性定時任務,按周期重復執行 適用場景 未來某個特定時間點執行單次操作,如臨時定時發文件、跑腳本 需周期性執行的任務,如日志備份、系統監控、定期數據處理 配置方式 通過 at
、atq
、atrm
等命令配置通過 crontab
命令(編輯用戶或系統級定時任務表 )配置任務調度邏輯 提交任務到隊列,到指定時間觸發執行 依據預設的時間周期規則(分、時、日、月、周等維度組合)循環觸發
2. 指定在 2025/08/15 09:00 將時間寫入 testmail.txt 文件中
1. 安裝 at 軟件包
- at命令需要安裝
[root@master ~]# yum install at -y
[root@master ~]# at -V # 大寫V
at version 3.2.2
2. 啟動并配置 atd 服務
- 啟動服務
[root@master ~]# systemctl start atd
[root@master ~]# systemctl enable --now atd # 設置開機啟動
[root@master ~]# systemctl status atd # 查看狀態
3.創建定時任務
使用 at
命令實現,步驟如下:
- 在終端輸入
at 09:00 2025-08-15
,回車進入at
任務編輯模式。 - 在編輯模式中輸入
date > testmail.txt
,然后按Ctrl + D
保存并退出,這樣就設置好了在指定時間將當前時間寫入testmail.txt
文件的任務 。
[root@master ~]# at 9:00 2025-08-15
warning: commands will be executed using /bin/sh
at Fri Aug 15 09:00:00 2025
at> date > testmail.txt
at> <EOT>
job 11 at Fri Aug 15 09:00:00 2025
3. 指定每天凌晨 4:00 將該時間點之前的日志信息備份到某個目錄下(/var/log/messages ),備份后日志文件名顯示格式 logfileYY - MM - DD - HH:MM:SS
1. 配置定時任務
crontab 是 Linux 下實現定時任務的工具,/etc/crontab
是系統級任務配置文件。編輯它來設定凌晨 4 點執行備份:
[root@server ~]# vim /etc/crontab # 編輯系統計劃任務
進入文件后,添加定時任務條目。crontab 的時間規則是 分 時 日 月 周
,要凌晨 4 點執行,所以分鐘設為 0,小時設為 4,即 0 4 * * *
。執行用戶是 root
,執行的命令是把日志文件按要求備份并命名:
0 4 * * * root /bin/cp /var/log/messages /var/log/logfile`date +\%y-\%m-\%d-\%H:\%M:\%S`
反引號`` 表示將引起的內容識別為命令
在crontab系統中%表示換行,需要增加轉義符\
2. 測試驗證(確保邏輯可行,提前發現問題)
直接等凌晨 4 點驗證不高效,可臨時修改 crontab 里的時間規則,比如改成 * * * * *
(每分鐘執行一次),快速測試任務是否按預期生成備份文件
* * * * * root /bin/cp /var/log/messages /var/log/logfile`date +\%y-\%m-\%d-\%H:\%M:\%S`
測試完后,改回 0 4 * * *
的時間規則,恢復凌晨 4 點執行的需求 。