MAGAZINE

キャリテク!マガジン

コラム

障害対応に強くなろう (3) 障害対応のために覚えておきたいコマンド 初級編 1

こんにちは。株式会社パイプラインの濱田です。前回までは障害対応を行うにあたっての心構えについて述べましたが、今回より、障害対応のために覚えておきたいコマンドについて取り上げます。

なぜコマンドラインが有用なのか

そもそもなぜコマンドラインのオペレーションが有用なのかを大まかに説明しますと、

  • GUIを動かすリソースを節約できる
  • 操作ログを追いやすく、手順書に書き起こすためのコストが低い
  • 細かい動作をカスタマイズしたり、プログラムの実行結果を次のコマンドに渡したりするなどの操作がGUIよりも柔軟にできる

というメリットがあります。

GUIのように直感的なインターフェイスではないので、操作を行ううえでの心理的ハードルが高いというデメリットもありますが、

  • 視覚的にわかりやすいため、理解したつもりで誤った操作をしてしまう
    • ゆえに、どのタイミングで誤操作したのかをトレースしにくい
    • そもそも誤操作と気付かずに作業をすすめてしまいやすい
  • 高品質な手順書を作るためのコストが高い
    • 1操作ごとのスクリーンショットを多数採らなければならなくなる
    • 画面の注目して欲しい箇所を囲むなどの作業コストが発生する
    • 業務の手順化までのリードタイムが伸びる
  • 誤操作が発生したときに、どのタイミングで何が原因なのかをトレースしにくい

といったGUIのデメリットを回避するだけでなく、 コマンドライン操作を覚えることにより、シェルスクリプトにして複数の操作をひとまとめに実行させたり、条件分岐などを行ったりすることも低コストでできるようになります。

目的を意識してコマンドを覚えよう

Linuxで使用するコマンドは多数あり、筆者の環境ではだいたい1500~1600ものコマンドがありました。これらすべてを一度に覚えるのは非現実的ですし、そもそもコマンドを暗記することが偉いというわけでもありません。ですので、何かしらの作業目的からコマンドを覚えるとよいでしょう。

他ホストへログインするためのコマンド

作業用PCのOSがWindowsの場合、何かしらのターミナルソフトがインストールされていることがあるかと思いますが、Linuxのコマンドライン画面から他のホストへログインするためには、sshコマンドやtelnetコマンドを利用します。

sshは通信経路が暗号化されますが、telnetは通信経路が暗号化されないため、インターネット上でtelnetコマンドを用いる機会はほとんどないかと思いますが、LAN内にあるルーターやスイッチへログインするために利用する機会はまだ残っているでしょう。

  • sshコマンドで他のLinuxマシンへログインする

sshコマンドを利用して他ホスト(example.com)へログインするためには、以下の構文を用います。

ssh nullpopopo@example.com

また、sshで利用するTCPポートは22番ですが、インターネット上にあるホストによっては、ポートスキャンを遅延させるなどの目的で、違うポート番号でssh接続を待ち受けていることもあります。22番ポート以外で接続を待ち受けているホストへログインする場合は以下のようにポート番号を指定して接続します。

ssh -p 12345 nullpopopo@example.com

上記のポート番号はあくまで例示ですので、実際のポート番号は設定によって異なります。

  • ログアウトする

ログインしたホストからログアウトするときは

exit

または

logout

コマンドを実行します。または「Control」キーと「D」キーを同時に押すことでログアウトすることもできます(シェルがbashまたはzshの場合)。シェルのショートカットキーを覚えると作業効率も上がりますので、いずれ覚えておくとよいでしょう。

ログファイルを見るためのコマンド

ログファイルなどのテキストファイルは、「cat」「more」「less」などのコマンドを、zip圧縮されたログファイルは「zcat」などのコマンドを用いて開くことができます。また、 /var/log/messagesなどのシステム全体にかかわるログはrootユーザーにならないと開けないことが多く、「su」コマンドを用いてrootユーザーに昇格するか、「sudo」コマンドを用いて一時的にroot権限でコマンドを実行します。

  • ログファイル /var/log/messages 全体を見る

ログファイル全体を見るには、以下のコマンドを実行します。

sudo cat /var/log/messages

しかし、大量にログが記録されている場合、画面からはみ出るほどの文字列が上から下に流れるため、catコマンドはログの中から異常を検知する目的においては不向きです。そこで、ログを画面いっぱいに表示しつつ、人間の都合でページ送りするには、「more」または「less」コマンドを使うとよいでしょう。

sudo more /var/log/messages

moreコマンドでログを開くと、ログに記録された文字列が上から下に流れますが、画面最下部に到達すると流れが止まります。スペースキーを押すと、1画面分スクロールします。スクロールを途中でやめたいときは、「q」キーを押すか、「Control」キーと「c」キーを同時に押します。

lessコマンドでログを開く場合は以下のように実行します。

sudo less /var/log/messages

moreコマンドは行頭から行末方向へのページ送りしかできないのに対し、lessコマンドは上下方向のスクロールや文字列検索ができるため、ログ全体を詳細に目視確認したい場合に有用です。

ここまで取り上げたコマンドで、以下の操作ができるようになります。

  1. 障害調査対象のホストにsshでログインする
  2. 障害調査対象ホストのログファイルを開いて異常調査に着手できる
  3. 障害調査終了後、対象ホストからログアウトする

しかし、大量のログから障害原因を特定するためには、特定のキーワードを検索する、必要な行だけ表示するといった工夫が必要です。次回はログ調査の精度を上げるためのコマンド操作について取り上げます。

まずはエンジニアデビューしたい、という方は、3ヶ月間学びながらお給料が貰える KCCSキャリアテック キャリテク!の門を叩いてみてはいかがでしょう。 https://www.kcct.co.jp/careetec/

関連記事

facebook シェアシェア
LINE シェアシェア