crontab定時器執行 sh指令碼

2021-10-08 08:52:08 字數 1739 閱讀 4203

linux 的crontab,執行shell指令碼的時候,異常問題整理

28 15 * * * sh -bx sqoop_startall.sh create all 2>&1 >> /home/user/sh_starts/logs/sqoop_upload_`date +\%y\%m\%d`.log
#!/bin/bash

## sqoop 讀取資料庫

path=$(cd `dirname $0`;pwd) #獲取檔案路徑

dir=`dirname $path` #獲取檔案的上一級路徑

#不建立job,增量匯入,資料庫位址沒有修改

[ "$1" = "create" ]; then

# 刪除原來的job

echo "sqoop job 刪除原來job指令碼"

sh $path/sqoopjob_delete.sh 2>&1 | tee -ai /home/user/sh_starts/logs/sqoop_upload_`date +\%y\%m\%d`.log

sleep 1s

#刪除原來的表及表資料

echo "drop sqoop job table 刪除原來的表及表資料"

sh $path/sqoopjob_droptables.sh 2>&1 | tee -ai /home/user/sh_starts/logs/sqoop_upload_`date +\%y\%m\%d`.log

# 建立job

echo "sqoop 建立新 job "

sh $path/sqoopjob_create_columns.sh 2>&1 | tee -ai /home/huser/sh_starts/logs/sqoop_upload_`date +\%y\%m\%d`.log

sleep 2s

fi# job執行

echo "sqoop job 執行:$path/sqoopjob_exec.sh"

sh $path/sqoopjob_exec.sh 2>&1 | tee -ai /home/huser/sh_starts/logs/rtdata-sqoop_upload_`date +\%y\%m\%d`.log

sleep 1s

上面檔案中的指令碼沒有執行,原因是各個指令碼中的環境變數沒有讀取到,需要在每個shell指令碼中增加設定:

. /etc/profile

. ~/.bash_profile

例如:

#!/bin/bash

#刪除sqoop job 的表 drop table

. /etc/profile

. ~/.bash_profile

#獲取job相關表名稱

dir=/home/user/phaseone

tablesname=`sh $dir/test0703/get_tablesname.sh`

for i in $tablesname

do echo "drop table $i;" >>aa.txt

done

tables=`cat aa.txt`

hive -e "use rt1;$tables" 2>&1 | tee -ai /home/user/sh_starts/logs/sqoop_upload_`date +\%y\%m\%d`.log

rm -f aa.txt

利用Crontab定時執行Python指令碼

一 crontab操作crontab l 列出全部定時任務crontab e 編輯定時任務二 crontab格式第一列的 表示 分 第二列的 表示 時 第三列的 表示 日 第四列的 表示 月 第五列的 表示 周三 定時執行python指令碼 1 python3 test test.py 每小時執行一...

cron風格定時器 crontab定時器工具

要使用crontab定時器工具,必須要啟動cron服務 service cron start crontab各引數說明 e 執行文字編輯器來編輯crontab,內定的文字編輯器是vi r 刪除目前的crontab l 列出目前的crontab 檢視專用 代表所有的取值範圍內的數字。特別要注意哦!代表...

python 應用crontab 定時器

在實現乙個功能的時候需要定時呼叫,感覺linux 自帶的定時器不錯,但是需要通過python語言 控制定時任務的啟動刪除,新增和修改。在網上找到乙個開源的 crontab.py,這個檔案對 crontab 實現了封裝,直接呼叫這個檔案寫的函式就可以。crontab.py from crontab i...