Kodama's home / tips.

Linux システムをいろいろ調べる

特に気に入っているオプションがあるコマンドについては オプション附きで書いたものもある. コマンドと情報が書かれたファイルを特に区別して書いてはいない.

調べるって云ってもいろいろあるよね?

  1. 解説書,マニュアル類を読みたい. マニュアル類,
  2. ファイルの所在や内容等をしらべる. ファイル/ディレクトリ,
  3. 自分のマシンの設定や動作をしらべる. 動作の設定/記録, メモリの状態, ディスクの状態, ネットワ−クの設定/動作確認, プロセス, CPU の動作, ハ−ド, カ−ネル, プリンタ, 時刻, キ−ボ−ド/コンソ−ル, X, ログイン情報, その他,
  4. ネットワ−クの設定と LAN の状態をしらべる. ネットワ−クの設定/動作確認, ネットワ−クの速度, ネットワ−クの名前参照, ネットワ−クのパケット到達, Ether アドレス, ネットワ−クの統計, パケット/プロトコルの分析, NFS,
  5. Internet. ネットワ−クのパケット到達, ネットワ−クの名前参照, mail(動作試験など), HTML の確認, セキュリティ問題の報告相談先/情報源

マニュアル類

man, info, /usr/doc の辺り, apropos, man -k, whatis, TkNamazu, xman, JF の文書類を読む

動作の設定/記録

/var/log/ の辺り, dmesg, /etc/syslog.conf, /etc, /usr/etc , /usr/local/etc,

ファイル/ディレクトリ

