資料倉儲定時任務(crontab datax)

2021-09-02 22:52:52 字數 3757 閱讀 8404

1.環境要求

我安裝的是jdk1.8,python2.7.13

記錄下使用crontab,datax定時同步資料遇到的問題。

1.開始使用如下配置,死活不執行。網上說crontab環境便利的問題,設定了也沒反應。

[root@hdp-01 home]

# crontab -l

*/3* * * *

python /root/datax/bin/datax.py /root/ods_black_list.json >>/home/log.`date +\%y\%m\%d\%h\%m\%s`  2>&1

crontab中的環境變數預設不會將我們自行定義的環境變數載入進來,所以執行指令碼的時候,需要執行source命令

修改如下執行成功:

[root@hdp-01 home]# crontab -l

*/3 * * * * sh /data/crontab/mysqltomysql1.sh

[root@hdp-01 crontab]# cat mysqltomysql1.sh

#!/bin/sh

source /etc/profile

python /root/datax/bin/datax.py /root/ods_black_list.json >>/home/log.`date +\%y\%m\%d\%h\%m\%s`  2>&1

2.配置任務

(1)安裝crond服務

yum install crontabs

命令說明:

/sbin/service crond start //啟動服務

/sbin/service crond stop //關閉服務

/sbin/service crond restart //重啟服務

/sbin/service crond reload //重新載入配置

檢視crond服務狀態   輸入

service crond status

顯示如下表示服務已啟動

[root@localhost /]# service crond status

redirecting to /bin/systemctl status  crond.service

● crond.service - command scheduler

loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)

active: active (running) since mon 2017-05-15 15:51:05 cst; 9min ago

main pid: 6550 (crond)

cgroup: /system.slice/crond.service

└─6550 /usr/sbin/crond -n

may 15 15:51:05 localhost.localdomain systemd[1]: started command scheduler.

may 15 15:51:05 localhost.localdomain systemd[1]: starting command scheduler...

may 15 15:51:05 localhost.localdomain crond[6550]: (cron) info (random_delay ...

may 15 15:51:06 localhost.localdomain crond[6550]: (cron) info (running with ...

may 15 15:51:06 localhost.localdomain crond[6550]: (cron) info (@reboot jobs ...

hint: some lines were ellipsized, use -l to show in full.

(2).建立作業配置檔案(json格式)

這個是從乙個oracle資料庫讀取資料並寫入另乙個oracle資料庫的乙個作業配置,

oracle2oracle.json,},

"content": [

],"password":"123456",

"username":"root",}},

"writer": ],}}

}]}}

(3).列出crontab檔案,輸入crontab -l

若顯示以下內容 ,則表示當前使用者沒有定時任務(***表示當前使用者),需要建立crontab檔案,並提交,檢視步驟(4)

no crontal for ***

若顯示類似以下內容 ,則表示當前使用者已經有正在執行的定時任務,只需輸入crontab -e 來編輯crontab檔案,檢視步驟(5)

0,10,20,35,44,50 * * * *  python /home/admin/datax3/bin/datax.py /home/admin/mysql2odps.json >>/home/hanfa.shf/log.`date +\%y\%m\%d\%h\%m\%s`  2>&1,

(4).建立crontab檔案(以前從未建立過crontab任務)

建立乙個名為crondatax的crontab檔案,命令列進入到相應的目錄   vi crondatax,建立並開啟檔案,輸入以下內容:

5  13 * * *  python /home/admin/datax3/bin/datax.py /home/admin/oracle2oracle.json  >>/home/hanfa.shf/log.`date +\%y\%m\%d\%h\%m\%s`  2>&1

5 13 * * *表示每天的13點5分執行這個任務。

python/home/admin/datax3/bin/datax.py表示安裝的datax datax.py所在的目錄的絕對路徑,一般在datax/bin/目錄下。

/home/admin/oracle2oracle.json.json表示作業配置檔案的絕對路徑

/home/hanfa.shf/log.`date +\%y\%m\%d\%h\%m\%s`表示任務執行時產生日誌的輸出路徑,並以log.當前時間命名,要替換成真實存在的絕對路徑。

檔案編輯完成之後,按esc,再按shift+;,再輸入wq,則儲存並退出檔案編輯。

(5)編輯已有crontab檔案,修改或增加定時任務

輸入crontab -e 開啟任務配置檔案。增加任務即可,格式和步驟(4)一致。

截圖如下:

(6)提交 crontab檔案

輸入crontab /home/datax/job/crondatax crondatax是步驟(4)中建立的檔案的名稱,如果終端所在目錄就是crondatax檔案所在目錄,

可以直接輸入crontab crondatax。

提交之後輸入crontab -l 就能看到剛配置的任務。

(7)重啟crontab服務

輸入/sbin/service crond restart

在定時的時間到後,任務便開始執行,同時會在配置的log目錄下生成對應的日誌檔案,在日誌檔案中可檢視任務的運**況。

(8)任務配置檔案crontab命令格式說明

引數可以配置多個,中間用逗號分隔比如想每10分鐘執行一次定時任務,可以按以下方式配置。

0,10,20,30,40,50  13 * * *  python /home/admin/datax3/bin/datax.py /home/admin/mysql2odps.json     >>/home/log.`date +\%y\%m\%d\%h\%m\%s`  2>&1

我記性不好,多做記錄方便自己查閱。

crontab定時任務

今天工作項有個任務是讓ubuntu定時執行某個指令碼,對postgresql資料庫進行定時備份。linux 系統都有個cron定時任務的機制。今天做些筆記,以便日後翻查。注意 cron機制是有個使用者系統的概念的,即分系統cron和使用者cron,每個使用者所執行的cron任務可能不同。1.以roo...

crontab定時任務

基本格式 command 分 時 日 月 周 命令 第1列表示分鐘1 59 每分鐘用 或者 1表示 第2列表示小時1 23 0表示0點 第3列表示日期1 31 第4列表示月份1 12 第5列標識號星期0 6 0表示星期天 第6列要執行的命令 我的需求是定時備份mongodb 編寫任務執行的指令碼ba...

Crontab定時任務

我們可以使用crontab執行一些週期任務 crontab u user file crontab u user 將file做為crontab的任務列表檔案並載入crontab 編輯crontab檔案內容 顯示crontab檔案內容 刪除載入後的crontab檔案內容 每分鐘向使用者目錄下的log....