質問: シェルでの強制終了 通常で実行すると永遠と実行結果を出力するコマンドを、シェル内部にて実行して 内容をログに吐き出したいのですが停止方法がわかりません。 (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回分の結果がのこります。