ディレクトリの tree 構造を見る, ディスク内の捜し物, ファイルやディレクトリのモ−ドはOK?,
  1. プロセスとファイルの関連をしらべる
  2. pwd(ここはどこ?), ls
  3. 所在: locate, whereis, which, find
  4. どのようなファイルか: ls -l, lsattr, file type(コマンド名として使った時の解釈)

    例: kill コマンドをしらべてみる.

    $ whatis kill    (kill の man ページはあるか?)
    kill (1)             - terminate a process
    kill (2)             - send signal to a process
    $ man 1 kill
    ...略 (kill コマンドの解説)
    $ man 2 kill
    ...略 (C プログラミングで使うシステムコールの解説)
    $ man -k kill    (関連する man ページは?)
    ....略
        (場合によっては killall の方が使いやすいかも)
    $ locate kill | grep bin    (kill をファイル名に含むコマンドを探す)
    $ whereis kill   (kill コマンドと man ページの所在)
    kill: /bin/kill /usr/bin/kill /usr/man/man2/kill.2.gz /usr/man/man1/kill.1.gz
        (/bin/kill と /usr/bin/kill の2つがある)
    $ ls -l /bin/kill /usr/bin/kill
    -rwxr-xr-x    1 root     root         8260  4月 18日 2001年 /bin/kill*
    -r-xr-xr-x    3 root     root        14524  9月 16日 2000年 /usr/bin/kill*
    $ which kill   (どちらが実行されるか?)
    /bin/kill
        (/bin/kill の方が /usr/bin/kill より優先して実行される...ように見えるのだが...)
    $ type kill
    kill is a shell builtin
        (単に kill とすると, shell に組み込みの kill が実行される. /bin/kill ではない.)
    $ type killall
    killall is /bin/killall
        (killall の例では /bin/killall が実行される)
    $ kill -l
     1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL
     5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE
    ....略
    $ /bin/kill -l
    HUP INT QUIT ILL ABRT FPE KILL SEGV PIPE ALRM TERM USR1 USR2 CHLD CONT
    STOP TSTP TTIN TTOU TRAP IOT BUS SYS STKFLT URG IO POLL CLD XCPU XFSZ
    VTALRM PROF PWR WINCH UNUSED
        (kill と /bin/kill で表示がちょっと違う)
    $ file /bin/kill
    /bin/kill: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked, stripped
         (/bin/kill は ELF 実行形式)
    $ ldd /bin/kill       (どの様なライブラリを用いるか)
            libc.so.6 => /lib/libc.so.6 (0x40019000)
            /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
    $ strings /bin/kill   (/bin/kill に含まれる文字列)
    /lib/ld-linux.so.2
    __gmon_start__
    libc.so.6
    textdomain
    ...略
    
  5. ファイル比較,検索: cmp, comm, diff, diff3, find, grep(文字列検索), wc(文字数,行数)

    例: /usr/include 以下のファイルで va_list を含んでいる部分を探す.

    $ grep -r -I -H -n -E 'va_list' /usr/include
    /usr/include/form.h:99:  void* (*makearg)(va_list *);                 /* make fieldtype arg   */
    /usr/include/form.h:280:                    void * (* const make_arg)(va_list *),
    /usr/include/cursesf.h:772:  static void* makearg(va_list*);
    ...略
    

    例:

    $ ls ./public_html/tips*html | wc
         76      76    3286
        (tips*html ページは 76 ある)
    
    $ find ./public_html -name '*html' -mtime -3 -type f | sort
        (最近3日以内に編集した WWW ページは? (名前順に整理)
    ./public_html/index.html
    ./public_html/tips-free-memory.html
    ./public_html/tips-inspect.html
    ...略
    

メモリの状態

free, vmstat 30, /proc/meminfo, メモリ−が足りない? メモリーリーク?.

ディスクの状態

ディスクの使用状況, df(ディスクの使用量), df -i(i-node の使用量), du, mount, /proc/mounts, /proc/partitions, vmstat 30, NFSの場合はネットワ−クも調べる.

ネットワ−ク

ネットワ−クの状態, ネットワ−クの速度,

ネットワ−クの設定/動作確認

ネットワ−クの基本設定などを確認(Linux版), /proc/net/dev, netstat, ifconfig(ネットワ−クインタ−フェ−スの状態), route(ル−ティング), /proc/net/route, /etc/nsswitch.conf, /etc/inetd.conf, /etc/hosts.allow, /etc/hosts.deny, /etc/services, telnet(デ−モンの動作の確認とか),

Ether アドレス

arp, /proc/net/arp,

ネットワ−クのパケット到達

ping(パケットの到達性), traceroute(到達経路),

ネットワ−クの統計

netstat(負荷,ソケットの利用状況, netstat -i eth0 等), /proc/net/dev(負荷,衝突,パケット異常), ifconfig

パケット/プロトコルの分析

tcpdump(パケットの分析), iptraf(トラッフイック分析), ethereal(トラッフイック分析), netwatch(トラッフイック分析) netstat(負荷,ソケットの利用状況, netstat -i eth0 等),

ネットワ−クの名前参照

nslookup(名前引き), dig(ドメイン情報),dig -x SOA .... とか, host -v ホスト名, host -l -v -t any ドメイン名, hostname(名前引き), domainname(名前引き), whois, JPNIC , JPNIC whois, arin whois またはここから他の主要whoisサイトへ,

NFS

rpcinfo -p ホスト名(NFS/NIS), nfsstat(NFS), showmount(NFS/NIS), /etc/exports

mail

  1. mailq, mailstats, mailstat, /var/spool/mqueue の辺り, sendmail.cf, aliasesファイル, SPAM への対処, SPAM 抗議への対処
  2. 動作試験: BIGLOBE 自動お返事システム(testmail@bcs.biglobe.ne.jp), relay test(abuse.net), nanet - 第三者中継調査,
  3. mewls(mewのscanner)

HTML の確認

Markup Varidation Service(validator.w3.org)

Markup Validator install.html

セキュリティ問題の報告相談先/情報源

Debian GNU/Linux セキュリティ− Debian を使っていなくても参考になる.

JPCERT/CC(コンピュータ緊急対応センター) 民間の非営利団体で相談は無料. セキュリティ−に関する技術メモの公開, セキュリティ−問題の報告受けつけ/助言. コンピュータセキュリティインシデントを受けて問題を抱えている方と, その問題を技術面で支援できる方とが, それぞれの立場を離れて問題解決へ向けて協調して活動を行えるよう調整する (コーディネーションする) 役割を担う場所(FAQ より).

IPA(情報処理振興事業協会)

プロセス, CPU の動作

ps, pstree, top, vmstat 30, uptime, tload, xload, xosview, xcpustate, procmeter, /proc (プロセス番号), /proc/cpuinfo, /proc/loadavg, /proc/version, /proc/uptime, rup, ruptime, (未確認だが... cpuburn, gkrellm, lm_sensors, memtest), 処理が遅い?

プロセス番号と実行ファイル(コマンド名)の対応を調べたい.

  1. プロセスとファイルの関連をしらべる
  2. ps aux
  3. top
  4. fuser (実行ファイル)
  5. ls -l /proc/(番号)/exe
  6. ls -lv /proc/[0-9]*/exe

ハ−ド, カ−ネル

  1. モジュ−ル: lsmod, /proc/mdules, modprobe, /etc/modules.conf
  2. OS/CPU: arch, uname, /proc/version
  3. ハード検出: /proc/dma, /proc/interrupts, /proc/ioports, /proc/devices,
  4. ハード検出(PCI): /proc/pci, lspci -v , lspci -n
  5. ハード検出(SCSI): /proc/scsi/scsi, cdrecord -scanbus, scsi_info (SCSI 機器の認識状況)
  6. PNP: lspnp
  7. その他: xapm(APMの状態), lsdev(device,DMA,IRQの一覧),/proc, procinfo

プリンタ

lpq(プリンタキュ−の状態), lpc status(デーモンとキューの状態), プリンタキュ−(/var/spool/lpd とか)

時刻

  1. 現在の時刻: date(時刻), cal(カレンダ−), hwclock -r(ハードウェア・クロック), netdate, rdate, ntpdate
  2. NTP の動作確認: ntptime, ntpq -p, ntpdc -p, ntpdc -c sysinfo, ntpdc -c kerninfo.
  3. 定時の実行: crontab -l(cron の状況),

キ−ボ−ド/コンソ−ル

dumpkeys(キ−ボ−ド変換テ−ブル), getkeycodes(カ−ネルのスキャンコ−ド/キ−コ−ド), kbd_mode(キ−ボ−ドモ−ド), xmodmap(キ−コ−ド), /usr/X11R6/lib/X11/XKeysymDB, stty(端末ラインの設定)

X

xset, xdpyinfo(Xの状態), xev(Xのイベントを調べる), xprop(windowの情報), xwininfo(windowの情報), listres(リソ−ス),/usr/X11R6/lib/X11/app-defaults/ の辺り, showrgb(色名), /usr/X11R6/lib/X11/rgb.txt(色名), x11perf(表示性能), x11perfcomp(表示性能), fslsfonts(list fonts served by X font server), xlsatoms(list interned atoms defined on server), xlsclients(list client applications running on a display), xlsfonts(server font list displayer for X),

ログイン情報

finger, w, users, who, who am i(私は誰?), whoami, logname, last(loginの記録), id(uid,gid 等), rusers

その他

env(環境変数), set(シェル変数), cannastat(Canna),
Kodama's home / tips.