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...