0

コマンドを繰り返し実行する必要がある UNIX スクリプトがありますが、次回は前のコマンドが正常に完了した場合にのみコマンドを実行できます。スクリプトの実行が終了したことを示すコマンドを検索しましたが、見つかりませんでした。私は UNIX スクリプトの初心者であり、Unix スクリプトが好きになり始めました。

4

2 に答える 2

1

前のコマンドが成功した後にのみコマンドを実行するには、次のように 2 つを記述する必要があります。

command1 && command2

これを 1 つのコマンドでループに入れるには、各呼び出しのリターン ステータスを確認し、成功しない場合はループを終了する必要があります。最短の形式は次のようになります。

while your_command; do :; done

sleepNOOP の代わりにa を挿入することもできます:

于 2013-10-07T07:23:26.827 に答える
0

バックグラウンド コマンドの PID (プロセス ID) を何らかのファイルに保存する必要があります。これにより、次回の起動時にスクリプトがまだ実行されているかどうかを確認できます。例えば:

if [ ! "kill -0 $(</var/run/myscript-command.pid) 2>/dev/null 1>&2" ]; then
    somecommand&
    $CMD_PID = $!
    echo $CMD_PID >/var/run/myscript-command.pid
fi

これが機能somecommandするには、それ自体をデーモン化する必要があります。そうでない場合は、次のように呼び出します。

nohup ./somecommand 0<&- &>/dev/null &
于 2013-10-07T07:28:30.850 に答える