我有bash脚本运行一个长时间运行的进程,它会向stdout输出很多东西。我让脚本只在完成后打印过程输出,并且仅在失败时打印。
我的问题是,某些CI每X分钟需要一些标准输出,并且该过程有时需要比X分钟更多。
我正在考虑使用bash解决方案:
这是我开始写的:
run_process > output.txt 2>&1 & my_pid=$!
exited=0
while [ ${exited} -eq 0 ]
do
timeout wait 5s ${my_pid};exit_code=$?;exited=1
echo .
done
显然,这不起作用,因为超时无法获得一系列命令。 你有其他解决方案吗?
答案 0 :(得分:0)
试试这个:
run_process > output.txt 2>&1 & my_pid=$!
while ps -p $my_pid > /dev/null; do
echo -n .
sleep 5
done
从wait
获取退出值:
wait $mypid
echo $?