matsuyuta's blog

matsuyutaのブログ。

network

コマンド 説明
netstat -an
netstat -a -n
すべてのコネクション情報を,所有しているプロセスのプログラム名やコンポーネント名の一覧と一緒に表示
netstat -r ルーティング情報を表示する
netstat -e
netstat -s
IPプロトコル/イーサネットの統計情報を表示する

表示項目の意味:http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230845/

コマンド 説明
/sbin/ifconfig -a ネットワークインターフェースの設定を表示
Link encap    接続方式を表示。イーサネットの場合は「Ethernet」、
                   ループバック・デバイスの場合は「Local Loopback」と
                   表示される
HWaddr	MACアドレス
inet addr	IPアドレスIPv6を利用している場合は「inet6 addr」項目に
            表示される
Bcast	ブロード・キャスト・アドレス
Mask	ネットマスク
UP	インタフェースの状況。UPが表示されている場合はインタフェースが
    起動していることを表す
BROADCAST	インタフェースの状況。BROADCASTが表示されている場合は
            ブロードキャストを利用していることを表す
RUNNING	インタフェースの状況。RUNNINGが表示されている場合はインタフェースが
        準備完了であることを表す
MULTICAST	インタフェースの状況。MULTICASTが表示されている場合は
            マルチキャストが有効であることを表す
MTU	MTU値
Metric	メトリック値
RX	受信パケット数。packetsは受信した総パケット数、errorsは
    エラーになったパケット数、droppedは破棄したパケット数、
    overrunsは処理が間に合わなかったパケット数、
    frameは指定フレーム・サイズを超過したパケット数を表す
TX	送信パケット数。packetsは送信した総パケット数、errorsは
    エラーになったパケット数、droppedは破棄したパケット数、
    overrunsは処理が間に合わなかったパケット数、
    carrierはキャリア数、collisionsは衝突検知回数、
    txqueuelenは送信キューのサイズを表す
RX bytes	受信バイト数
TX bytes	送信バイト数
Interrupt	ネットワーク・カードが利用している割り込み番号
Base address	ネットワーク・カードが利用しているI/Oアドレス
arp -a
arp -an
ホスト名
IPアドレス
tcpdump -i any -n port 80 and icmp and not vrrp ネットワーク上に流れるパケットをモニタリングする
-i any 
 監視するLANインタフェースを指定
-n 
 IPアドレスやポート番号などを名前に変換せずに表示
port 80 and icmp and not vrrp
 80番ポートとicmpプロトコル(vrrpプロトコルは除く)をみる
mtr -n google.co.jp 通信経路の継続表示
nslookup
>set type=MX
>example.com
メールエクスチェンジを調べる
wget http://www.example.com/file.tar.gz
wget -r ftp://ftp.example.com/dir/
wget -A .png http://www.example.com/index.html
Webサーバーからファイルをダウンロード
FTPサーバーのdirディレクトリ以下全てを取得する
png画像のみを入手する
dmesg ブート時のメッセージの内容を確認。ネットワークインターフェイスの確認など。

参考:原因調査用Linuxコマンド http://blog.father.gedow.net/2012/10/23/linux-command-for-trouble/

ruby開発環境

rvm、gem、rails、rake、rackなど、rubyの開発環境を構築にあたって大変だったことを以下に。

rubyの開発環境としては、

・バージョン管理にrvmを使用(cf .  rbenv)

・パッケージ管理にgemを使用

railsのパッケージ管理にbundlerを使用[rails3]

 ※自分の環境での使用方法であり、実際には機能がかぶることもあり、使い方はいろいろある。

■rvmのコマンド (cf. rbenv)

コマンド 説明
rvm list インストール済みのrubyリスト
rvm list known インストール可能なrubyの一覧
rvm install [rubyリスト名] [rubyリスト名]のインストール
rvm use [rubyリスト名] [rubyリスト名]への切り替え
rvm use system rvmからではなく、元から入っていたruby環境への切り替え
rvm gemset list 現在のバージョンで使われているset一覧

■Gemコマンド

コマンド 説明
gem help [コマンド名] コマンドのヘルプ
gem env
gem -v
バージョン確認
gem search [パッケージ]
gem search -r [パッケージ]
パッケージ検索
パッケージのバージョン検索
gem install [パッケージ] パッケージのインストール
gem list インストールしたパッケージの表示
gem update
gem uninstall
インストールされているパッケージのアップデート
アンインストール

