與crond不同的是,at任務調(diào)度是一次性的,而crond是重復性的
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序、集團企業(yè)網(wǎng)站建設(shè)等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了科爾沁左翼免費建站歡迎大家使用!
1.1 at命令是一次性定時計劃任務,at的守護進程atd會以后臺模式運行,檢查作業(yè)隊列來運行
1.2 默認情況下,atd守護進程每60s檢查作業(yè)隊列,有作業(yè)時,會檢查作業(yè)運行時間,如果時間與當前時間匹配,則運行此作業(yè)
1.3 at命令是一次性定時計劃任務,執(zhí)行完一個任務后就不再執(zhí)行這個任務了
1.4 在使用at命令的時候,一定要保證atd進程的啟動,可以使用相關(guān)指令查看
ps -ef | grep atd 可以檢查atd是否在運行
at [選項] [時間]
按兩次 ctrl+d 結(jié)束at命令的輸入
4.1 當天的hh:mm(小時:分鐘),假如這個時間已經(jīng)過去,那么就第二天的這個時間執(zhí)行。例如04:00
4.2 模糊的詞語,例如midnight、noon、teatime(下午茶時間,16:00左右)
4.3 采用12小時計時制,例如8am
4.4 指定執(zhí)行命令的具體日期,格式為month dat(月 日)或者mm/dd/yy或者dd.mm.yy,指定的日期必須跟著寫在在指定時間的后面,例如:04:00 2021-3-1就是2021年3月1日凌晨4點整執(zhí)行
4.5 相對計時法,指定格式為now + count time-units,now就是當前時間,time-units是時間單位,可以是minutes、hours、days、weeks。count是時間的數(shù)量,例如:now + 5 minutes
4.6 直接用today、tomorrow來指定完成命令的時間
5.1 2天后的下午5點,執(zhí)行/bin/ls /home指令
at 5pm + 2 days 按回車鍵
然后寫下那個時刻要執(zhí)行命令 /bin/ls /home
最后按兩次ctrl+d退出at指令
5.2 atq指令可以直接執(zhí)行,查看系統(tǒng)中待執(zhí)行的工作任務
5.3 明天17:00輸出時間到指定文件內(nèi) /root/date100.log
at 17:00 tomorrow 按回車鍵
date /root/date100.log
按兩次ctrl+d退出at指令的輸入
5.4 2分鐘后
at now + 2 minutes
5.5 刪除已經(jīng)設(shè)置的任務,atrm 編號
可以用atq列出待執(zhí)行的任務,列出后第一列就是job編號
crond是Linux下用來周期性的執(zhí)行某種任務或等待處理某些事件的一個守護進程,與windows下的計劃任務類似,在CentOS Linux release 7.2.1511中默認是開機啟動的,大家可以使用命令:systemctl status crond進行查看。 crond進程定期(每分鐘)檢查是否有要執(zhí)行的任務,如果有要執(zhí)行的任務,則自動執(zhí)行該任務。用戶在cron表
(也被稱為crontab文件)指定了定時任務,crontab也就是我們常見的定時任務設(shè)置命令。Linux下的任務調(diào)度分為兩類,系統(tǒng)任務調(diào)度和用戶任務調(diào)度。
系統(tǒng)任務調(diào)度 :系統(tǒng)周期性所要執(zhí)行的工作,比如寫緩存數(shù)據(jù)到硬盤、日志清理等。/etc/crontab文件就是系統(tǒng)任務調(diào)度的配置文件。
用戶任務調(diào)度 :用戶定期要執(zhí)行的工作,比如用戶數(shù)據(jù)備份、定時郵件提醒等。用戶可以使用 crontab 工具來定制自己的計劃任務。所有用戶定義的crontab文件都被保存在/var/spool/cron目錄中。其文件名與用戶名一致,使用者權(quán)限文件如下:
通過以上幫助信息,我們可以知道crond是執(zhí)行任務計劃的一個守護進程。在使用crontab之前我們可以根據(jù)幫助信息來設(shè)置相關(guān)選項,一般情況下我們都使用默認值。
1.建立演示賬號crontab。
2.星號(*)使用舉例。
以上例子中完整演示了crontab從建立到執(zhí)行的過程?!? 0 * * * echo "GeekDevOps"”表示在每天00:05執(zhí)行命令:echo "GeekDevOps"。后面的星號表示只要前面條件滿足都執(zhí)行。例子中的-u選項指定了用戶:crontab,-l選項列舉了相關(guān)用戶的用戶任務調(diào)度,不指定用戶則默認為root。執(zhí)行結(jié)果默認寫入到用戶mail目錄下的相關(guān)文件中。
3.逗號(,)的使用舉例。
現(xiàn)在我們已經(jīng)把用戶切換到crontab下,因此無需額外指定-u選項相關(guān)內(nèi)容?!? 2,6,8 * * *”表示每天的02:03:00、06:03:00、08:03:00分別執(zhí)行一次命令:ls /usr/local。
4.減號(-)的使用舉例。
例子中的“0 2-6 * * 6 df -h /”表示用戶crontab在每周六的02:00、03:00、04:00、05:00、06:00執(zhí)行命令:df -h / 。
5.斜杠(/)的使用舉例。
例子中表示每隔2分鐘執(zhí)行一次命令:echo "GeekDevOps"/root/GeekDevOps.txt。
6.crontab的使用非常簡單,很容易理解,只要在取值范圍內(nèi)設(shè)置執(zhí)行的值基本是沒有問題的?,F(xiàn)在我們要刪除已經(jīng)設(shè)置的這些定時任務。
例子中,選項-r表示刪除所有定時任務。選項-i表示在刪除前進行再次確定,輸入y或者Y才能真正刪除。
7.備份我們設(shè)置的用戶任務調(diào)度配置文件。
8.系統(tǒng)任務調(diào)度的使用舉例。
系統(tǒng)任務調(diào)度與用戶任務調(diào)度不一樣,需要直接在/etc/crontab里面配置,如果需要指定用戶,還需要在執(zhí)行命令前指定用戶名。通過crontab -l 命令是查看不到系統(tǒng)任務調(diào)度任務的。
周期性的執(zhí)行任務計劃的軟件,Linux定時任務軟件的常用軟件crond
cron是定時任務的軟件名
crond是服務進程名,真正實現(xiàn)定時任務服務
crontab命令是用來設(shè)置定時任務
01.使用定時軟件,可以每天每小時按你的需求重復的執(zhí)行一項工作
02.類似生活中使用的鬧鐘,可以自動完成操作命令,定時備份系統(tǒng)數(shù)據(jù)信息。
01.定時任務服務環(huán)境準備
a. 啟動crond服務 ?
關(guān)閉crond服務:systemctl stop crond.service
啟動crond服務:systemctl start crond.service
查看crond服務狀態(tài):systemctl status crond.service
b.設(shè)置開機自啟動
開機自啟動crond服務:systemctl enable crond.service
開機不啟動crond服務:systemctl disable crond.service
02.系統(tǒng)定時任務
a. 系統(tǒng)定時任務周期:
每小時 ?目錄/etc/cron.hourly
每一天 ?目錄/etc/cron.daily
每一周 ?目錄/etc/cron.weekly
每個月 ?目錄/etc/cron.monthly
b. /etc/crontab 系統(tǒng)定時任務的配置文件之一(有記錄定時任務格式)
c. 系統(tǒng)定時任務+logrotate命令 完成對日志的切割/日志輪詢
/var/log/cron
/var/log/messages
/var/log/secure
02.用戶定時任務
用戶定時任務查看 ? ? ?crontab -l ?== cat /var/spool/cron/root
用戶定時任務編輯 ? ? ?crontab -e ?== ?vim /var/spool/cron/root
定時任務配置文件 ? ? ?/var/spool/cron/root (root文件表示root用戶設(shè)置的定時任務,文件名是根據(jù)用戶名設(shè)置的)
注:定時任務常見提示信息
a. no crontab for root ? 當前用戶沒有編輯定時任務
b. Do you want to retry the same edit ? 定時任務編輯錯誤是否繼續(xù)
03.定時任務編寫語法格式:
定時任務常用符號
* ? ? ? 每 ?
/n ? ? 每隔
- ? ? ? 連續(xù)區(qū)間
, ? ? ? ?分隔
04.定時任務編寫流程
a. 測試定時執(zhí)行命令(定時任務執(zhí)行的命令用絕對路徑)
b. 編寫定時任務信息(先編寫注釋信息,編寫定時任務)
c. 檢查定時任務效果:查看定時任務日志(可以臨時修改定時任務每分鐘執(zhí)行,最終修改定時任務的時間)
定時任務對%不識別,百分號需要轉(zhuǎn)義\%
盡量使用腳本文件實現(xiàn)
a. 測試定時執(zhí)行腳本(定時任務執(zhí)行的腳本利用絕對路徑/bin/sh)
b. 編寫定時任務信息(先編寫注釋信息,編寫定時任務 在任務信息后邊加上/dev/null 21 避免產(chǎn)生很多沒用的小文件占用磁盤inode)
c. 檢查定時任務效果:查看定時任務日志(可以臨時修改定時任務每分鐘執(zhí)行,最終修改定時任務的時間)
定時任務編寫要領(lǐng)
(1)為定時任務規(guī)則加必要的注釋
(2)所有的定時任務盡量都以腳本的形式執(zhí)行
(3)在執(zhí)行的shell腳本前加上/bin/sh
(4)在定時任務中命令或腳本的結(jié)尾加上 /dev/null 21
(5)在指定用戶下執(zhí)行相關(guān)定時任務
(6)生產(chǎn)任務計劃程序中不要隨意打印輸出信息,有輸出的想法去掉
(7)定時任務執(zhí)行的腳本喲啊存放到規(guī)范路徑下
(8)配置定時任務要規(guī)范操作過程,減少出錯
(9)定時任務腳本中程序命令及路徑盡量用全路徑
(10)時間變了%號要用反斜線轉(zhuǎn)義(只有定時任務里時命令時需要)
(11)若腳本中調(diào)用了系統(tǒng)環(huán)境變量,要重現(xiàn)定義
(12)出錯或無法執(zhí)行,就檢查/var/log/cron日志