我有一个脚本,可以与'nohup'命令同时运行几个命令。每个人创建一个文件作为成功的确认。
我如何写循环或其他的检查每隔30秒的文件
每个'nohup'命令创建特定的文件,如commadOneFile, commandTwoFile,…
注意:每个'nohup'命令的执行时间不同。我想在等待时在屏幕上打印点,或任何其他等待和进度指示。
编辑:例如
for command in COM1 COM2 COM3
do
if [ "${command}" == "COM1" ]; then
nohup $(ksh /run/my/commandOne.ksh)
elif [ "${command}" == "COM2" ]; then
nohup $(ksh /run/my/commandTwo.ksh)
else [ "${command}" == "COM3" ]; then
nohup $(ksh /run/my/commandThree.ksh)
done
正如'B Johnson'上面提到的,您必须考虑到其中一个子命令可能会失败。否则,您正在寻找的while循环将永远不会结束。你可以这样写这个循环:
waitOne()
{
while [ ! -f /path/to/fileOne ]; do
sleep 10
done
echo -n "fileOne is created"
}
运行完commandOne后,在后台运行waitOne
我创建了一个函数:
wait_d() {
set -A COMPONENTS $@
ii=0;
while :
do
echo -n "="
sleep 10
let ii++
jj=0;
for component in ${COMPONENTS[@]}
do
if [ -f ${STATUS_DIR}/${component}done ] ; then
rm ${STATUS_DIR}/${component}done
unset COMPONENTS[$jj]
fi;
let jj++
done
if [ ${#COMPONENTS[@]} == 0 ] ; then
break;
fi;
done
}
BRKolesar