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