2015-08-03 46 views
-2

我有一个长的shell脚本,它运行并将结果存储在配置单元表中。该脚本需要很长时间才能完成。所有结果都保存在临时表中。有时脚本会被杀死或中断,因为它会耗费大量资源很长一段时间。截至目前,我只需从中断点复制粘贴查询并重新启动它。Shell脚本:如何从中断点找到中断点并重新启动代码?

我需要编写一个shell脚本,它可以检查所有临时表,并找出它在哪个点被中断的数字,然后从该点开始。

感谢

回答

0

你可以通过编写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 

注:此代码的语法可能不是完美的壳。

0

由于在每一步我创建一个表并存储结果,所以在我检查表是否存在的每个查询之前。我按照以下方式实施:

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 "