Linuxのトラブルシューティング


初めに!


Linuxは長い間、ほとんどのウェブがLinux上で動作しています.Linuxはどこにでもありますが、Linuxサーバのトラブルシューティングの際に学ぶべきことがたくさんあります.私が顧客のためにテクニカルサポートをしていたとき、私が使用したコマンドのいくつかを見ましょう.

コマンド


NETCAT / NC


お客様はよく私のドメインは、特定のポートを言うに取り組んでいない、またはお客様は、ポート上のアプリケーションをホストする必要がありますが、それは動作していないと言う
$ sudo nc --verbose  google.com 443
Ncat: Connected to 216.58.203.14:443.
Ncat: 0 bytes sent, 0 bytes received in 0.10 seconds.

--verbose Verbose output
  -z      Zero-I/O mode, report connection status only

SS


manページから(私もこれを知りませんでした)ss - another utility to investigate sockets , あなたがポート上で実行しているアプリケーションを持っていると言う9001 どのように、それが実際に接続を聞いているかどうか、そして、それがすべてのインターフェース(0.0.0.0)で聞いているかどうか、あなたは知っていますか?ss あなたはそれを把握するのに役立ちます.
ss -patun | grep -w 9001

tcp   LISTEN     0      4096                       *:9001                *:*     users:(("rootlessport",pid=691027,fd=11))
このコマンドがわかるようにProtocol ,それが聞いているかどうか、インタフェース*9001 は、プロセスID ( PID )とファイルディスクリプタ( fd )とともにそれを使用しているアプリケーションでもあります.

頂上



これまでの顧客サーバーやサーバーのメモリからなくなっていた何も理由を特定することができますか?デフォルトでは、Linuxサーバはプロセスのどんな履歴も保存しません.

vmstat , pidstat , iostat .


vmstatすべての仮想メモリの統計情報が表示されます
VMSTAToutput details
vmstat -w -S M 1 9                                                                                                               
--procs-- -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu--------
   r    b         swpd         free         buff        cache   si   so    bi    bo   in   cs  us  sy  id  wa  st
   2    0         3545         5650          121         3052    0    0    69   183   61  216  22   9  68   0   0
   0    0         3545         5649          121         3052    0    0     0  1556 1466 4690   2   2  96   0   0
   0    0         3545         5649          121         3053    0    0     0   108 1160 4263   1   1  98   0   0
   0    0         3545         5649          121         3052    0    0     0    68 1584 5925   2   1  96   0   0
   0    0         3545         5648          121         3052    0    0     0    20 1213 4872   1   1  98   0   0
   0    0         3545         5649          121         3052    0    0     0     0  995 4079   1   1  99   0   0
   1    0         3545         5650          121         3052    0    0     0    88 1465 5533   2   1  97   0   0
   0    0         3545         5650          121         3052    0    0     0     0 1290 5131   1   1  98   0   0
   0    0         3545         5650          121         3052    0    0     0    96 1855 6303   2   2  96   0   0
そこにiostat それはあなたにI/Oプレッシャーとキャッシュに関する詳細を与えます
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          22.3%    0.0%    9.2%    0.1%    0.0%   68.4%

      tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd Device
     7.09        29.8k       143.2k         0.0k       5.4G      26.1G       0.0k sda
     1.74        33.9k        25.6k         0.0k       6.2G       4.7G       0.0k sdb
詳細here
それからpidstat どのプロセスが多くのメモリとCPUを取っているかなどのプロセス統計を与えるMore Details
このようなツールはたくさんありますsysstat パッケージ
Netflixによる本当に良い記事は、それを読みますhere
システムジャーナルを正しく使用すると、頭痛の多くを保存します.
私が使用するジャーナルコマンド
journalctl --since=today -g oom
これは基本的にキーワードのためにジャーナルgrepをするでしょうoom これ以上journalctl | grep お願いします.
journalctl -t httpd.service --since=today
これはhttpdサービスについての詳細を説明します.

ディスク領域のチェック


これはしばしば、ディスクスペースをチェックする最も速い方法
$ df -Th
それだけではない.
ディスクを占有しているファイルを見つける必要がありますか?問題ありません.
$ sudo du -ach / | awk '$1 ~/[G]/ {print}' 
これはGBにあるファイルを印刷するでしょう.また、ファイルを見つけるためにfindを使うこともできます.

トップ


一番上のコマンドを起動することによって、サーバー負荷をチェックする最も簡単な方法は、トップトラブルシューティングがLinuxトラブルシューティングの重要なツールです.

サーバーポートの使用状況のチェック。


あなたがランダムなポートに気づき、どのプロセスがそれを占領しているかを知りたいなら、ファイルのリストを開いて、単に実行してください.
lsof -i :9001

解像度のチェック


DNSは、サーバーとドメインに関して最も重要なことです.
dig a domain.com
;; ANSWER SECTION:
google.com.     188 IN  A   142.250.76.206
あなたのDNS解決が働いているならば、あなたに話します

どれくらいのメモリが残っているかチェックする


The free コマンドはメモリ使用量をチェックするために使われる
free -h
               total        used        free      shared  buff/cache   available
Mem:            15Gi       7.2Gi       4.5Gi       1.5Gi       3.6Gi       6.2Gi
Swap:           10Gi       3.4Gi       7.4Gi
それはすべて、おそらく私が使用するいくつかのより多くのコマンドが、私はそれらを覚えている場合は私はあなたが知っているようになります.
場合は、私とチャットしたり、ディスカッションをしたい場合は常に利用可能です