標籤:

從頭學習大數據培訓課程 任務調度工具 oozie(三)Linux 的 crontab 和 oozie 的 cronschedule

從頭學習大數據培訓課程 任務調度工具 oozie(三)Linux 的 crontab 和 oozie 的 cronschedule

來自專欄 從頭學習大數據

1.linux的crontab

cron不停地檢查所有配置的任務在當前是否應該運行,任務運行的最小時間間隔是1分鐘,也就是說任務最頻繁只能每分鐘運行一次。

(1).crontab命令選項

crontab -u <-l, -r, -e>

-u:指定一個用戶

-l:列出某個用戶的任務計劃

-r:刪除某個用戶的任務

-e:編輯某個用戶的任務

(2).cron文件語法與寫法

可用crontab -e命令來編輯,編輯的是/var/spool/cron下對應用戶的cron文件,也可以直接修改/etc/crontab文件。具體格式如下:

Minute Hour Day Month Week command

分鐘 小時 天 月 星期 命令

0-59 0-23 1-31 1-12 0-6 command

每個欄位代表的含義如下:

Minute, 每個小時的第幾分鐘執行該任務

Hour,每天的第幾個小時執行該任務

Day,每月的第幾天執行該任務

Month,每年的第幾個月執行該任務

DayOfWeek,每周的第幾天執行該任務,0表示周日

Command,指定要執行的程序 、腳本或命令

在這些欄位里,除了「Command」是必須指定的欄位以外,其它欄位皆為可選。對於不指定的欄位,要用「」來填補其位置。

例如:

  command

分 時  日  月  周  命令

(3).幾個特殊符號的含義

「*」代表取值範圍內的數字,

「/」代表」每」,

「-」代表從某個數字到某個數字,

「,」分開幾個離散的數字

(4). 關於cron配置文件/etc/crontab

cron 的主配置文件是 /etc/crontab

前三行是用來配置 cron 任務運行環境的變數:

Shell 變數的值指定shell 環境(此處默認為 bash shell);PATH 變數定義用來執行命令的程序路徑;cron 任務的輸出被郵寄給 MAILTO 變數定義的用戶名,如果 MAILTO 變數被定義為空白字元串(MAILTO=""),電子郵件就不會被寄出;

每次編輯完某個用戶的cron設置後,cron自動在/var/spool/cron下生成一個與此用戶同名的文件,此用戶的cron信息都記錄在這個文件中,這個文件是不可以直接編輯的,只可以用crontab -e 來編輯。cron啟動後每過一份鍾讀一次這個文件,檢查是否要執行裡面的命令。因此此文件修改後不需要重新啟動cron服務。

(5).常見cron示例參考

5 ls

指定每小時的第5分鐘執行一次ls命令

30 5 * ls

指定每天的 5:30 執行ls命令

30 7 8 ls

指定每月8號的7:30分執行ls命令

30 5 8 6 * ls

指定每年的6月8日5:30執行ls命令

30 6 0 ls

指定每星期日的6:30執行ls命令

[註:0表示星期天,1表示星期1,以此類推,也可以用英文來表示,sun表示星期天,mon表示星期一等。]

30 3 10,20

ls 每月10號及20號的3:30執行ls命令

[註:「,」用來連接多個不連續的時段]

25 8-11 * ls

每天8-11點的第25分鐘執行ls命令

[註:「-」用來連接連續的時段]

/15 * ls

每15分鐘執行一次ls命令 [即每個小時的第0 15 30 45 60分鐘執行ls命令 ]

30 6 /10 * ls

每個月中,每隔10天6:30執行一次ls命令[即每月的1、11、21、31日是的6:30執行一次ls命令 ]

50 7 * root run-parts /etc/cron.daily

每天7:50以root 身份執行/etc/cron.daily目錄中的所有可執行文件

[ 註:run-parts參數表示,執行後面目錄中的所有可執行文件

10,20,30 echo "第10、20、30分鐘輸出一次" >> /tmp/cron1.txt

第10、20、30分鐘輸出到/tmp/cron1.txt:

0 /2 lzw.me /usr/bin/somecommand >> /dev/null 2>&1

以用戶lzw.me的身份每兩小時就運行某個程序:

(6).啟動或關閉

由於Cron 是linux的內置服務,可以用以下的方法啟動、關閉這個服務:

service crond start //啟動服務

service crond stop //關閉服務

service crond restart //重啟服務

service crond reload //重新載入配置

(7).cron任務文件

cron 會從如下這些地方讀取安裝的任務:

/etc/anacrontab

這個文件存著系統級的任務。它主要用來運行每日的(daily),每周的(weekly),每月的(monthly)的任務。一般不在此文件安裝自己的任務

/etc/cron.d/

此目錄下存放的是系統級任務的任務文件。

/var/spool/cron/

此目錄下存放各個用戶的任務文件。各個用戶的任務存放在以自已用戶名為文件名的任務文件中。此文件中的指令行沒有用戶域。

新任務安裝後或任務修改後不需要重啟cron進程即可生效。

(8).日誌文件

可以通過查看文件/var/log/cron查看任務的運行情況。

2.oozie cron

coordinator.xml在hdfs上的路徑

oozie.coord.application.path=${nameNode}/work/coordinator.xml

定時任務的開始時間 以UTC時區為準

start=2016-11-03T09:00Z

定時任務的結束時間

end=2019-07-30T16:00Z

coordinator.xml

frequency執行頻率 ${coord:minutes(5)}為coordinator內置的EL function (Expression Language) ${workflowAppUri}jobTracker${jobTracker}nameNode${nameNode}queueName${queueName}

EL常量

當配置小於5分鐘時不允許提交

oozie job -kill 0000013-170623101932366-oozie-hado-C

3.oozie schedule

雖然配置的是每1分鐘執行1次,但是調度周期還是每5分鐘一執行


海牛學院青牛原創 | 轉載請聯繫青牛


推薦閱讀:

LDAP 基礎學習筆記(概念 & 快速安裝)
平時寫linux下c有哪些好用的查函數軟體?
RHCE证书的含金量怎么样,这个证好不好考,考出来以后做关于Linux的哪方面工作,或者在公司能够做什么
關於 Linux 你可能不是非常了解的七件事
Fedora 26 正式發布!

TAG:大數據 | Linux |