インフラエンジニアを20年やってて初めて知ったtopコマンドの表示を劇的に見やすくする方法
目次
こんにちは、カナダに来て1年弱ですが、いまだに"how are you?"にアイムファインセンキューと返してしまう全然英語が上達してない聖賢です。
インフラエンジニアならみんな大好きtopコマンド、おそらくビヨンドの中ではサーバ運用の中で最初に覚えるコマンドじゃないでしょうか。
実は結構奥が深いコマンドでいろんなことができるので、これまでドヤ顔で「こんなこともできるんやで」と上司の威厳、、、もとい先輩としての経験を後進に伝えていたのですが私も最近になって初めて知った超便利な使い方を紹介したいと思います。
ちょっと長いですがお付き合いください。
普通にtopコマンドを実行すると以下のような画面が表示されます
結構これだけでもサーバ運用には重要な情報が詰まっているのですが、topコマンドの見方などは他でも色々と紹介されていると思うので今回は割愛します
今回はこのtopコマンドの表示を最終的にこんな感じにしてみます
ポイントは5つです
- プロセスの引数など詳細な情報を表示する
- 表示項目を追加して表示順番を変える
- ステータスがRUNNINGのプロセスとソートしている列をを太字で表示する
- ソート順を変える
- 設定を保存する(これが一番大事)
早速やってみましょう
プロセスの引数など詳細な情報を表示する
これは簡単、cキーを押してください
最初にtopコマンドを実行する時に-cオプションをつけて実行しても同じ状態になりますが、うっかり-cオプションを忘れた
なんて時にも便利です
表示項目を追加して表示順番を変える
普段の私達の運用業務ではお客様のサービスやプロセスが停止したというようなクリティカルな状況だけではなく、CPUやメモリの使用率を監視してサーバのリソースが枯渇しそうな状況をいち早く察知して未然に障害を防ぐように対応しています。
その際に良く指標として使われるのがCPU使用率、メモリ使用率、SWAP使用量の3点なのですが、SWAPの使用量はtopコマンドではデフォルトでは表示されていないんですよね。
ですが、topには普段非表示になっているフィールドがいくつもあって、SWAPの使用量も表示するようにすることができるんです。
やってみましょう
Shift+fを押すと以下のようなField Management画面に変わります
今回はSWAPの使用量も表示に追加したいのでカーソルキーの上下でSWAPの項目まで移動します
スペースキーを押すと項目の左側に*がつきます、この状態で表示項目に追加されます
このままだと表示順がCOMMANDの後ろになってしまうので他の指標と比較しやすいように%MEMの後ろに表示するようにします
カーソルキーの右を押すとカーソルの選択状態が少し広がって移動できる状態になります。
カーソルキーの上下を使って目的の場所に移動してください
移動が完了したらカーソルキーの左を押すと選択状態が元に戻って位置が固定されます
qまたはEscキーでField Management画面を抜けます
%MEMの横にSWAPの項目が追加されましたね
ステータスがRUNNINGのプロセスとソートしている列を太字で表示する
せっかくビジュアル的にわかりやすくなったので、さらにステータスがRUNNINGのプロセスと、現在ソートしている列を太字で表示するようにしてみます
ついでに表示される画面の色も変えてみましょう
Shift+zを押すと以下のような画面に変わります
フィールドごとに色を変えたりできるのですが、デフォルトは何故か赤色です
ちょっと毒々しいので7を押して白に変更します。
上の"Summary Data"の欄も赤色なので"shift+S"で色を変更するフィールドを切り替えて同じように7を押して白色に変更します。
shift+sを押すと"1) Select a target asu an upper case letter....."のところが変わります、ちょっとわかりにくいですね
数字を入力すると好きな色に変わります、僕は色々試しましたが結局7(white)に落ち着きました
白以外にもいろんな色があるのでここはお好みで好きな色にしてください。
この状態を保存して抜ける時は"Enter"を押してください
先ほど選択した画面の色設定が保存されていれば成功です
さらにここからステータスがRUNNINGのプロセスを太字で表示して、さらに今ソートしているフィールドも太字で表示してみましょう
xキーを押すとソートしているフィールドが太字になり、さらにyキーを押すとステータスがRUNNINGのプロセスが太字で表示されます。
ちょっとMacのターミナルだと分かりにくいですが、、、、、ソートされているフィールド(%CPU)とステータス(S)がRUNNING(R)のプロセス(この場合はtopコマンド)が太字でハイライト表示されているのがお分かりでしょうか
ソート順を変える
ここまでで普段のtopコマンドがだいぶ使いやすくなったんじゃないかと思います。
普段の私達の運用ではお客様のサーバで発生したアラートに合わせて原因を調査する必要があるので、デフォルトのCPU使用率の表示だけではなくメモリ使用率やSWAP使用量でソートしたい場合が良くあります。
そんな時は"shift+<"または"shift+>"でソートするフィールドを左右に移動することが可能です
ちょっと分かりにくいですがshift+>で%CPU→%MEM→SWAPとソート順を変えてみました
shift+p(%CPUでソート),shift+m(%MEMでソート)というショートカットもあります。
設定を保存する(これが一番大事)
最後に、今までの設定を保存しておきましょう
ここまで色々表示を変えてみましたが、このままtopコマンドを終了すると次にtopコマンドを叩いたときには元の状態に戻ってしまいます
毎回ここまでの手順を繰り返すのは手間なので、
今の表示状態を保存しておきたい場合は"shift+w"を押してください
topコマンドを実行しているユーザーのホームディレクトリに.toprcというファイルが生成されて、現在の設定が保存されます。
ちなみにここまでの説明はRedHat7系(CentOS7,AmazonLinux2)のtopコマンド特有の部分もあります
別のOSのtopコマンドでは若干違う操作が必要な場合もありますがほぼ同じことはできるので、
他のOSではどうやるんだ?というリクエストがあれば(多分ないけど)お応えします。
これで明日からの監視アラート対応が捗るぜ!
というのは私達だけかもしれませんが、この記事が人知れず誰かの役に立てば幸いです。