原因調査用Linuxコマンド

サーバの動作に異常が発生した際に原因を探るためのLinuxコマンドで、自分用のメモです。
全てmanとかググったら出てくるので説明は適当です。思いついたら後で追記していくかもです。

対象はDebian Squeezeになります。
全てパッケージインストールできるもので、パッケージ名は [in packagename] としてあります。



各所よりコメントありがとうございます。
良さ気なコマンドは追記していきます。

<追加したコマンド>
* telnet (+コメント wget, netcat)
* arp (+コメント arpwatch)
* pstree
* fdisk コメントに gdisk
* host, dig
* watch
* reboot

コマンド追加により縦長になったので目次を追加しました


目次

プロセス系

  • ps
  • pstree
  • top
  • lsof
  • vmstat
  • pidstat
  • mpstat
  • dstat
  • /proc/$PID/

  • Disk I/O系

  • df
  • iotop
  • iostat

  • Network系

  • ping
  • ifconfig
  • ip
  • route
  • traceroute
  • mtr
  • netstat
  • tcpdump
  • iptables
  • arp
  • telnet

  • DNS系

  • host
  • dig

  • OS系

  • sysctl
  • mount
  • fdisk
  • ulimit
  • /proc/
  • reboot

  • ガチンコデバッグ系

  • strace
  • sar

  • 性能計測

  • fio
  • snmpwalk

  • 補助ツール

  • watch

  • 解決力に関わる要素




    プロセス系

    ps [in procps]

    プロセスの表示。

    pstree [in psmisc]

    プロセスの親子関係をツリー表示。

    top [in procps]

    心の友。医師の触診と同じ。

    lsof [in lsof]

    プロセスが開いているファイルのリストとか。

    vmstat [in procps]

    topの簡易表示的な。最近はContextSwitchとか診る時以外あんま使わない。

    pidstat [in sysstat]

    プロセス毎に色々表示。

    mpstat [in sysstat]

    CPU情報表示。

    dstat [in dstat]

    色々カラフルに表示。
  • dstatの万能感がハンパない – (ひ)メモ
  • /proc/$PID/

    プロセス毎の色んな情報。


    Disk I/O系

    df [in coreutils]

    パーティションとかディスク容量確認。

    iotop [in iotop]

    プロセス毎にDiskI/Oを表示。

    iostat [in sysstat]

    デバイス毎にDiskI/Oを表示。


    Network系

    ping [in procps]

    ご挨拶。死活確認とかルーティング確認とか。

    ifconfig [in net-tools]

    ネットワークインターフェースの表示とか設定。

    ip [in iproute]

    割り当てアドレスの表示。

    route [in net-tools]

    経路の表示とか設定。

    traceroute [in traceroute]

    通信経路の確認。ここ数年、使った覚えない・・・

    mtr [in mtr-tiny]

    通信経路の継続表示。どこで、どのくらいの品質なのかまでわかる。
    mtrパッケージだとX11用途と不要なので mtr-tiny で十分。
  • MTR
  • Diagnosing Network Issues with MTR
  • netstat [in net-tools]

    ネットワーク接続情報を表示。
    TCP/UDP のポート見たり、FIN_WAIT とか CLOSE_WAITの量を見たり。

    tcpdump [in tcpdump]

    パケットがちゃんと行ったり来たりしてるか確認。FORWARD関連で大活躍

    iptables [in iptables]

    iptablesでファイヤーウォール作ってる場合はパケット数とかDROP見る。

    arp [in net-tools]

    Pingを返さないサーバの確認や、IPアドレス重複事件の解決に。

    telnet [in telnet]

    サーバと密なお話。HTTPだけならnetcatやwgetもアリ。


    DNS系

    host [in bind9-host]

    正引き。nslookupよりこっち使う。

    dig [in dnsutils]

    高機能な名前解決など。


    OS系

    sysctl [in procps]

    OSのチューニング的な。

    mount [in mount]

    マウントオプション見たり。

    fdisk [in util-linux]

    デバイスやパーティション情報の表示が主。
    2TB以上のGPTだと gdisk を使いたいが >= squeeze-backports

    ulimit [shell builtin]

    ユーザごとの色んな制限。
  • 過去記事:ulimitが効かない不安を無くす設定
  • /proc/

    reboot [in sysvinit]

    OS再起動したら直る、という結論が負け犬かどうかは貴方次第。


    ガチンコデバッグ系

    strace [in strace]

    処理の詳細なトレース。
  • Linuxデバッグコマンド strace の基本的な使い方
  • sar [in sysstat]

    色んなシステム情報の取得。
  • 逆引きUNIXコマンド/システム情報を取得する・sarコマンド
  • sarコマンドのオプションと使用法
  • sarコマンドの見方

  • 性能計測

    fio [in fio]

    I/O性能計測。

    snmpwalk [in snmp]

    snmpdから直接値を取得。


    補助ツール

    watch [in procps]

    定期的なプログラムの実行。


    解決力に関わる要素

    根気

    諦めないその精神と、それを持続するためのブドウ糖。

    経験

    何を知り、何を調べ、どう詰め寄るかの効率的なスケジューリング。

    閃き

    たまには当てずっぽうで検証して原因を特定したり、仮定から逆詰めしたり。

    相談

    人に相談しようと内容を整理して説明している途中で解決できちゃうテディベア現象。

    睡眠

    ギブアップ一歩手前で30分くらい寝て、起きてみるといきなり解決できること多し。



    これらのコマンドを駆使して、発生タイミングや条件を探して異常値と原因を特定していくだけの簡単なお仕事です。

    問題の整理から原因の特定まではかったるい作業だけど、
    解決に至った時の達成感はエンジニアの至福!!