よく使うトラブルシューティング コマンド実行例 まとめ

ファイル

  • ファイル名検索

$ find ./ -name hoge
  • 任意のファイルから特定文字列を検索

$ grep -r hoge ./
  • ファイルサイズが大きい順に表示

$ du -sh * | sort -h -r
  • 1秒おきにコマンド継続実行

$ while true; do sleep 1; echo hello; done
  • ディスク使用量確認

$ sudo ionice -c 2 -n 7 nice -n 19 du -scm /* | sort -rn
  • パーティション毎のディスク使用量確認

$ df -Th
  • メモリ使用量

$ free -m
  • Swapサイズ

$ swapon -s

/proc/

  • CPU情報、コア数など

  • メモリ使用内訳

  • OS内で動作するすべてのプロセスにおけるinotify watch数を把握

プロセス

  • プロセス数を確認

  • 使ってるファイルのプロセスを調べる

  • /bin/shで動いてるプロセスを全て停止する

バージョン

  • OSバージョン

  • kernelバージョンを調べる

  • パッケージの確認

  • プロセスが掴んでいるファイル一覧

  • プロセス内のスレッドの数

  • 稼動しているプロセスを検索

  • プロセスの親子関係

ls系

  • PCI バスとそこにつながっているデバイス

  • CPUの情報

  • ブロックデバイスのリスト

  • ロードされているカーネルモジュール

dmidecode

  • システムの情報、型番等

  • BIOS の情報

  • CPU の情報

  • メモリの情報

パフォーマンス

Linux Performance Observability Tools

監査

auditd

/etc/audit/rules.d/audit.rulesファイルの末尾に、以下の行を追加しOSを再起動

以後、/var/log/audit/audit.log にkillシステムコールを呼び出したプロセスの情報が記録される。以下のようにコマンドで対象のプロセスが発行したkillシステムコールをログに出力。

ネットワーク

General

  • CPU使用率

  • 特定のユーザーが使用しているCPU使用率

  • CPU使用率 Top15

  • ディスクI/O使用率

接続性

  • traceroute

  • Nping

  • MTR

コマンド別

netstat

  • TCPの接続状態確認

  • LISTEN/ESTABLISHEDの状態(Openな接続)確認

  • ネットワークに正常にパケットが送受信できているか

  • 接続元のユニークなIP IPv4

IPv6

ss

  • オープンな接続数の調査

  • TCPのみフィルタリング

  • TCPの状態でフィルタリング

curl

  • ヘッダーだけ表示

  • ヘッダー指定

  • 時間測定

  • 詳細時間表示

  • POSTメソッド

動画ファイルのPOST

  • Cookie 送信

  • ラウンドロビンDNSの調査

  • レスポンスコード調査し続ける

スリープ付き

  • 連続でリクエスト送信時のステータスコードと処理時間

  • 5秒おきにリクエスト送信時のヘッダー情報

  • HTTP/2でテスト

  • スクリプトと合わせてテスト

  • 表示項目 カスタマイズ 以下の内容を curl-format.txt として保存。

  • ネームサーバ 接続テスト

dig

  • ELBノード毎のレスポンスのHTTPステータス

  • ネームサーバ IP 列挙

OpenSSL

  • 接続テスト

  • 証明書詳細

  • 暗号スイート指定

Netcat

  • クライアント/サーバ間通信

  • 接続状態監視

  • 時刻変換

Others

低レイヤー

strace

  • ps auxで対象プロセスのPIDよりプロセスIDを確認して、-pオプションで指定して動きをトレース

    • 例えば、Nginxのworkerのネットワーク関連にシステムコールの動きをトレースする場合は以下のように実行

    • 問題発生時に書くシステムコールで要した時間を確認したい場合は、以下のように実行

      • -e trace=xxxxで指定した

      • -ttでusecでタイムスタンプを絶対時間で表示

      • -Tで各システムコールで要した時間

      • -o FILE_NAMEで結果を指定したファイルに出力

gdb

  • 実行プロセスのコードを追う

  • Tips

    • ブレークポイントを打つ点は、btコマンドでデバッグトレースを確認し、毎回通過する関数などを観察すると良い(Redisの場合は、processCommand)。

※Redisサーバーをデバッグするためには、手動でビルドする必要があります。その際、make CFLAGS="-g "のように実行しておく必要があります。適宜MakefileのOPTIMIZATION?の値で-O2から-O0に変更しておくとよいでしょう。

負荷テスト

  • sysbench インストール

実行方法

パケットキャプチャ 

  • 取得

  • フィルター例

sample.pcapというpcapファイルを読み込み(-rオプション)、DNSに変換せずに(-nオプション)、srcかdstのホストIPがxxx.xxx.xxx.xxxかつTCPポート80番

sample.pcapというpcapファイルを読み込み(-rオプション)、DNSに変換せずに(-nオプション)、srcのホストIPがxxx.xxx.xxx.xxxかつdstのホストIPがyyy.yyy.yyy.yyyかつTCPポート80番

Wireshark

  • フィルター例

Command Gでパケット番号による検索。

  • フィルター詳細 https://www.wireshark.org/docs/dfref/

カーネルソースコード入手

Yumレポジトリ中のrpmの中のJavaを確認

screen

.screenrcには以下の設定を追加。

ディスク容量いっぱい

不要ファイルの洗い出し

キャッシュ周りやデプロイ毎に作成されるファイルで、古いものが残っている等の類のものを優先的に見ていく。

yumのキャッシュを確認

  • 消すものがさくっとでてこないときにとりあえず

前者で十分な事が多いが、容量がいっぱいだと、前者のコマンドも容量不足で実行できないことがある。その場合後者を実行すれば良い。

BPF

その他

Unix時間を変換

MacOSでは以下

10進数へ変換

2進数

16進数

ALBで502生成

macOS

ターミナル

VSCode

マークダウン表示

  • Command + k -> v

    • 画面分割して表示

  • Command + Shift -> v

    • 別タブで表示

参考資料

  • https://qiita.com/sion_cojp/items/04a2aa76a1021fe77079

  • https://qiita.com/taiyop/items/bfeeb41259cb0d083d88#_reference-dfefbef0995e80f8203e

  • https://qiita.com/ngyuki/items/0edecb8b92fcf189ac2b

  • http://saosao-0706.hatenablog.com/entry/2016/04/21/101656

  • https://qiita.com/rsooo/items/42f0902d42bab6ecf175

  • https://qiita.com/tksnino/items/300e39279ca57d9515f2#_reference-f0f5976f3c0d65c5026c

  • https://qiita.com/hiro-d/items/c3f724cb3d377e21cd91

  • https://linuxize.com/post/how-to-use-linux-screen/

  • https://qiita.com/hnishi/items/3190f2901f88e2594a5f

  • https://unix.stackexchange.com/questions/26685/how-to-split-window-vertically-in-gnu-screen

  • https://support.apple.com/ja-jp/guide/terminal/trmlshtcts/mac

Linux コマンド例 まとめ

  • apt-cache

  • apt-chrom

  • apt-get

  • arp

  • chkconfig

  • createuser

  • crontab

  • df

  • dig

  • dmesg

  • dmidecode

  • dpkg

  • expect

  • fdisk

  • fio

  • firewall-cmd

  • firewalld

  • free

  • fsck

  • gcc

  • gdb

  • grep

  • hdparm

  • host

  • ifconfig

  • insmod

  • iostat

  • iotop

  • ip

  • iptables

  • journalctl

  • kill

  • limit

  • lshw

  • lsmod

  • lspci

  • lsusb

  • lspci

  • lsusb

  • ltrace

  • lvcreate

  • lvextend

  • lvreduce

  • mkfs

  • mkswap

  • modprobe

  • mount

  • mtr

  • netstat

  • nmtui

  • nslookup

  • ntpq

  • ntpdate

  • parted

  • pidof

  • ping

  • postfix

  • postqueue

  • postsuper

  • pstree

  • resize2fs

  • rmmod

  • route

  • rsync

  • sar

  • screen

  • script

  • service

  • smartctl

  • snmpwalk

  • ss

  • strace

  • swapon

  • sysctl

  • systemctl

  • tail

  • tcpdump

  • top

  • traceroute

  • ulimit

  • uptime

  • vgcreate

  • vgrename

  • vgextend

  • w

  • watch

  • yum

参照

  • コマンドで覚えるLinux 単行本 – 2016/10/12 一戸 英男 (著)

    • https://www.amazon.co.jp/dp/4802610327

Last updated