歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> Linux系統任務計劃知識點

Linux系統任務計劃知識點

日期:2017/3/3 16:36:24   编辑:關於Linux

任務計劃機制:定義腳本程序執行的任務不是當即的,而是安排安排在未來的某個時間運行。這就是機制任務計劃機制。所任務計劃必須是個未來某個時間點執行的任務

定義的方式

1、 在未來的某個時間點執行一次某個任務

2、 周期性的執行某任務

任務計劃的實現

一次性的任務執行實現

可以實現的兩個命令:at和batch

at:是指定時間點的

at的使用方法:at後跟時間點即可,按Enter,屏幕會輸出at>提示符,在提示符下輸入我們要執行的命令即可,形式如下

at> COMMAND(可以寫多個命令)

at> COMMAND

...........

at>Ctrl +d(提交任務的命令)

輸入完成後就可以在某個時間點去執行了;這裡需要注意:這個時間必須是未來的某一個時間

at指定時間的幾種方法:

絕對時間

HH:MM,DD:MM:YY,MM/DD/YY 例如:at 10:20(如果10:20時間已過,就是下一次的10:20這個時間點)

相對時間

at now+# 單位是minutes,hours,days,weeks 例如:at now+3minutes(從這一刻開始往後的3分鐘即3分鐘以後)

模糊時間

noon(正午即12:00),midnight(午夜即晚上00:00),teatime(下午4點)

命令的執行結果處理

將以郵件的形式發送給安排任務計劃的用戶

使用at執行兩個作業示例 如圖1所示

at now+5minutes(5分鐘後執行以下任務)

at> ll /var

at> cat /etc/fstab

at> <EOF>(這裡執行的是ctrl+d命令)

at now+10minutes

at> cat /etc/issue

at> <EOF>

圖1 創建兩個任務列表

查看任務計劃

at -l = atq :顯示自己的作業列表 如圖2所示

圖2 作業列表查看

數字2和3表示是第幾個作業 中間的時間是:執行時間;字母"a"表示作業隊列;root表示是誰的作業

at -d AT_JOB_ID = atrm AT_JOB_ID:刪除某個作業

例如:at -d 2:刪除2號作業

batch:batch與at區別是batch不需要指定時間;batch特性是在系統空閒的時候執行作業(是自動選擇的,所以不需要指定時間),

其他的使用格式都是與at相同的

at與batch權限使用的定義

在/etc/的目錄下可以創建兩個文件一個是at.deny文件一個是at.allow文件

at.allow文件

可以理解為允許用戶使用的at與batch的白名單;如果at.allow不存在at.deny存在,只要是寫在at.deny中的用戶都不允許使用

/etc/at.deny文件

可以理解為允許用戶使用的at與batch的黑名單如果at.allow存在at.deny不存在,只有寫at.allow中的用戶才具有使用權限

如果at.deny存在但是為空時,就是定義所有用戶都具有使用權限

如果兩個文件都存在以at.allow文件內容定義為主;如果都不存在,只有root用戶具有使用權限

cron介紹

cron與at一樣也是安排在某個任務在接下來的某個時間點運行的;cron可能在某個時間點都有可能執行;所以,cron本身要是一個不間斷運行的服務

如果不小心關閉了系統略過了服務任務,那計劃任務的執行到下一次才能執行,所以cron需要不間斷的運行

anacron介紹

anacron是cron的補充,它的功能就是實現讓cron因為各種原因在過去的時間點定義執行的任務但是沒有執行的任務,讓這個任務在系統恢復正常時再次正常的執行一次。anacron也是一種服務,一般都是隨機運行的;anacron本身也必須要隨時在線執行,即開機後就能啟動。所以anacron主要是應用在經常性關機的設備上,例如筆記本

cron類別

系統cron任務:跟用戶沒有關系,是操作系統自身為了周期性執行某一個操作或任務而特意安排的。系統cron任務定義在

用戶cron任務:都定義在/var/spool/cron/USERNAME(USERNAME意思是指與用戶名同名的文件)

/etc/crontab與/var/spool/cron/USERNAME文件格式區別

/etc/crontab(文件中共有7個段,其中5個段指時間,一個段指用戶,一個段指運行的任務)如:分鐘 小時 天 月 周 用戶 任務(每個段使用空格隔開)

/var/spool/cron/USERNAME文件中共有6個段,其中5個段指時間,一個段指運行任務)如:分鐘 小時 天 月 周 任務 ------它不需要再指定用戶

時間的有效取值

分鐘: 0-59

小時: 1-23

天 : 1-31

月 : 1-12

周 : 0-7,(0和7都表示周日)

時間通配

*:對應取值的所有有效取值

5 * * * * :(每小時第五分鐘)

5 * * * 7 :(每周日的每小時的第五分鐘)

15 12 1 1 *:(每年1月1號12點15分鐘執行)

,:離散時間點取值

10,40 * * * 2,5 (每周二和周五的每小時的第10分與第40分都執行一次)

10,40 12 * * 2,5(每周二和周五的12點的第10分與第40分都執行一次)

-:連續時間點

15 12 * * 1-5(周一至周五的凌晨12點15執行)

/: 對應取值范圍內每多久一次

*/5 * * * * :每五分鐘執行一次

01 */2 * * * :每兩小時執行一次(01是自己定義的,只是給個時間點,可以隨意定義)

12 12 */2 * * :每兩天執行一次(12可自己定義)

cron的環境變量

cron執行的所有命令都去PATH環境變量指定的路徑下去找(但是cron是周期性執行的任務,cron

執行的那一刻,用戶可能是沒有登錄的,如果沒有登錄則沒有PATH變量

cron的PATH 基本上就是/bin:/sbin:/usr/bin:/usr/sbin這幾個路徑;當命令寫在了其他位置,以用戶的方式是可以執行,但是cron未必可以執行,所以應該使用絕對路徑例如cat命令:/bin/cat

如果cron任務是在腳本中定義的時候應該直接先定義PATH變量

用戶任務的管理(crontab)

crontab相關選項介紹

crontab -l:列出當前用戶的所有任務

crontab -e:編輯(用於自己定義任務的

crontab -r:移除當前用戶的所有任務

crontab -u:USERNAME:管理其他用戶的cron任務

anacrontab介紹

anacrontab是crontab的補充,但是不能替代crontab

anacrontab的語法格式即/etc/anacrontab文件分析如圖3所示

圖3 /etc/anacrontab文件內容查看

配置文件中共4個段,前2個段是指時間的,第3個段是注釋信息,第四個段是要執行的任務。

第一段中的“1”表示過去已經有一天沒有執行了;“7”表示已經有7天沒有執行了;“30”即已經有一個月沒有執行了;第二個段的數字是在對應的沒有執行的任務在開機執行的第65、70、75分鐘執行一次。它的最小單位是天,即是監控的每天,每周,每月沒有執行的任務記錄

補充

無論是運行cron還是anacron,它們對應的服務都必須開啟,只有對應的服務啟動後,其功能才能才可以使用;anacrond服務默認是關閉的,需要手動啟動

開啟cron服務命令是 :service crond start

開啟anacron服務命令是:service anacron start

本文出自 “Fly*On*Sky” 博客,請務必保留此出處http://djy0000.blog.51cto.com/5816828/1168780

Copyright © Linux教程網 All Rights Reserved