よく使うトラブルシューティング コマンド実行例 まとめ
ファイル
ファイル名検索
$ find ./ -name hoge任意のファイルから特定文字列を検索
$ grep -r hoge ./ファイルサイズが大きい順に表示
$ du -sh * | sort -h -r1秒おきにコマンド継続実行
$ while true; do sleep 1; echo hello; doneディスク使用量確認
$ sudo ionice -c 2 -n 7 nice -n 19 du -scm /* | sort -rnパーティション毎のディスク使用量確認
$ df -Thメモリ使用量
$ free -mSwapサイズ
$ swapon -s/proc/
CPU情報、コア数など
メモリ使用内訳
OS内で動作するすべてのプロセスにおけるinotify watch数を把握
プロセス
プロセス数を確認
使ってるファイルのプロセスを調べる
/bin/shで動いてるプロセスを全て停止する
バージョン
OSバージョン
kernelバージョンを調べる
パッケージの確認
プロセスが掴んでいるファイル一覧
プロセス内のスレッドの数
稼動しているプロセスを検索
プロセスの親子関係
ls系
PCI バスとそこにつながっているデバイス
CPUの情報
ブロックデバイスのリスト
ロードされているカーネルモジュール
dmidecode
システムの情報、型番等
BIOS の情報
CPU の情報
メモリの情報
パフォーマンス

References
監査
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