linux計劃任務

任務計劃的分類:

一次性的任務計劃:只執行一次

周期性的任務計劃:每隔一定的周期去做相同的事情

設置任務計劃功能的工具:at和crontab

at:專門處理一次性的計劃任務

crontab:根據定義的周期信息,循環做一些事情

batch:系統自行選擇空閑時間去執行此處指定的任務

At命令:

查看atd狀態和啟動atd服務及其配置文件路徑:

centos6:service atd status

service atd start

/etc/rc.d/init.d/atd

centos7:systenctl status atd.service

systenctl start atd.service

/usr/lib/systemd/system/atd.service

at命令:at [option] TIME

常用選項:

-V:顯示版本信息:

圖片1

-l:列出指定隊列中等待運行的作業;相當于atq(若計劃被執行,則任務結束,不會再顯示在列表)

圖片2

-d:刪除指定的作業;相當于atrm

圖片3

at -d ?2 ?3 ? ?刪除2和3

-c: 查看具體作業任務 ?(相當于用cat查看原文件)

-f:/path/from/somefile:從指定的文件中讀取任務

-m:當任務被完成之后,將給用戶發送郵件,即使沒有標準輸出

注意:作業執行命令的結果中的標準輸出和錯誤以郵件通知給相關用戶

圖片4

圖片5

TIME:定義出什么時候進行 at 這項任務的時間

HH:MM [YYYY-mm-dd]

noon, midnight, teatime(4pm)

tomorrow

now+#{minutes,hours,days, OR weeks}

示例:

1)at 02:00 ?今天2點執行該項任務,若2點已過,則明天2點執行

2)at 02:00 2016-09-20 ??2016年9月20號2點執行該項任務

3)at now +1 minutes/hours/days/weeks ?一分鐘/一小時/一天/一周后執行該項任務

4)at 17:20 tommorrow 明天的17:20執行該項任務

執行方式:

1)交互式

2)輸入重定向

3)at –f 文件

依賴與atd服務,需要啟動才能實現at任務,at隊列存放在/var/spool/at目錄中

/etc/at.{allow,deny}控制用戶是否能執行at任務

白名單:/etc/at.allow 默認不存在,只有該文件中的用戶才能執行at命令

黑名單:/etc/at.deny 默認存在,拒絕該文件中用戶執行at命令,而沒有在at.deny 文件中的使用者則可執行。如果兩個文件都不存在,只有 root 可以執行 at 命令

周期性任務計劃cron:

相關的程序包:

cronie: 主程序包,提供crond守護進程及相關輔助工具

cronie-anacron:cronie的補充程序,用于監控cronie任務執行狀況,如cronie中的任務在過去該運行的時間點未能正常運行,則anacron會隨后啟動一次此任務

crontabs:包含CentOS提供系統維護任務

確保crond守護處于運行狀態:

CentOS 7: ? ?systemctl status crond

CentOS 6: ? ?service crond status

計劃周期性執行的任務提交給crond,到指定時間會自動運行

系統cron任務: /etc/crontab

用戶cron任務: crontab命令

日志:/var/log/cron

注釋行以 # 開頭

圖片6

例如:晚上9點10分運行echo命令

10 21 * * * root /bin/echo “hello world!”

時間表示法:

1)特定值:給定時間點有效取值范圍內的值

2)*:給定時間點上有效取值范圍內的所有值,表示“每…”

3)離散取值:#,#,# ?如:1,3,5

4)連續取值:#-# ?如:1-5

5)在指定時間范圍上,定義步長:

/#: #即為步長 即:/5 ?5就表示步長

如:*/5 ?* ?* ?* ?* ?root /bin/echo “hello world!” 每5分鐘執行一次任務

* ?*/5 ?* ?* ?* ?root /bin/echo “hello world!” 每5小時執行一次任務

* ?2/5 ?* ?* ?* ?root /bin/echo “hello world!” 從2點開始,每5小時執行一次任務,下一天的2點繼續執行

*/5 ?2 ?* ?* ?* ?root /bin/echo “hello world!” 從2點開始,每5分鐘執行一次任務

*/5??*??1,5,10??*??5,6??root /bin/echo “hello world!” 每月的1號、5號、10號或者每周的星期五、星期六,每5分鐘執行一次任務

時間格式

@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 * * * *

示例:每3小時echo和wall命令

0 */3 * * * centos /bin/echo “hello”;/usr/bin/wall ?“welcome to Magedu!”

anacron系統

運行計算機關機時cron不運行的任務,CentOS6以后的版本取消了anacron服務,由crond服務管理?對筆記本電腦、臺式機、工作站、偶爾要關機的服務器及其它不一直開機的系統很重要對很有用

