LoginSignup
166
205

Linuxでの調査時に高頻度で使用してきたコマンドまとめ

Posted at

この記事について

この記事は、Linux上でコマンドをそこそこ実行してきた私が独断と偏見でよく使う5大コマンドをまとめたものです。
痒い所に手が届くような内容になることを願って記します…。

コマンドたち

①netstat -anp | grep "Listen "

netstatコマンドは、使用しているディストリビューションによってはssコマンドに置き換わっている可能性があります。

実現できること

LISTENしているポートを確認できます。
アプリケーションやミドルウェアに接続できない場合のトラブルシュートに使用できます。

使用方法

ポートの状況を調べたいサーバ上でコマンドを打つだけです。
127.0.0.53:53:::80の箇所: LISTENしているIPアドレスとポート
0.0.0.0:*:::*の箇所:    接続する側のIPアドレスとポート

このような状況ではSSL設定したはずなのに、443ポートが開いていないぞというような形で調査ができます。

$ netstat -anp | grep "LISTEN "
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -
tcp6       0      0 :::80                   :::*                    LISTEN      -

②lsof -i:<ポート番号>

実現できること

ポートが何によって開放されているかを確認できます。

使用方法

コマンドの<ポート番号>の箇所を調べたいポート番号に置き換えてコマンドを打ちます。
COMMANDの箇所がapache2になっているので、80番ポートを開放しているのはapache2であると分かります。

$ sudo lsof -i:80
COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
apache2  374     root    4u  IPv6  27362      0t0  TCP *:http (LISTEN)
apache2 1011 www-data    4u  IPv6  27362      0t0  TCP *:http (LISTEN)
apache2 1012 www-data    4u  IPv6  27362      0t0  TCP *:http (LISTEN)

③grep -lR "<検索文字列>" <ディレクトリ名>

実現できること

指定したディレクトリ配下の検索文字列を含むファイルを一覧取得できます。
エディタでやれは禁止。

使用方法

コマンドの<検索文字列>を検索したい文字列に置き換え、<ディレクトリ名>を配下を検索したいディレクトリ名に置き換えてコマンドを打ちます。
特定の変数が使用されているファイルの一覧を抜き出す際などに利用できます。

# ディレクトリ/ファイル構成
$ tree
.
├── test1
└── test_dir
    ├── test2
    └── test_dir2
        └── test3


$ cat test1
aaa

$ cat test_dir/test2
bbb

$ cat test_dir/test_dir2/test3
aaabbb
$ grep -lR "aaa" ./
./test1
./test_dir/test_dir2/test3

④Ctrl + R

実現できること

コマンドの履歴を検索できます。
あのめっちゃ長いコマンドもう一回打ちたい…を実現できます。

使用方法

Ctrl + Rを押すことで検索画面に切り替わります。
その後、検索文字列を打つことで検索文字列を含むコマンドの中で最後に打ったコマンドを呼び出せます。

ここでは、111を検索文字列として、echo 111が履歴から検索されています。
この状態から、Enterで実行、Tabでコマンドの表示、Ctrl + Rでさらに古いコマンドの検索ができます。

# 111で検索した状態
(reverse-i-search)`111': echo 111

# Enter押下時(コマンドが実行される)
$ echo 111
111

# Tab押下時(コマンドは実行されていない状態)
$ echo 111

# さらにCtrl + Rを押下時(さらに古いコマンドの検索)
(reverse-i-search)`111': echo 111222

⑤for

実現できること

繰り返す処理を行うことができます。
一定の間隔でコマンドを打ったり、複数のサーバにコマンドをばらまいたりできます。
調査したいサーバをローラーで調査する際などに使用していました。

使用方法

以下の構文で繰り返し処理が実行できます。

for <実際の処理に使用する変数> in <変数に格納するもののリスト>; do <コマンド>; done

使用する際のイメージはこんな形です。
echoの部分をsshに変えることにより、サーバへのローラー処理などが可能になります。

$ _hosts="test1 test2 test3"
$ for host in $_hosts; do echo "====$host===="; echo "hello $host"; done
====test1====
hello test1
====test2====
hello test2
====test3====
hello test3

あとがき

コマンドを直接打つ機会も減っていると思いますが、なにかの助けになれば幸いです。
こんなのも便利だよがあれば、是非教えてください!

166
205
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
166
205