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 |
Bundler Rails3で公式に採用されているアプリケーションの依存関係管理ツール。bundlerを利用する利点は、gemパッケージ同士は密に依存している為、更新によるバージョン変更に伴い、アプリケーションが動作しなくなるリスクを軽減。
Rake Rubyによるビルドツール。Rakefileを置いたディレクトリで、rakeコマンドを実行すると、Rakeファイルに定義された処理内容(タスク)が実行される。その他にも使い方いろいろ。
rake --help
rake --tasks
Rack Rackは、Rubyにおけるサーバとアプリケーション/フレームワーク間のインターフェースの役割を果たすライブラリ Rack アプリケーション(Passenger、Thin、Mongrel 、unicornなど)向けの 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] + { | ペインを入れ替え |