配置文件:/etc/anacrontab,負責執行/etc/ cron.daily ?/etc/cron.weekly /etc/cron.monthly中系統任務。

圖片7

字段1:如果在這些日子里沒有運行這些任務……

字段2:在重新引導后等待這么多分鐘后運行它

字段3:任務識別器,在日志文件中標識

字段4:要執行的任務

由/etc/cron.hourly/0anacron執行

當執行任務時,更新/var/spool/anacron/cron.daily 文件的時間戳

管理臨時文件

CentOS6使用/etc/cron.daily/tmpwatch定時清除臨時文件

圖片8

CentOS7使用systemd-tmpfiles-setup服務實現

圖片9

crontab命令定義,每個用戶都有專用的cron任務文件:/var/spool/cron/USERNAME

crontab命令:(支持普通用戶)

crontab [-u user] [-l | -r | -e] [-i]

-l: 列出所有任務

圖片10

-e: 編輯創建任務

圖片11

編寫的任務存放在/var/spool/cron 下

-r: 移除所有任務

-i:同-r一同使用,以交互式模式移除指定任務

圖片12

-u user: 僅root可運行,指定用戶管理cron任務

如:crontab -l -u wang = cat wang

默認用vi打開,如果想讓命令以帶顏色的方式展現,可以輸入export EDITOR=vim >> /etc/profile.d/cron.sh就可以了。

控制用戶執行計劃任務:/etc/ cron.allow 、/etc/cron.deny

在at和crontab中不要使用標準輸出,因為即使沒有標準輸出,也會以郵件方式發送給你,所以盡量不使用標準輸出,可以 &> /dev/null中 (根用戶能夠修改其它用戶的作業)即:運行結果的標準輸出和錯誤以郵件通知給相關用戶

(1) COMMAND > /dev/null

(2) COMMAND &> /dev/null

對于cron任務來講,%有特殊用途;如果在命令中要使用%,則需要轉義,將%放置于單引號中,則可不用轉義

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/86724

(2)
吼吼哈嘿吼吼哈嘿
上一篇 2017-09-09 19:28
下一篇 2017-09-09 20:23

相關推薦

  • 簡單易懂的CentOS啟動流程

    在使用Linux操作系統時,我們只需要按下電源鍵,等待一會兒,登錄終端就呈現在我們眼前,在這段時間內,操作系統究竟做了哪些事情? 先上一張流程梗概圖,你會對啟動流程有個大致的了解 啟動流程詳解 POST加電自檢   主板在接通電源后,系統首先由POST程序來對CPU、主板、內存、硬盤子系統、顯示子系統串并行接口、鍵盤、CD-ROm光驅等硬件進行檢測 讀取MB…

    Linux干貨 2016-09-11
  • 第三周小練習

    1. 列出當前系統上所有已經登陸的用戶的用戶名,注意,同一個用戶登陸多次,則顯示一次即可 who -u|grep -o "^[[:alnum:]]*\>"|uniq 2. 取出最后登陸到當前系統的用戶信息 who|tail -n1 3. 取出當前系統上被用戶當作其默認shell的最多的那個sh…

    Linux干貨 2016-11-21
  • 馬哥教育網絡班20期+第3周課程練習

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 # who |cut -d" " -f1 | uniq 2、取出最后登錄到當前系統的用戶的相關信息。 # last | head -1 3…

    Linux干貨 2016-06-26
  • 文本處理工具sed

    處理文本的工具sed Stream EDitor,  行編輯器     sed 是一種流編輯器,它一次處理一行內容。處理時,把     當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(     pa…

    Linux干貨 2016-08-10
  • 談shell命令的神奇組合以及對腳本的影響

    shell命令是我們與機器交互的基本溝通翻譯官。我們要告訴計算機的很多事情都由它來翻譯,而shell的神奇之處就在于支持命令聯合使用,現在我就來講講基本的命令組合引用。1.管道應用:命令 | 命令  ,前面的命令的結果可以直接作為后面命令的輸出,省卻了一個變量做存儲。2.文本段落提取;我們可以用 組合命令 通常為 cat 某文件 | (head -…

    Linux干貨 2017-04-02
  • 網絡服務之Nginx

      在之前一篇博客中我們講述了httpd網絡服務器,那么httpd是個非常穩定安全的一個服務器,這次我們介紹一個新的網絡服務器—-nginx。   Nginx 是俄羅斯人編寫的十分輕量級的 HTTP 服務器,Nginx,它的發音為“engine X”,是一個高性能的HTTP和反向代理服務器(我們主要圍繞這兩…

    2017-06-07
欧美性久久久久