休止状態のプロセスを起こす方法は?

休止状態のプロセスを起こす方法は?

シェルスクリプトは、2つの機能をサブプロセスとして実行します(&を介して)。
どちらも眠りに落ちました(sleepコマンドで)。

目覚めてもいいですか?

私は彼らのPIDを持っています。

PS

私は寝て&と一緒に待ちたくありません。

答え1

やや残忍なアプローチは、sleepプロセスを終了することです(スクリプト/関数が実行されている完全なサブシェルではありません)。次のシェルスクリプトを考えてみましょう。

#!/bin/bash
sleep 20
echo "Done!"

または、次の関数を使用してください。

#!/bin/bash

function gotosleep()
{
    sleep 20
    echo "Done!"
}

gotosleep &
sleep 60 # Not really necessary, keeps the script in foreground.

次に、sleepプロセスを見つけます。

$ ps -ef | grep sleep
you    PID    PGID  ... sleep 20

そしてそれを殺す:

$ kill PID

これによりスクリプトが出力されます(最小bash)。

./script.sh: line 2: PID Terminated    sleep 20
Done!

そうしたくないので、waitBashの小さなメッセージを処理する必要があります。考えが変わったらぜひご覧くださいこの問題:

sleep 20 &
if wait $! 2>/dev/null; then
    # Keep working
    continue
else
    echo "Done!"
    return # from function
fi

関連情報