データのインポート処理などで、進捗具合を確認するためにwatchコマンドで処理を定期実行させることが多いのだけど、その際に以下の点が気になっていた。

  • 実行履歴が記録されないので、どのタイミングでどのような変動があったのか確認できない
  • 出力結果がターミナルのサイズより行数が多い場合、スクロールできないので見切れてしまう
  • 差分確認時に前回の出力と比較ができない

一応、実行コマンドでいろいろと工夫すれば変動のあった差分のみファイルに出力させることも可能なのだけど、こんなんいちいち覚えていられないし、やはり面倒。

で、前にGolangでツール作ったのだけど、これについては今...


個人的に、なにか定期的にコマンドを実行して結果を監視する際にはwatchコマンドを使ってモニタするのだけど、悲しい事にwatchコマンドでは変動のあったタイミングがいつで、その出力がどういったものだったかを確認することはできない。 せめて後からログのように確認することはできないかなと考えた結果、watchで実行するコマンドの出力つかって都度diffをして、差分が発生していた場合はファイルに書き出させるという方法が使えないかと思いついた。


watchコマンドで覚えておきたい使い方6個

watchコマンドといえば、そこまで使用頻度が高いわけではないけれど、覚えてるとちょっとした時に便利なコマンド。
今回は、そんなwatchコマンドで覚えておくと役に立つ使い方について紹介する。

1.基本的な使い方

基本的には、以下のようにコマンドを実行することで、数秒ごと(デフォルトは2秒)にそのコマンドの実行結果をコンソール上に出力することができる。

watch 連続実行させるコマンド

例えば、以下のように実行することで数秒ごとに「ls -la /home」を実行する。
当然、その配下のファイルが作成されれば確認することができる。

watch ls -la /home...

PowerShellでwatch相当の処理を行う

Linuxではおなじみのwatchコマンド。
これと同等の事をPowerShellで実行する場合、Whileコマンドをうまく組み合わせる事で実現可能だ。

while ($true -eq $true) { 実行させたいコマンド ; sleep 1 ; clear}

実際に実行させた例が以下。
1秒ごとにディレクトリ配下のファイル一覧を取得させている。

while ($true -eq $true) { Get-...