0
我有2个脚本,一个是software.sh
和其他timer.sh
都得到单独的终端执行。我想要的if语句来检查软件的执行时间要连续检查,但显然只得到在开始执行检查一次:(连续型if语句
这是timer.sh
它获取的software.sh
的PID,并计算其运行时间
#!/bin/bash
while ((1)); do
PID_Ardu=$(pidof arducopter)
Time= ps -p $PID_Ardu -oetime= | tr '-' ':' | awk -F: '{ total=0; m=1; } { for (i=0; i < NF; i++) {total += $(NF-i)*m; m *= i >= 2 ? 24 : 60 }} {print total}'
if [[ $Time < 20 ]]; then **#THIS SHOULD BE EXECUTED CONTINOUSLY**
echo $Time
else
echo INSIDE
ps -ef | grep software| grep -v grep | awk '{print $2}' | xargs kill
fi
done
这是software.sh
执行各种生成的文件
#!/bin/bash
chmod a+x *.exp
./ACCF01.exp | wait |echo "FINISHED SCRIPT 1" #Run the ACCF01 script
sed -i '/ACCF01.exp/d' ./software.sh #Delete previous line after finishing execution.
./ACCF02.exp | wait |echo "FINISHED SCRIPT 2"
sed -i '/ACCF02.exp/d' ./software.sh
./ACCF03.exp | wait |echo "FINISHED SCRIPT 3"
sed -i '/ACCF03.exp/d' ./software.sh
./ACCF04.exp | wait |echo "FINISHED SCRIPT 4"
用'bash -x timer.sh'或插入'set -x'运行它,它会打印它执行的命令。 – eckes
不幸运:(我也尝试在if语句中执行脚本本身,以确保它能够持续执行,但仍然.... if语句只在开始时运行 –
你是什么意思,没有运气?所以我们可以对它进行分析 – eckes