エンジニアとして、あなたはコマンドラインを使って仕事をすることが多いと思いますが、仕事のコマンドを除いて、生活のあらゆる面をコマンドに任せようとしたことはありますか?
Linux Japanでは、より多くの愛好家にコマンドラインを効果的なツールとして使っていただくために、この連載でコマンドラインという存在を違った角度から見ていただければと思い、3名の執筆者をお招きして「コマンドライン・サバイバルガイド」を執筆していただきました。いつもと違うコマンドラインを体験してみたい方は、本日の「コマンドライン・サバイバルガイド」をご覧になってみてはいかがでしょうか?
本日の内容に関するご意見・ご感想もお待ちしております。
概要
時には、コマンドを実行し続け、その出力の変化を追跡する必要があります。これを行う一般的な方法の1つは、行き止まりのシェルスクリプトを書くことですが、Linuxには既に、指定したプログラムを定期的に実行し、結果をフルスクリーンで出力するためのツールが用意されています。
概念と用語
シェル上でコマンドラインを実行すると、通常、端末のキーボードに相当する標準入力ファイル、端末の画面に相当する標準出力ファイル、標準エラー出力ファイルの3つの標準ファイルが自動的に開かれます。プロセスは、標準入力ファイルから入力データを取得し、標準出力ファイルに正常な出力データを出力し、標準エラーファイルにエラーメッセージを送信します。
ハンズオン
シナリオ 1: watch を使用して定期的にコマンドを実行し、出力を監視します。
| デモ配布 | Ubuntu |
| 関与する命令 | watch |
時計の基本的な使い方
使い方は簡単ですwatch
watch
watchコマンドは2秒ごとにコマンドを実行し、結果をフルスクリーンで出力します。
下図は watch date 実行する画面の一つです:
Every 2.0s: date orangepipc2: Sat Oct 3 2020Sat 03 Oct :14 AM CST
2.0秒ごと:図の最初の行では、watchは2秒ごとにコマンドを実行します。date の後に続くのは実行されるコマンドです。orangepipc2: の後に続くのはコマンドが実行されるホスト名で、 Sat Oct 3 2020 はコマンドが実行された時刻です。
3行目以降がコマンド実行時の出力です。
繰り返しコマンドの間隔を指定
n intervalを使えば、コマンドを繰り返す間隔を設定することもできます。例えば、dateコマンドを5秒ごとに実行するように設定できます。
watch -n 5 date
出力の変化の発見
単にコマンドを繰り返すだけなら、シェルのループで簡単にできますが、watchはそれ以上のことができます。
dオプションを使用すると、2つの出力の異なる部分を強調表示することもでき、非常に便利です:
watch -d -n 10 date
また、-g/--chgexit オプションを使用することで、出力で何が変更されたかを強調表示するだけでなく、結果に変更があった場合にループを抜けるように watch を設定することもできます。例えば、USBが変更されたかどうかを調べるには次のコマンドを使います。
watch -g 'dmesg |grep -i usb |tail'
コマンド実行時の戻り値の検出
デフォルトでは、watchはコマンドが成功するかどうかを気にしませんが、コマンドの戻り値を検出し、ゼロ以外の値を返したらビープ音を鳴らすように設定したり、単に終了させることもできます。
watch -e wrong_commands
練習
- watchを使ってプロジェクト・ディレクトリを監視し、他のツールと組み合わせて自動コンパイルしてみてください。





