我有一個長的shell腳本,它運行並將結果存儲在配置單元表中。該腳本需要很長時間才能完成。所有結果都保存在臨時表中。有時腳本會被殺死或中斷,因爲它會耗費大量資源很長一段時間。截至目前,我只需從中斷點複製粘貼查詢並重新啓動它。Shell腳本:如何從中斷點找到中斷點並重新啓動代碼?
我需要編寫一個shell腳本,它可以檢查所有臨時表,並找出它在哪個點被中斷的數字,然後從該點開始。
感謝
我有一個長的shell腳本,它運行並將結果存儲在配置單元表中。該腳本需要很長時間才能完成。所有結果都保存在臨時表中。有時腳本會被殺死或中斷,因爲它會耗費大量資源很長一段時間。截至目前,我只需從中斷點複製粘貼查詢並重新啓動它。Shell腳本:如何從中斷點找到中斷點並重新啓動代碼?
我需要編寫一個shell腳本,它可以檢查所有臨時表,並找出它在哪個點被中斷的數字,然後從該點開始。
感謝
你可以通過編寫shell腳本運行日誌(通過文件),並跟蹤那些已經執行的查詢。
在你的shell腳本:
if [ -f "query1.complete" ]
then
echo "Query 1 already run. Skipping"
else
Run Query 1
touch query1.complete
end if
if [ -f "query2.complete" ]
then
echo "Query 2 already run. Skipping"
else
Run Query 2
touch query2.complete
end if
注:此代碼的語法可能不是完美的殼。
由於在每一步我創建一個表並存儲結果,所以在我檢查表是否存在的每個查詢之前。我按照以下方式實施:
tname=$(hive -e "use db_name ; show table LIKE 'tablename' " -hiveconf mapred.job.queue.name=queuename)
if [ -z "$tname" ]
then
# write the next step
else
echo " table $tname already present hence skipping to next step "