コマンドPIDを取得し、別の[冗長]に送信します。

コマンドPIDを取得し、別の[冗長]に送信します。

端末でコマンドを実行し、コマンドが開始されるとすぐに、そのPIDを別のコマンドに送信して監視できるかどうか疑問に思います。

こんなこともしなければならないのに、

dd if=/path/of/file of=/path/of/destination

その後、を使用して実行を監視する必要がありますpidstatが、pidstatpidが必要で、片側から他方にpidを送信する方法がわかりません。

ディスク使用量、メモリ使用量、CPU使用量、および経過時間を監視する必要があります。誰もがこれを行う方法を知っていますか?

答え1

Bash(およびおそらく他のシェル)では、シェル変数を使用して最後のバックグラウンドプロセスのPIDをプログラムでキャプチャできます$!。つまり、次のことを行うことが可能です。

dd if=/path/of/file of=/path/of/destination & pidstat -p $!

バラよりこの同様のaskubuntuの質問

答え2

コマンドの最後に&を追加するだけです。

dd if=/path/of/file of=/path/of/destination &

上記のコマンドを実行するとpidが提供され、このpidを使用して監視できます。

テスト

cat infinite.sh
#!/bin/bash
while :
do
        echo "Press [CTRL+C] to stop.."
        sleep 1
done

次に、最初の端末で以下のように上記のコマンドを実行します。

-bash-3.2$ ./s.sh &
[1] 25666
-bash-3.2$ Press [CTRL+C] to stop..
Press [CTRL+C] to stop..
Press [CTRL+C] to stop..
Press [CTRL+C] to stop..

これで2番目の端末を開き、それを使用してkill -9 25666プロセスを停止できます。あなたの場合は、2番目の端末を開いて最初の端末から取得したコマンドをdd使用してコマンドを監視できます。pid

関連情報