Linux 実用コマンド −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− # hkconfig コマンドでデーモンの起動を制御する #---------------------------------------------------------------------------------------------- /etc/rc.d/init.d 以下にデーモンの起動/停止スクリプトを置いてchkconfig コマンドによりデーモンの管理を行うことができます。 ● 設定方法 chkconfig でデーモン管理をするにはデーモンの起動/停止スクリプトの上部コメント部に下記の記述を加えます。 # chkconfig: 345 90 10 # description: this daemon is hogehoge 1行目は、chkconfig 管理するランレベル 起動優先順位 終了優先順位。 この場合はランレベル3,4,5においてS90 となり、それ以外のランレベルではK10 となっている。 2行目のdescription でデーモンの説明を載せておく。 この設定をした後にコマンドライン上で # chkconfig --add hogehoge とすると/etc/rc.d/rc.X/ の下に上記デーモンの起動/停止スクリプトにて指示した規約に基づいてシンボリックリンクが作成されます。 ● 確認方法 # chkconfig --list hogehoge 上記コマンドにて各ランレベルごとの起動状態を確認できます。 # arp コマンドでARP プロトコルにてMAC アドレスを問合せる #---------------------------------------------------------------------------------------------- ARP(アープと読みます) とはIP アドレスからMAC アドレスを求めるためのプロトコルで、アドレス解決プロトコルとも呼ばれています。 ARP というプロトコルを使用すると、IP アドレスこれこれのコンピューターの人のMAC アドレスを教えてください〜と質問できるわけです。 ● 確認方法 # arp -a 上記コマンドにて、実行したコンピューターに記憶してあるarp 対応テーブルを参照することができる。 ● ARP 実行 # ping 192.168.0.1 PING コマンドは指定したコンピューターの生存を確認するコマンドであるが、同時にARP プロトコルによりMAC アドレスも調査している。この後にarp -a コマンドを実行するとPING したdolphin がテーブルに追加されているわけである。 # free コマンドにてサーバーのメモリ利用状況を確認 #---------------------------------------------------------------------------------------------- free コマンドでは、サーバーのメモリ利用状況を確認することができます。free の表示単位は通常 KByte です。Linuxでは、各プロセスにメモリを割り振った残りをバッファ(buffer) とキャッシュ(cache) に割り当てるので、通常、自由に使えるメモリ容量は、free + buffers + cached になる。 ● 確認方法 # free [Option] Option : -m ・・・ MByte 単位で表示する ● 出力の表記 > 出力例 total used free shared buffers cached Mem: 1008 992 15 0 73 763 -/+ buffers/cache: 155 852 Swap: 1019 1 1018 > 各行の説明 Mem 行 ・・・ 実メモリの情報を表示する行 -/+ buffers/cache 行 ・・・ 実際のメモリ利用状況を表示する行 Swap 行 ・・・ ディスク上のスワップメモリの情報を表示する行 > 各列の説明 Mem - total ・・・ サーバーに実装されている物理メモリの総容量 Mem - used ・・・ OS がアプリケーションのために割り当てている容量 未使用のディスクバッファとディスクキャッシュも含まれる Mem - free ・・・ 瞬間の使い回し程度に使うための空き容量 ディスクバッファとディスクキャッシュは含まれない -/+ buffers/cache - used ・・・ 実際アプリケーションが使用している容量 -/+ buffers/cache - free ・・・ 未使用のディスクバッファとディスクキャッシュを含んだ、事 実上の空き容量 > -/+ buffers/cache について Linuxでは、各プロセスにメモリを割り振った残りをバッファ(buffer) とキャッシュ(cache) に利用してディスク入出力の負荷を減らしています。free コマンド等で見える残りメモリ?(free) は 1M 程度の瞬間的な使いまわしに対処する程度しか残っていないのはそのためです。 > どのプロセスでメモリを消費しているか? free コマンドでは全体のメモリーの使用状況しか分からないので、個々のプロセスのメモリーの使用状況を調べるにはtop やps を用います。 # top コマンドにてCPU、メモリの利用状況を確認 #---------------------------------------------------------------------------------------------- top コマンドでは利用中のサーバーリソースが確認できます。top コマンド実行後、下記のコマンドを入力することで利用状況順に並び替えして表示します。 "M"(大文字) ・・・ 消費メモリの順に表示 "P"(大文字) ・・・ CPU 使用率の高い順に表示 参考:http://wiki.fdiary.net/tokushima/?hatena-tech ● 出力の表記 > 出力例1 Cpu(s): 0.3%us, 0.3%sy, 0.0%ni, 90.4%id, 0.0%wa, 0.0%hi, 8.9%si, 0.0%st us はCPU が実行している割合であり、大きければ大きい程CPU 負荷が高いと判断できます wa はI/O 待ちの割合であり、大きければ大きい程CPU が待機状態で、休止中であると判断できます id はCPU が使われていない割合であり、大きければ大きい程CPU が使われていないと判断できます > 出力例2 Mem: 254672k total, 228656k used, 26016k free, 36076k buffers Swap: 265032k total, 28168k used, 236864k free, 108052k cached total ・・・ サーバーに実装されている物理メモリの総容量 used ・・・ プロセスで使用されるメモリ+ディスクバッファ分+ディスクキャッシュ分を含んだ値 この値はfree コマンドにおける Mem - used と同様の値です 通常、プロセスのメモリ使用量が増えてくると、キャッシュにメモリが使えなくなるのでディスクI/O が増加します。 プロセスの実メモリ使用量は「RES」、実メモリ+スワップ使用量は「VIRT」項目で確認できます。プロセスのメモリ利用量が増えるたびに「RES」が増えていき、実メモリを過渡に利用し、ディスクキャッシュをも使い果たすと「VIRT」の値が上昇します。 > 出力例3 load average: 0.01, 1.20, 28.23 load average とは、実行したいけれども何らかの待ち(CPUの割り当て待ちやディスクI/O待ちなど) で実行できず、待たされているプロセス(スレッド)の数を表す。 左から順番に、1分間、5分間、15分間それぞれのスレッド数の平均です。 ときおり、搭載CPU(の合計コア) 数より低ければ大丈夫、つまりCPU が1個のシステムなら1.00 以下、4つまであれば4.00 以下までOKとされる場合があるが、鵜呑みにしてはいけない。 なお、load average はあくまで「システム全体」の負荷を表す指標。決してCPU やメモリ、ディスクI/Oなど特定のハードウェアの状況を表す数字ではない。load average からはCPU の能力が足りない、メモリが足りないといった断定ができないことに注意してほしい。 # vmstat コマンドにてプロセス、メモリ、ページング状況を確認 #---------------------------------------------------------------------------------------------- vmstat コマンドでは、短期間におけるメモリやプロセスの利用状況を表示します。主に、ディスクスワップやディスクIO の頻度を調査する際に利用します。 ● 確認方法 # vmstat [更新時間(秒)] vmstat は短時間当りのメモリ、プロセス、IO の頻度を計測するものなので、[更新時間] を指定し、特定間隔ごとの計測値を評価します。 ● 出力の表記 > 出力例 procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 0 0 8020 22784 54064 96716 0 0 0 1 1 0 0 0 100 0 0 0 8020 22504 54148 96632 0 0 0 12 1011 62 0 0 100 0 > 各列の説明 procs - b ・・・ 入出力待ちなどで動作が停滞したプロセス数 memory - swpd ・・・ ディスクスワップの利用容量(free の Swap - used と同様の結果) swap - si ・・・ ディスクスワップのページインの回数 swap - so ・・・ ディスクスワップのページアウトの回数 io - bi ・・・ ブロックディバイスから受け取ったブロック数 io - bo ・・・ ブロックディバイスかに送ったブロック数 swqp のページイン、ページアウトや、ディスクIO の書き込み、読み込みが多ければメモリ不足と判断できます。 # netstat コマンドにて開いているポートを確認 #---------------------------------------------------------------------------------------------- netstat コマンドで実行したコンピューターの状態を確認することができます。 ● 確認方法 # netstat [Option] Option: -n ・・・ DNS 逆引きにてホスト名、サービス名を取得しない -l ・・・ ステータスが待機中であるソケットのみを表示する (-l オプションをつけない場合はステータスが接続済みのソケットを表示する) -a ・・・ 全ての情報を表示する ● 出力の表記 Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN Proto ・・・ 通信に使用しているプロトコル Recv-Q ・・・ ? Send-Q ・・・ ? Local Address ・・・ 待機しているIP:Port IP が0.0.0.0 の場合は全てのコネクションを受け入れる Port は受け付けているポート番号 Foreign Address ・・・ 接続している元IP:元Port State ・・・ サービス状態 LISTEN (ソケット状態が待機中) ESTABLISHED (ソケット状態が接続中) SYN_SENT (ソケットを確立しようとしている) # du コマンドでディスク使用状況を把握する #---------------------------------------------------------------------------------------------- du コマンドでは、指示されたディレクトリの使用サイズを表示します。 要求1: test ディレクトリ以下のサブディレクトリの使用状況を知りたい コマンド: du -h -s ./test/* 要求2: test ディレクトリ全体の使用状況をしりたい コマンド: du -h -s ./test なお、出力の容量単位・表示を変更するにはそれ相当のオプションを付ける必要があります。 -h :容量を適当な単位で区切って表示する -b : バイト単位で表示する -k :Kバイト単位で表示する -m :Mバイト単位で表示する -s :ディレクトリ以下全てのファイルの状態を表示する # df コマンドでファイルシステムの使用状況を把握する #---------------------------------------------------------------------------------------------- df コマンドでは、ファイルシステムの利用内容を表示します。 要求1: 標準ファイルシステムhba1 の使用状況を表示する コマンド: df -h / なお、オプションは [du] コマンドど同様です。 # tcpdump コマンドで流れているパケットを閲覧する #---------------------------------------------------------------------------------------------- tcpdump コマンドはネットワークに流れているパケットを閲覧するツールです。条件をしていすることで特定のホスト宛て、特定のプロトコルのパケットだけを閲覧することができます。 実行例 ) 下記コマンドはeth0 インターフェイスに流れるパケットのうち、192.168.100.1 ホストの向かうパケットまたは192.168.100.1 ホストからのパケットをIP アドレス、ポート番号無変換で出力する # tcpdump -e -n -i eth0 host 192.168.100.1 -e : 各出力行にsource イーサネットアドレス、dest イーサネットアドレス、パケットサイズを表示する -n : IP アドレスだけでなくポート番号なども数字のまま出力する -i : tcpdump を実行したホストの特定のイーサカードについてのみ調査する # crontab コマンドで*分おきにプログラムを実行する #---------------------------------------------------------------------------------------------- ● 書き方 */15 * * * * [PG Name] ”PG Name”を15 分おきに実行する 5,10,15 * * * * [PG Name] ”PG Name”を毎時5,10,15 分に実行する # 特定のポートを利用しているプログラムを調査する #---------------------------------------------------------------------------------------------- # fuser -vn tcp [ポート番号]