LABO/linuxシステムまわりで使うコマンド

一行メモ



mallocでエラーにならずにOOM killされる事への対策?

/etc/sysctl.conf に次を追加し、オーバーコミットしないようにして(100と2)、もし OOMになったときは カーネルパニック(1)を起こさせ、リブート(30秒後)させる。OOMだからといっていつもカーネルパニックが 生じる訳ではないようだ。

vm.overcommit_ratio=100
vm.overcommit_memory=2
vm.panic_on_oom = 1
kernel.panic = 30

この設定ファイルは sysctl -p で読み込まれる。 又は、sysctl -w vm.overcommit_ratio=100 などとして設定してもよい(リブートでもとに戻る)。

/etc/crontab に次の行を書いておくと、起動時(@reboot)に、右のコマンドが実行される。

@reboot root (dmesg | head -10; tail -50 /var/log/messages) | mail -s"`hostname` rebooted" root

iperf3 通信帯域速度測定

サーバーを起動
compute-0-1$ iperf3 -s [-p ポート番号,default 5201]
サーバーホストを指定して、クライアントを起動。測定される
compute-0-2$ iperf3 -c compute-0-1 [-p ポート番号,default 5201] [-t 秒数,default 10]
短時間の測定を異なるマシン間でする場合
$ for node in 2 3 4 ; do echo "== compute-0-$node -> 0-1 =="; ssh compute-0-$node iperf3 -c compute-0-1; done

netstat

netstat    #オプション無しは ESTBLISHEDのみを表示する
   #-a をつけると、接続まち、接続まちでないもの、すべてのソケットを表示
   #-t をつけるとTCPを表示
   #-u をつけるとUDPを表示
   #-n 名前解決をしない

netstat -tanp  # TCP LISTENをみる
netstat -r    #ルーティングテーブルを表示する
   #-n 名前解決をしない
netstat -i    #インターフェース毎の統計情報を表示
              #(パケット衝突数など含まれる)

メモリの状態を調べる

free -m       #メモリの空きをみる。-mはMB単位の指定。
vmstat [sec]  #スワップin,outの回数をみる。secがあると秒毎に出力される。

ハードディスクの状態を調べる

sar

ブロックデバイスのアクティビティを表示(デバイス毎にデバイス名で、今日の11時
から11時半までの範囲で)
sar -dp -s 11:00:00 -e 11:30:00
  #-dpの代わりに -bを指定すると全デバイスの合計が表示される。
  #過去のアクティビティを表示するには -f /var/log/sa/sa11 などとファイルを指定する。
  #ファイルは1日毎にローテンションされているので、どのファイルを指定すればよいかは
  #ファイルスタンプで判断する。
  #表示で見るべきところ
  #  rd_sec/s: 1秒当たりの、読込み量(単位 block, 1 block = 1 sector = 512 byte)
  #  wr_sec/s: 1秒当たりの、書込み量(単位 block, 1 block = 1 sector = 512 byte)
  #  %util:    デバイスの帯域利用率(RAIDアレイでは最大値は100%を超え)
  #            RAIDのときは物理デバイスの帯域利用率を見るとよい
  #他
  #  tps:     1秒当たりの、I/Oリクエスト回数
  #  avgrq-sz: 発行されたリクエスト(デバイスに対する操作)の平均サイズ(単位block)
  #  avgqu-sz: 発行されたリクエストの平均キュー長(単位はblockか?)
  #  await:    リクエストの平均処理時間(待ち時間も含、単位はmsec)
  #  svctm:    (現在、無意味な値)

関連)
sar -dp  5 | grep md124\\\|DEV    #数字を引数にするとN秒毎にアクティビティを表示
                                  #grepで適当にデバイスを選択表示

ブロックデバイス以外に、以下も表示できる。
  -q ロードアベレージを表示
  -W スワップin/outされたページ数を表示

HDD WD20EFPXのI/Oスペック
  内部転送速度は最大で 180MB/sとのことである。alliumで実際にファイルを読込ませて
調べてみると、最大約148MB/sであった。書き込みは最大58MB/s程度のようだ。
(c.f. SATA 6Gbpsだと 750MB/s)
dd if=/dev/zero of=afile.hoge bs=1000000000 count=50 #50Gのファイル作成
この状態で
sar -dp  5
をすると書き込み性能を知れる。
c.f. cygwinの端末で
$ powershell -Command "& {Get-Counter  -Counter '\LogicalDisk(_Total)\Disk Read Bytes/sec' -Continuous}"
をすると似たことが出来るようだ(これは読み込み性能)。
nfsstat [-s|-c]    #NFSの統計情報を表示。-s/-cはサーバ/クライアントのみ
blkid    #HDDのUUIDなどを表示
findmnt    #マウントのツリーを出力

lsof

sudo lsof -i    #プロセスが使用しているポートを表示する
sudo lsof -i:80  #80ポートを使用しているプログラムを表示する

/etc/shadowファイルの編集

vipw -s

sysctl

$ sysctl -a  #カーネルパラメータを表示する
$ sysctl net.ipv4.icmp_echo_ignore_broadcasts  #個々の表示

$ sysctl -a | grep 'net.ipv4.icmp_echo_ignore_broadcasts\|net.ipv4.icmp_ignore_bogus_error_responses\|¥
net.ipv4.tcp_syncookies\|net.ipv4.conf.all.accept_redirects'

$ sysctl -a | grep 'net.ipv[46].\(ip_forward\|conf.all.accept_source_route\)'

$ sysctl -a  2> /dev/null | grep 'net.ipv[46].\(icmp_echo_ignore_broadcasts\|¥
icmp_ignore_bogus_error_responses\|tcp_syncookies\|conf.all.accept_redirects\)'

/etc/sysctl.conf に起動時に読み込まれる設定ファイルあり。起動後は sysctl -p で再読込みができるらしい。
個々の書き換えは、see man

iptables

$ sudo iptables [-t filter] -L [チェイン名] -v -n

   -t filter はデフォルト。他に natなど

   -v 設定全体を省略しない
   -n IPやフラグなどを文字にしない

   -L 設定内容の表示。チェイン名を指定できる

# CentOSの場合
/etc/sysconfig/iptablesに設定されるテーブル・チェインの記載があるらしい。
# Ubuntuの場合
どこ?

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS