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」のように、サブコマンドの 1 つが失敗する可能性があることを考慮する必要があります。そうしないと、探している 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 に答える