コジマです。
サーバーいじってて色々監視したいときに気軽に無限ループさせたいときってありますよね。
私はあるんです。
- ファイル転送を確認するために特定のディレクトリに対してlsし続けたい
- ntpで時刻同期できることを確認するためにntpqし続けたい
- 特定のプロセスの使用メモリ確認するためにpsし続けたい
そんなとき。psに関してはtopやらsysstatやらあるから他にやり方あるけども。
わざわざこれだけのためにシェル書くのもめんどくさかったりしますよね。
そんなときにはこの構文覚えましょう。
while true; do コマンド1;コマンド2;・・・;done
上記の例をコマンドにするとこんな感じになります。
while true; do ls -ls | grep test.txt; sleep 1; done
while true; do ntpq -q; sleep 1; done
while true; do ps aux | grep testprocess; sleep 1; done
これをやるときはsleep入れること推奨します。
sleepないと一瞬で画面がとんでもないことになります。
C言語プログラミングで意図せず無限ループを作ってしまった人にはわかるはずw
終了する時は「control + C」で大丈夫です。
注意しなきゃいけないのは、この小技を使用するときにpingみたいなデフォルトで無限回実行するコマンドを
入れないようにしてください。
control + Cで終わらそうとしてもまた始まります。
もしやってしまった場合はcontrol + Zで強制的にプロセスを殺してください。
短いけども、最近更新滞ってしまったので、小ネタもどんどん出していけるようにしますー。
以上、コジマでした。