通常で実行すると永遠と実行結果を出力するコマンドを、シェル内部にて実行して
内容をログに吐き出したいのですが停止方法がわかりません。
(ctrl+cと同じ事をシェル内部でやりたい。)
#!/bin/sh
prstat -t | awk '{print $2, $5}' > prstat.log
宜しくお願いします。
sleep XX -> kill はこの場合無効だと思われます。
(prstat -t だけだと永久ループのコマンドの為)
この場合は
prstat -t ではなく
prstat -t 1 300
としましょう。
意味合いとしては -t の出力結果を1秒毎更新、300回繰り返し
という意味です。
但しこの場合 prstat.log には300回実行分のログが残ります。
補足ですが prstat -t 300 1
とした場合 300秒毎に1回更新せよという意味になりますが
はじめの1回は一瞬で返ってくるので、これを1回とカウントしてしまうようです。
300秒後にもう1度実行させたい場合は prstat -t 300 2 とするが吉です。 但しこの場合もログには2回分の結果がのこります。