我有这个脚本:
#!/bin/sh
echo "Start: " $(date +%s)
(time hive --hiveconf mapreduce.job.reduce.slowstart.completedmaps=0.5 --hiveconf mapred.reduce.tasks=10 --hiveconf mapreduce.reduce.shuffle.parallelcopies=15 --hiveconf hive.execution.engine=mr -f sample-queries-tpcds/query50.sql --database tpcds_text_db_1_10) 2> output/tpcds_query_2c_50_mr.out
echo "End: " $(date +%s)
如何在其中添加一些代码,以便在执行 5 秒后它会杀死自己? (比如 ./script.sh 5 秒后)?
最佳答案
只需要在后台运行hive
,然后休眠5秒,在hive
退出时杀死sleep
。如果 hive
已经完成,kill
将打印错误信息,但您可以将其重定向到 /dev/null
以忽略它。
hive --hiveconf mapreduce.job.reduce.slowstart.completedmaps=0.5 \
--hiveconf mapred.reduce.tasks=10 \
--hiveconf mapreduce.reduce.shuffle.parallelcopies=15 \
--hiveconf hive.execution.engine=mr \
-f sample-queries-tpcds/query50.sql \
--database tpcds_text_db_1_10) \
2> output/tpcds_query_2c_50_mr.out & hive_pid=$!
sleep 5 & wait
kill $hive_pid 2> /dev/null
关于bash - 如何让脚本在特定时间后运行后自行终止?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32704196/