我有这个脚本:

#!/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/

10-16 20:41