Shell脚本:如何从中断点找到中断点和重启代码?

时间:2015-08-03 12:50:16

标签: bash shell

我有一个很长的shell脚本,它运行并将结果存储在hive表中。该脚本需要很长时间才能完成。所有结果都保存在临时表中。有时脚本会因很长时间占用大量资源而被杀死或中断。截至目前,我只是从中断点复制粘贴查询并重新启动它。

我需要编写一个shell脚本,它可以检查所有临时表,并确定它在什么时候被中断,然后从那一点开始。

谢谢

2 个答案:

答案 0 :(得分: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

注意:此代码的语法可能不适合shell。

答案 1 :(得分: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 "