linux下的crontab服務:
創(chuàng)新互聯(lián)公司是一家專業(yè)提供江山企業(yè)網(wǎng)站建設,專注與做網(wǎng)站、成都網(wǎng)站建設、html5、小程序制作等業(yè)務。10年已為江山眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設計公司優(yōu)惠進行中。
1、crontab 是用來讓使用者在固定時間或固定間隔執(zhí)行程序之用
在linux平臺上如果需要實現(xiàn)任務調(diào)度功能可以編寫cron腳本來實現(xiàn)。
以某一頻率執(zhí)行任務
linux缺省會啟動crond進程,crond進程不需要用戶啟動、關閉。
crond進程負責讀取調(diào)度任務并執(zhí)行,用戶只需要將相應的調(diào)度腳本寫入cron的調(diào)度配置文件中。
cron的調(diào)度文件有以下幾個:
1. crontab
2. cron.d
3. cron.daily
4. cron.hourly
5. cron.monthly
6. cron.weekly
如果用的任務不是以hourly monthly weekly方式執(zhí)行,則可以將相應的crontab寫入到crontab 或cron.d目錄中。
示例:
每隔一分鐘執(zhí)行一次腳本 /opt/bin/test-cron.sh
可以在cron.d新建腳本 echo-date.sh
內(nèi)容為
*/1 * * * * root /opt/bin/test-cron.sh
2、cron是一個linux下的定時執(zhí)行工具,可以在無需人工干預的情況下運行作業(yè)。由于Cron 是Linux的內(nèi)置服務,如果它不自動起來,可以用以下的方法啟動、關閉這個服務:
/sbin/service crond start //啟動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啟服務
/sbin/service crond reload //重新載入配置
你也可以將這個服務在系統(tǒng)啟動的時候自動啟動:
在/etc/rc.d/rc.local這個腳本的末尾加上:
/sbin/service crond start
現(xiàn)在Cron這個服務已經(jīng)在進程里面了,我們就可以用這個服務了
查看服務是否已經(jīng)運行用 ps -ax | grep cron
3、crontab命令
查看該用戶下的crontab服務是否創(chuàng)建成功, 用 crontab -l 命令
命令 which php 查看linux下安裝的php的路徑
cron服務提供crontab命令來設定cron服務的,以下是這個命令的一些參數(shù)與說明:
crontab -u //設定某個用戶的cron服務,一般root用戶在執(zhí)行這個命令的時候需要此參數(shù)
crontab -l //列出某個用戶cron服務的詳細內(nèi)容
crontab -r //刪除沒個用戶的cron服務
crontab -e //編輯某個用戶的cron服務
比如說root查看自己的cron設置:crontab -u root -l
再例如,root想刪除fred的cron設置:crontab -u fred -r
在編輯cron服務時,編輯的內(nèi)容有一些格式和約定,輸入:crontab -u root -e
進入vi編輯模式,編輯的內(nèi)容一定要符合下面的格式:*/1 * * * * ls /tmp/ls.txt
任務調(diào)度的crond常駐命令crond 是linux用來定期執(zhí)行程序的命令。當安裝完成操作系統(tǒng)之后,默認便會啟動此 任務調(diào)度命令。crond命令每分鐘會定期檢查是否有要執(zhí)行的工作,如果有要執(zhí)行的工作便會自動執(zhí)行該工作。
crontab命令選項:
-u指定一個用戶
-l列出某個用戶的任務計劃
-r刪除某個用戶的任務
-e編輯某個用戶的任務
4、cron文件語法:
分 小時 日 月 星期 命令
0-59 0-23 1-31 1-12 0-6 command (取值范圍,0表示周日一般一行對應一個任務)
5、 新增調(diào)度任務
新增調(diào)度任務可用兩種方法:
1)、在命令行輸入: crontab -e 然后添加相應的任務,wq存盤退出。
2)、直接編輯/etc/crontab 文件,即vi /etc/crontab,添加相應的任務。
6、 查看調(diào)度任務
crontab -l //列出當前的所有調(diào)度任務
crontab -l -u jp //列出用戶jp的所有調(diào)度任務
7、 刪除任務調(diào)度工作
crontab -r //刪除所有任務調(diào)度工作
8、 任務調(diào)度執(zhí)行結果的轉向
例1:每天5:30執(zhí)行l(wèi)s命令,并把結果輸出到/jp/test文件中
30 5 * * * ls /jp/test 21
注:21 表示執(zhí)行結果及錯誤信息。
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //如果出現(xiàn)錯誤,或者有數(shù)據(jù)輸出,數(shù)據(jù)作為郵件發(fā)給這個帳號
HOME=/ //使用者運行的路徑,這里是根目錄
# run-parts
01 * * * * root run-parts /etc/cron.hourly //每小時執(zhí)行/etc/cron.hourly內(nèi)的腳本
02 4 * * * root run-parts /etc/cron.daily //每天執(zhí)行/etc/cron.daily內(nèi)的腳本
22 4 * * 0 root run-parts /etc/cron.weekly //每星期執(zhí)行 /etc/cron.weekly內(nèi)的腳本
42 4 1 * * root run-parts /etc/cron.monthly //每月去執(zhí)行/etc/cron.monthly內(nèi)的腳本
大家注意”run-parts”這個參數(shù)了,如果去掉這個參數(shù)的話,后面就可以寫::要運行的某個腳本名,而不是文件夾名了。
總結:
編寫定時任務的兩種方式:1.sudo vim /etc/crontab 2. sudo crontab -e
查看定時任務的兩種方式:1.sudo cat /etc/crontab 2.sudo crontab -l
*/1 * * * * appuser cd /app/webserver/website/api-cb.chuchujie.com/master/current/script/ ./back_coupon.sh 2 10 /dev/null 21
查看定時任務是否運行:
sudo tail -f /var/log/cron //定時任務日志(查看剛才設置的任務是否執(zhí)行)
注:腳本有可執(zhí)行權限
sh a.sh(不需要執(zhí)行權限)
./sh (需要執(zhí)行權限)
1.當shell腳本具有可執(zhí)行權限時,用sh filename與./filename執(zhí)行腳本是沒有區(qū)別的。./filename是因為當前目錄沒有在PATH中,所有"."是用來表示當前目錄的。
crond是Linux下用來周期性的執(zhí)行某種任務或等待處理某些事件的一個守護進程,與windows下的計劃任務類似,在CentOS Linux release 7.2.1511中默認是開機啟動的,大家可以使用命令:systemctl status crond進行查看。 crond進程定期(每分鐘)檢查是否有要執(zhí)行的任務,如果有要執(zhí)行的任務,則自動執(zhí)行該任務。用戶在cron表
(也被稱為crontab文件)指定了定時任務,crontab也就是我們常見的定時任務設置命令。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目錄中。其文件名與用戶名一致,使用者權限文件如下:
通過以上幫助信息,我們可以知道crond是執(zhí)行任務計劃的一個守護進程。在使用crontab之前我們可以根據(jù)幫助信息來設置相關選項,一般情況下我們都使用默認值。
1.建立演示賬號crontab。
2.星號(*)使用舉例。
以上例子中完整演示了crontab從建立到執(zhí)行的過程?!? 0 * * * echo "GeekDevOps"”表示在每天00:05執(zhí)行命令:echo "GeekDevOps"。后面的星號表示只要前面條件滿足都執(zhí)行。例子中的-u選項指定了用戶:crontab,-l選項列舉了相關用戶的用戶任務調(diào)度,不指定用戶則默認為root。執(zhí)行結果默認寫入到用戶mail目錄下的相關文件中。
3.逗號(,)的使用舉例。
現(xiàn)在我們已經(jīng)把用戶切換到crontab下,因此無需額外指定-u選項相關內(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)設置執(zhí)行的值基本是沒有問題的?,F(xiàn)在我們要刪除已經(jīng)設置的這些定時任務。
例子中,選項-r表示刪除所有定時任務。選項-i表示在刪除前進行再次確定,輸入y或者Y才能真正刪除。
7.備份我們設置的用戶任務調(diào)度配置文件。
8.系統(tǒng)任務調(diào)度的使用舉例。
系統(tǒng)任務調(diào)度與用戶任務調(diào)度不一樣,需要直接在/etc/crontab里面配置,如果需要指定用戶,還需要在執(zhí)行命令前指定用戶名。通過crontab -l 命令是查看不到系統(tǒng)任務調(diào)度任務的。
1、查看定時執(zhí)行的文件:命令:“crontab -l”,如同ll或者ls一樣,顯示定時任務列表信息。
2、查看定時任務詳細信息,定時任務腳本前面的 * * * * *和數(shù)字意思解釋如下:從左到右,依次是:分、時、日、月、星期。
3、修改定時腳本里面的執(zhí)行內(nèi)容。
4、查看定時腳本執(zhí)行內(nèi)容。
5、編輯定時執(zhí)行計劃。這個方式和修改文件類似。使用命令:"crontab -e" ,e表示edit修改的意思。
6、修改腳本路徑,腳本的具體執(zhí)行時間等。如果是每隔10分鐘執(zhí)行一次命令是:“*/10 * * * * /腳本.sh”。
linux怎么設置定時任務呢,下面就讓我們來看看吧。
1、在終端窗口中輸入systemctlstatus命令查看atd服務是否開啟。
2、輸入date命令查看當前的時間。
3、輸入at+時間命令進行定時,at命令后面跟的是時分。
4、輸入mkdir/root/linux1609命令,回車列出要執(zhí)行任務。
5、按Ctrl+V組合鍵終止當前的定時任務設置。
6、輸入at+l命令,回車查看當前已經(jīng)存在的任務。
以上就是小編的分享,希望能幫助的大家。
與crond不同的是,at任務調(diào)度是一次性的,而crond是重復性的
1.1 at命令是一次性定時計劃任務,at的守護進程atd會以后臺模式運行,檢查作業(yè)隊列來運行
1.2 默認情況下,atd守護進程每60s檢查作業(yè)隊列,有作業(yè)時,會檢查作業(yè)運行時間,如果時間與當前時間匹配,則運行此作業(yè)
1.3 at命令是一次性定時計劃任務,執(zhí)行完一個任務后就不再執(zhí)行這個任務了
1.4 在使用at命令的時候,一定要保證atd進程的啟動,可以使用相關指令查看
ps -ef | grep atd 可以檢查atd是否在運行
at [選項] [時間]
按兩次 ctrl+d 結束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)設置的任務,atrm 編號
可以用atq列出待執(zhí)行的任務,列出后第一列就是job編號