Rails rails(Webアプリケーション開発のためのフレームワークrailsコマンドについては、簡単なもののみとする。詳しくは、自分で調べてください。

手順 コマンド 説明
1 rails new [アプリ名] [アプリ名]というrailsアプリをつくる
2 cd [アプリ名] ディレクトリへ移動
3 Gemfileに必要なパッケージを記述 ※すでに記述されているパッケージは、アプリを作った時点でインストールされている。
4 bundle install Gemfileの中身をインストール。「Gemfile.lock」はインストールされたGemパッケージの名前とバージョンが記録されたもの
その他コマンド
bundle exec list
rails s
rails c

参考: http://railsdoc.com/rails

 

Bundler Rails3で公式に採用されているアプリケーションの依存関係管理ツール。bundlerを利用する利点は、gemパッケージ同士は密に依存している為、更新によるバージョン変更に伴い、アプリケーションが動作しなくなるリスクを軽減。

 

Rake Rubyによるビルドツール。Rakefileを置いたディレクトリで、rakeコマンドを実行すると、Rakeファイルに定義された処理内容(タスク)が実行される。その他にも使い方いろいろ。

rake --help

rake --tasks

 

Rack Rackは、Rubyにおけるサーバとアプリケーション/フレームワーク間のインターフェースの役割を果たすライブラリ Rack アプリケーション(Passenger、Thin、Mongrelunicornなど)向けの HTTP サーバと連携するための、インターフェースみたいな?※詳しくは自分で調べてください。

rackup --help

 

python開発環境

pythonバージョンごとに管理するため、以下の環境を前提としている。

・必要なpythonX.Xのインストール

・pipのインストール

・virtualenv + virtualenvwrapper のインストール(pip installコマンド)

※上記以外の管理方法をする場合、以下は、妥当ではない場合がある。

pythonの確認コマンド

コマンド 説明
python -V pythonバージョン確認
which python pythonパスの確認
echo $PATH 環境変数PATHの確認

■pip コマンド

コマンド 説明
pip --version pipバージョン確認
pip freeze pipでインストールされているパッケージ確認
pip search [パッケージ名] pipでインストールできるパッケージの検索
pip install [パッケージ名] pip でパッケージをインストール。

■virtualenv コマンド

コマンド 説明
virtualenv --help virtualenv のヘルプ
mkvirtualenv --python=/usr/bin/python2.7 [仮想環境名] python2.7の仮想環境を作る。cf.virtualenvコマンドでの作成
deactivate 仮想環境からの脱出。
workon 現在ある仮想環境の確認
workon [仮想環境名] 指定した仮想環境の実行。
rmvirtualenv [仮想環境名] 仮想環境の削除。

system管理 part2

grep,sort,uniq,awk,sed,head,tail,wcなどのコマンドは他のコマンドと組み合わせて、便利に。

 

コマンド[説明]
ps -ef| grep [ProcessName]| awk '{print $2;}'| sort -nr| head -10
プロセス一覧を表示する
ps -ef
プロセス名 ProcessName を持つ行を取り出す
| grep ProcessName
各行の2列目(プロセスID)を取り出す
| awk '{print $2;}'
数値の大きい順に並べ替える
| sort -nr
先頭から10行を取り出す
| head -10
ps aux | awk 'NR > 1 {vsz += $5; rss += $6} END {printf("VSZ total:%10f GB\nRSS total:%10f GB\n", vsz/1048576, rss/1048576)}'
ps aux | awk '{print $4"\t"$11}' | sort | uniq -c | awk '{print $2" "$1" "$3}' | sort -nr | less
ps aux | awk '{printf("%s\t%s\n",$3 $0)}'| head -10

参考:http://uguisu.skr.jp/Windows/sort_uniq.html

 

 

system管理 part1

■プロセス管理

コマンド 説明
top
(画面が切り替わった後、hでヘルプ)
PID    プロセスID
USER	プロセスを実行しているユーザー名
PRI	優先度
NI	ナイス値
SIZE	仮想イメージの大きさ
RSS	使用中の物理メモリー量
SHARE	使用中の共有メモリー量
STAT	プロセスのステータス。Rは実行可能、
        Sは停止、Dは割り込み不可の停止、
        Tは停止またはトレース中、
        Zはゾンビ・プロセス、
        Wはスワップ・アウトしたプロセス、
        Nはナイス値が正であることを表す
LIB	ライブラリが使用するページ・サイズ
%CPU	CPU占有率
%MEM	メモリー占有率
TIME	プロセス開始からの実行時間
COMMAND	タスクのコマンド名
ps aux
■主なフィールド名
USER プロセスの実行ユーザ名
UID プロセスの実行ユーザID
PID プロセスのID
PPID 親プロセスのID
PRI プロセスの優先度。値が高い方が優先度が高い
NI  プロセスのnice値。値が低い方が優先度が高い
VSZ プロセスが使用中の仮想メモリRSS プロセスが使用中の物理メモリ量
WCHANプロセスのカーネル関数名
STAT プロセスの動作状態 ※別表に記載
STARTプロセスが開始された日時
TTY プロセス制御端末の種類と番号
TIME プロセスの総実行時間
CMD プロセスのコマンド名

■プロセスの状態(STAT項目の説明)
R実行中のプロセス
S一時停止中のプロセス
D割り込み不可能な一時停止中のプロセス
T停止又はトレース中のプロセス
Zゾンビプロセス
W実メモリ上にない、スワップアウトしているプロセス
Nnice値が"正"になっているプロセス
vmstat 1 10
1秒間隔で10回表示する
[procs]
r : 実行待ち状態のプロセスの数
b : 割り込み不可能なスリープ状態にあるプロセスの数
[memory]
swpd : 現在の仮想メモリの量
free : 現在空いている実メモリの量
buff : バッファに使われている実メモリの量
cache : キャッシュとして使われている実メモリの量
inact : アクティブになっていない実メモリの量(-a)
active: アクティブな実メモリの量(-a)
[swap]
si : ディスクからスワップインしているメモリ量(KB/s)
so : ディスクにスワップしているメモリ量(KB/s)
[io]
bi : ブロックデバイスから受け取ったブロック数 (ブロック/s)
bo : ブロックデバイスに送られたブロック数 (ブロック/s)
[system]
in : 一秒あたりの割り込み回数
cs : 一秒あたりのコンテキストスイッチ回数
[cpu]
us : 実行に使用したユーザ時間
sy : カーネルコードの実行に使用したシステム時間
id : アイドル時間
wa : IO の待ち時間

■ディスク管理

コマンド 説明
df -h
df -i
df -Th | sort
容量の確認
残りファイル数(inode数)の確認
du -sh *
du -hs [ディレクトリパス]
du -h --max-depth=1 [ディレクトリパス]
容量を圧迫しているディレクトリ・ファイルを調査する

job 管理

job管理

コマンド 説明
Ctrl+Z
bg
ジョブをバックグランドの実行に切り替える。
jobs -l 実行中のジョブを表示
fg [ジョブ番号]
fg %[ジョブ番号]
ジョブをフォアグランドの実行に切り替える
[コマンド] & コマンドをバックグラウンドで実行。

tmux

■tmuxの起動

コマンド 説明
tmux 新規tmuxの起動
tmux ls デタッチされているtmux一覧
tmux a セッション名を指定しない場合は最後に作成されたセッションがアタッチされる。
tmux a -t [number] 指定したセッションへのアタッチ

■tmuxコマンド

[prefix]キーのデフォルトは「[Ctrl]キー+ b」。

コマンド 説明
[prefix] + c 新しいウィンドウを作成
[prefix] + d カレントクライアントをデタッチ
[prefix] + ? キーバインドを表示
[prefix] + = バッファをリストから対話的に選択
[prefix] + [ コピーモードに入る[space]キーで始点を指定[enter]キーで終点を決定。
[prefix] + ] ペーストバッファの内容をカレントウィンドウに挿入

■ウィンドウ関連コマンド

コマンド 説明
[prefix] + c 新しいウィンドウを作成
[prefix] + n 次のウィンドウへ移動
[prefix] + p 前のウィンドウへ移動
[prefix] + , ウィンドウ名を変更
[prefix] + w ウィンドウ一覧表示/移動
[prefix] + l 最後に操作したウィンドウへ移動

■ペイン関連コマンド

コマンド 説明
[prefix] + "
[prefix] + %
[prefix] + 2
[prefix] + 3
ペイン分割
[prefix] + ! ペイン分割解除
[prefix] + { ペインを入れ替え