摘要:博文參考計劃任務(wù)未來的某時間點執(zhí)行一次任務(wù)系統(tǒng)自行選擇空閑時間去執(zhí)行此處指定的任務(wù)周期性運行某任務(wù)命令用于在指定時間執(zhí)行命令。用戶可以使用工具來定制自己的計劃任務(wù)。系統(tǒng)任務(wù)運行計算機關(guān)機時不運行的任務(wù),以后版本取消服務(wù),由服務(wù)管理。
博文參考
http://www.178linux.com/48784 http://www.178linux.com/48902 http://www.myhack58.com/Article/48/66/2017/85923.htm計劃任務(wù)
atat:未來的某時間點執(zhí)行一次任務(wù)
batch:系統(tǒng)自行選擇空閑時間去執(zhí)行此處指定的任務(wù)
cron:周期性運行某任務(wù)
at命令用于在指定時間執(zhí)行命令。at允許使用一套相當復(fù)雜的指定時間的方法。它能夠接受在當天的hh:mm(小時:分鐘)式的時間指定。假如該時間已過去,那么就放在第二天執(zhí)行。當然也能夠使用midnight(深夜),noon(中午),teatime(飲茶時間,一般是下午4點)等比較模糊的 詞語來指定時間。用戶還能夠采用12小時計時制,即在時間后面加上AM(上午)或PM(下午)來說明是上午還是下午。 也能夠指定命令執(zhí)行的具體日期,指定格式為month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)。指定的日期必須跟在指定時間的后面。 上面介紹的都是絕對計時法,其實還能夠使用相對計時法,這對于安排不久就要執(zhí)行的命令是很有好處的。指定格式為:now + count time-units,now就是當前時間,time-units是時間單位,這里能夠是minutes(分鐘)、hours(小時)、days(天)、weeks(星期)。count是時間的數(shù)量,究竟是幾天,還是幾小時,等等。 更有一種計時方法就是直接使用today(今天)、tomorrow(明天)來指定完成命令的時間。
標準使用格式:
at [-V] [-q queue] [-f file] [-mMlv] timespec…
at [-V] [-q queue] [-f file] [-mMkv] [-t time]
at -c job [job…]
atq [-V] [-q queue]
at [-rd] job [job…]
atrm [-V] job [job…]
batch
at -b
簡化格式:
at [option] TIME
常用選項:
-V:在標準錯誤上輸出版本號。
-q queue:使用指定的隊列。一個隊列用一個字母標定,有效的的隊列標定的 范圍是從a到z和從A到Z。at 的缺省隊列是 a,batch 的缺省隊列是 b。隊列的字母順序越高,則隊列運行時越謙讓(運行級別越低)。 指定的隊列 "="保留給當前運行的作業(yè)所在的隊列。 如果一個作業(yè)被提交到一個以大寫字母標定的隊列,則與提交到 batch 同樣對待。如果給 atq 指定一個隊列,則只顯示在此指定 隊列中的作業(yè)。
-m:當作業(yè)完成時即使沒有輸出也給用戶發(fā)郵件。
-f /path/from/somefile:從指定的文件中讀取任務(wù)
-l:顯示待執(zhí)行任務(wù)的列表;等同于atq。
-d:刪除指定的待執(zhí)行任務(wù);等同于atrm。
-v:對于 atq, 顯示完整的在隊列中未被刪除的作業(yè),對于其他 命令,顯示作業(yè)將要執(zhí)行的時間。 顯示的時間的格式類似于"1997-02-20 14:50",但如果設(shè)置了 POSIXLY_CORRECT 環(huán)境變量之后,格式類似于"Thu Feb 20 14:50:00 1996"。
-c:查看具體作業(yè)任務(wù)
at 時間格式注意:作業(yè)執(zhí)行命令的結(jié)果中的標準輸出和錯誤以郵件通知給相關(guān)用戶,并不會顯示輸出并且依賴于atd服務(wù),需要啟動才能實現(xiàn)at任務(wù)
TIME:定義出什么時候進行 at 這項任務(wù)的時間 HH:MM [YYYY-mm-dd] MMDD[CC]YY, MM/DD/[CC]YY, DD.MM.[CC]YY or [CC]YY-MM-DD noon(中午), midnight(深夜), teatime(4pm) today(今天)、tomorrow(明天) now+#{minutes,hours,days, OR weeks} 例如: HH:MM 02:00 在今日的 HH:MM 進行,若該時刻已過,則明天此時執(zhí)行任務(wù) HH:MM YYYY-MM-DD 04:00 2016-09-20 規(guī)定在某年某月的某一天的特殊時刻進行該項任務(wù) HH:MM[am|pm] [Month] [Date] 04pm March 17 17:20 tomorrow HH:MM[am|pm] + number [minutes|hours|days|weeks] 在某個時間點再加幾個時間后才進行該項任務(wù) now + 5 minutes 04pm + 3 days
1、三天后的下午5點執(zhí)行/bin/ls
2、明天17點鐘,輸出時間到指定文件內(nèi)
3、計劃任務(wù)設(shè)定后,在沒有執(zhí)行之前我們可以用atq命令(等同at -l)來查看系統(tǒng)沒有執(zhí)行的工作任務(wù)
4、刪除已經(jīng)設(shè)置的任務(wù) #atrm 4等同于at -d
at命令執(zhí)行方式5、顯示已經(jīng)設(shè)置的任務(wù)內(nèi)容
交互式
輸入重定向式
at 16:00
at -f 文件
at 16:00 -f /root/a.sh
相關(guān)目錄和文件/var/spool/at /etc/at.allow /etc/at.deny /var/spool/at/spool /proc/loadavg /var/run/utmp at任務(wù)隊列存放在/var/spool/at目錄中 /etc/at.{allow,deny}控制用戶是否能執(zhí)行at任務(wù) 白名單: /etc/at.allow 默認不存在,只有該文件中的用戶才能執(zhí)行at命令 黑名單: /etc/at.deny 拒絕該文件中用戶執(zhí)行at命令,而沒有在at.deny 文件中的使用者則可執(zhí)行 如果兩個文件都不存在,只有 root 可以執(zhí)行 at 命令 注意:/etc/at.{allow,deny}同時存在時白名單的優(yōu)先級要高于黑名單;名單格式即為用戶名例如:tom(注意:一行一個用戶名)周期性計劃任務(wù)cron
相關(guān)的程序包: cronie: 主程序包,提供crond守護進程及相關(guān)輔助工具 cronie-anacron: cronie的補充程序;用于監(jiān)控cronie任務(wù)執(zhí)行狀況;如cronie中的任務(wù)在過去該運行的時間點未能正常運行,則anacron會隨后啟動一次此任務(wù) crontabs:包含CentOS提供系統(tǒng)維護任務(wù) 確保crond守護處于運行狀態(tài):
區(qū)別
CentOS 7:
systemctl status crond
CentOS 6:
service crond status
crond服務(wù)
/sbin/service crond start //啟動服務(wù)
/sbin/service crond stop //關(guān)閉服務(wù)
/sbin/service crond restart //重啟服務(wù)
/sbin/service crond reload //重新載入配置
查看crontab服務(wù)狀態(tài):
service crond status
手動啟動crontab服務(wù):
service crond start
查看crontab服務(wù)是否已設(shè)置為開機啟動,執(zhí)行命令:
ntsysv
加入開機自動啟動:
chkconfig –level 35 crond on
計劃周期性執(zhí)行的任務(wù)提交給crond,到指定時間會自動運行系統(tǒng)cron任務(wù):系統(tǒng)維護作業(yè) /etc/crontab crontab命令 日志: /var/log/cron
計劃任務(wù)
系統(tǒng)cron任務(wù):/etc/crontab
注釋行以 # 開頭
詳情參見 man 5 crontab
Linux下的任務(wù)調(diào)度分為兩類:系統(tǒng)任務(wù)調(diào)度和用戶任務(wù)調(diào)度。 系統(tǒng)任務(wù)調(diào)度:系統(tǒng)周期性所要執(zhí)行的工作,比如寫緩存數(shù)據(jù)到硬盤、日志清理等。在/etc目錄下有一個crontab文件,這個就是系統(tǒng)任務(wù)調(diào)度的配置文件。系統(tǒng)任務(wù)
前四行是用來配置crond任務(wù)運行的環(huán)境變量 第一行SHELL變量指定了系統(tǒng)要使用哪個shell,這里是bash; 第二行PATH變量指定了系統(tǒng)執(zhí)行命令的路徑; 第三行MAILTO變量指定了crond的任務(wù)執(zhí)行信息將通過電子郵件發(fā)送給root用戶,如果MAILTO變量的值為空,則表示不發(fā)送任務(wù)執(zhí)行信息給用戶; 第四行的HOME變量指定了在執(zhí)行命令或者腳本時使用的主目錄。 用戶任務(wù)調(diào)度:用戶定期要執(zhí)行的工作,比如用戶數(shù)據(jù)備份、定時郵件提醒等。用戶可以使用 crontab 工具來定制自己的計劃任務(wù)。所有用戶定義的crontab文件都被保存在/var/spool/cron目錄中。其文件名與用戶名一致,使用者權(quán)限文件如下: /etc/cron.deny 該文件中所列用戶不允許使用crontab命令; /etc/cron.allow 該文件中所列用戶允許使用crontab命令; /var/spool/cron/ 所有用戶crontab文件存放的目錄,以用戶名命名; crontab文件的含義:用戶所建立的crontab文件中,每一行都代表一項任務(wù),每行的每個字段代表一項設(shè)置,它的格式共分為六個字段,前五段是時間設(shè)定段,第六段是要執(zhí)行的命令段
格式含義
minute: 表示分鐘,可以是從0到59之間的任何整數(shù)。
hour:表示小時,可以是從0到23之間的任何整數(shù)。
day:表示日期,可以是從1到31之間的任何整數(shù)。
month:表示月份,可以是從1到12之間的任何整數(shù)。
week:表示星期幾,可以是從0到7之間的任何整數(shù),這里的0或7代表星期日。
user-name:以指定的用戶身份運行任務(wù)
command:要執(zhí)行的命令,可以是系統(tǒng)命令,也可以是自己編寫的腳本文件。
在以上各個字段中,還可以使用以下特殊字符:
(1)特定值:表示指定時間點有效取值范圍內(nèi)的值
(2)星號():代表所有可能的值,例如month字段如果是星號,則表示在滿足其它字段的制約條件后每月都執(zhí)行該命令操作。
(3)逗號(,):可以用逗號隔開的值指定一個列表范圍,例如,“1,2,5,7,8,9”
(4)中杠(-):可以用整數(shù)之間的中杠表示一個整數(shù)范圍,例如“2-6”表示“2,3,4,5,6”
(5)正斜線(/):可以用正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩小時執(zhí)行一次。同時正斜線可以和星號一起使用,例如/10,如果用在minute字段,表示每十分鐘執(zhí)行一次。
例如:
每3小時echo命令;
0 /3 centos /bin/echo "howdy!"
晚上9點10分運行echo命令;
10 21 * root /bin/echo "Howdy!"
時間格式
@reboot Run once after reboot. 重啟后執(zhí)行
@yearly 0 0 1 1 * 每年
@annually 0 0 1 1 * 每年
@monthly 0 0 1 每月
@weekly 0 0 0 每周
@daily 0 0 * 每天
@hourly 0 每小時
計劃任務(wù)
系統(tǒng)的計劃任務(wù):
/etc/crontab
/etc/cron.d/ 配置文件
/etc/cron.hourly/ 腳本
/etc/cron.daily/ 腳本
/etc/cron.weekly/ 腳本
/etc/cron.monthly/腳本
crontab
crontab命令被用來提交和管理用戶的需要周期性執(zhí)行的任務(wù),與windows下的計劃任務(wù)類似,當安裝完成操作系統(tǒng)后,默認會安裝此服務(wù)工具,并且會自動啟動crond進程,crond進程每分鐘會定期檢查是否有要執(zhí)行的任務(wù),如果有要執(zhí)行的任務(wù),則自動執(zhí)行該任務(wù)。每一個用戶擁有自己的crontab,配置文件存在/var下面,不能被直接編輯。 標準使用格式: crontab [-u user] file crontab [-u user] [-l | -r | -e] [-i] [-s] crontab -n [ hostname ] crontab -c 簡化格式: crontab(選項)(參數(shù)) 選項 -e:編輯該用戶的計時器設(shè)置; -l:列出該用戶的計時器設(shè)置; -r:刪除該用戶的計時器設(shè)置; -u<用戶名稱>:指定要設(shè)定計時器的用戶名稱。 參數(shù) crontab文件:指定包含待執(zhí)行任務(wù)的crontab文件。
知識擴展
Linux下的任務(wù)調(diào)度分為兩類:系統(tǒng)任務(wù)調(diào)度和用戶任務(wù)調(diào)度。 系統(tǒng)任務(wù)調(diào)度:系統(tǒng)周期性所要執(zhí)行的工作,比如寫緩存數(shù)據(jù)到硬盤、日志清理等。在/etc目錄下有一個crontab文件,這個就是系統(tǒng)任務(wù)調(diào)度的配置文件。
anacron
anacron系統(tǒng)任務(wù)運行計算機關(guān)機時cron不運行的任務(wù), CentOS6以后版本取消anacron服務(wù),由crond服務(wù)管理。 假設(shè)計算機沒有一直開機,對筆記本電腦、臺式機、工作站及其它不一直開機的系統(tǒng)很重要,對偶爾要關(guān)機的服務(wù)器很有用 配置文件: /etc/anacrontab,負責(zé)執(zhí)行/etc/ cron.daily、/etc/cron.weekly、/etc/cron.monthly中系統(tǒng)任務(wù)。 /etc/cron.hourly/由/cron.d/0hourly執(zhí)行 字段1:如果在這些日子里沒有運行這些任務(wù)…… 字段2:在重新引導(dǎo)后等待這么多分鐘后運行它 字段3:任務(wù)識別器,在日志文件中標識 字段4:要執(zhí)行的任務(wù) 當執(zhí)行任務(wù)時,更新/var/spool/anacron/中文件的時間戳 CentOS6使用/etc/cron.daily/tmpwatch定時清除臨時文件 CentOS7使用systemd-tmpfiles-setup服務(wù)實現(xiàn) 配置文件: /etc/tmpfiles.d/.conf /run/tmpfiles.d/.conf /usr/lib/tmpfiles/*.conf /usr/lib/tmpfiles.d/tmp.conf d /tmp 1777 root root 10d d /var/tmp 1777 root root 30d 命令: systemd-tmpfiles –clean|remove|create configfile用戶任務(wù)
用戶cron
crontab命令定義,每個用戶都有專用的cron任務(wù)文件:/var/spool/cron/USERNAME
使用
crontab -e #按/etc/crontab格式手動添加計劃內(nèi)容 查看計劃任務(wù) crontab -l 并且 crontab -e 產(chǎn)生的文件會生成并保存在/var/spool/cron/USERNAME中 crontab -r 刪除計劃任務(wù)
at和crontab注意:計劃任務(wù)的文件名必須和用戶名相同才可以執(zhí)行。
一次性作業(yè)使用 at 重復(fù)性作業(yè)使用crontab Create —– at time crontab -e List —– at -l crontab -l Details —– at -c jobnum N/A Remove —– at -d jobnum crontab -r Edit N/A —– crontab -e 沒有被重定向的輸出會被郵寄給用戶 根用戶能夠修改其它用戶的作業(yè)任務(wù)警告
注意:運行結(jié)果的標準輸出和錯誤以郵件通知給相關(guān)用戶 (1) COMMAND > /dev/null (2) COMMAND &> /dev/null 對于cron任務(wù)來講, %有特殊用途;如果在命令中要使用%,則需要轉(zhuǎn)義;不過,如果把%放置于單引號中,也可以不用轉(zhuǎn)義思考:
(1) 如何在秒級別運行任務(wù)?
for min in 0 1 2; do echo "hi"; sleep 20;
done
(2) 如何實現(xiàn)每7分鐘運行一次任務(wù)?
sleep
暫停指定的秒數(shù)。時間單位可以是s 表示秒(默認設(shè)置),m 表示分鐘,h 表示小時,d 表示天。 指定數(shù)字可以是一個整數(shù),也可以是浮點數(shù)。 注意:如果參數(shù)個數(shù)超過2個,暫停的總時間為各個參數(shù)的值的和。 sleep NUMBER[SUFFIX]… SUFFIX: s: 秒, 默認 m: 分 h: 小時 d: 天 sleep后面的參數(shù)可以浮點數(shù) 例如:sleep 0.5
有時在寫一些以循環(huán)方式運行的監(jiān)控腳本,設(shè)置時間間隔是必不可少的,下面是一個Shell進度條的腳本演示在腳本中生成延時。(打印進度條)
usleep命令是sleep命令單位為微妙的運用
例如:usleep 1000000
1、每天的2點和12點整,將/etc備份至/testdir/backup目錄中,保存的文件名稱格式為“ etcbak-yyyy-mm-ddHH.tar.xz”
將下列代碼添加至/etc/crontab中
2、每周2, 4, 7備份/var/log/messages文件至/logs目錄中,文件名形如“ messages-yyyymmdd”
將下列代碼添加至/etc/crontab中
3、每兩小時取出當前系統(tǒng)/proc/meminfo文件中以S或M開頭的信息追加至/tmp/meminfo.txt文件中
將下列代碼添加至/etc/crontab中
0 /2 cat /proc/meminfo | grep "^[SM]" >> /tmp/meminfo.txt
4、工作日時間,每10分鐘執(zhí)行一次磁盤空間檢查,一旦發(fā)現(xiàn)任何分區(qū)利用率高于80%,就執(zhí)行wall警報
將下列代碼添加至/etc/crontab中
/10 1-5 . /root/bin/CiPanJinKong.sh
5、工作日時間內(nèi),對用戶docker每小執(zhí)行一次“ip addr show”命令;
切換至docker用戶使用命令crontab -e進入編輯界面
加入"0 9-18 1-5 docker ip addr show"信息后保存退出
6、每4小時備份一次/etc目錄至/backup目錄中,保存的文件名稱格式為“etc-yyyy-mm-dd-HH.tar.xz”;
在/etc/crontab文件中添加如下:
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/38695.html
摘要:測試的工作量更加分散,不會出現(xiàn)一段時間無事可做,一段時間忙的要死的情況。如果測試一味地只管提交,而不考慮開發(fā)的工作習(xí)慣和目標的可執(zhí)行性,就會導(dǎo)致效率大大降低。這種看似投機取巧的方法會讓測試的用例編寫工作事半功倍,效率大大提升。 臨近年末,各家公司都進入了緊張的年前項目沖刺階段,我們也不例外。每天開完早會,就聽大家在抱怨任務(wù)太多做不完、一個月都沒正常過周末了云云。 據(jù)開發(fā)部門的同事說,他...
摘要:隨后,執(zhí)行官給出一張當張三存款發(fā)生變化之時,此機構(gòu)的運作時序圖的確,小機構(gòu)靠人力運作,大機構(gòu)才靠制度運轉(zhuǎn)。第一條語句創(chuàng)建觀察員第一條語句張三我們調(diào)用的時候,就創(chuàng)建了對象,對象的所有屬性都將被拷貝至一個克隆對象并將克隆對象轉(zhuǎn)變成可觀察的。 ================前言=================== 初衷:網(wǎng)上已有很多關(guān)于 MobX 源碼解讀的文章,但大多閱讀成本甚高。...
摘要:現(xiàn)在讓我們將這個命令通過使用命令進行封裝,使其更易于運行和可加入計劃任務(wù)。編寫備份任務(wù)的計劃任務(wù)首先,在中能夠輕松創(chuàng)建計劃任務(wù)。 譯文首發(fā)于 使用 Laravel 制定 MySQL 數(shù)據(jù)庫備份計劃任務(wù),轉(zhuǎn)載請注明出處。 你可以在終端里通過運行一行命令導(dǎo)出整個數(shù)據(jù)庫。這種方案不僅簡單直接而且有效。不過有更加自動化的解決方案。讓我們來看看究竟是什么! showImg(https://seg...
閱讀 983·2023-04-25 23:55
閱讀 2711·2023-04-25 14:13
閱讀 3300·2019-08-26 13:47
閱讀 2973·2019-08-23 18:16
閱讀 628·2019-08-23 17:20
閱讀 3231·2019-08-23 16:55
閱讀 3152·2019-08-22 15:39
閱讀 3198·2019-08-20 18:10