0

我有一个脚本可以同时运行几个命令和“nohup”命令。他们每个人都创建文件作为成功的确认。

我如何编写循环或任何其他内容来检查这些文件的每一秒。

每个“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
4

2 回答 2

1

正如上面提到的“B Johnson”,您必须考虑到子命令之一可能会失败。否则,您正在寻找的 while 循环将永远不会结束。你可以这样写循环:

waitOne()
{
    while [ ! -f /path/to/fileOne ]; do
        sleep 10
    done
    echo -n "fileOne is created"
}

运行 commandOne 后,在后台运行 waitOne。

于 2011-10-25T12:17:01.247 回答
0

我创建了函数:

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
}

BR科勒萨

于 2011-10-26T11:53:37.450 回答