Edit
すぐに忘れるコマンド達

ファイルを他のサーバーにコピーする。

# cd /usr/local/apache2/htdocs
# scp index.php root@192.168.0.105:/usr/local/pache2/htdocs/

ディレクトリを削除

# rm -r -f target.file   (-r でディレクトリもOKに、-f ですべてYesで自動的に答える)

起動時のメッセージ表示(カーネルのリングバッファの内容を表示する)

# dmesg

logなどでファイルの最後(最新logなど)を確認したいとき(数字は表示行数)

# tail -n 20 logfilename

マッチしなかった行を表示(grep -v オプションが有効)

# cat logfilename | grep -v 192.168.0

現在のフォルダ位置

# pwd

ファイルのリンク(file-A を file-B としてアクセスできるリンクコピーを作成)

# ln -s /usr/local/mypg/bin/file-A /bin/file-B

rootでも削除できないようにファイルの属性を変更

# chattr +i file_name                           <-( -R で再帰 )

Edit
bashの便利なコマンド

CentOS では初期のシェルがバッシュで起動するようになっています。そこで、Bashの環境変数を設定する方法を説明します。Bashでは以下の順番でユーザー環境設定ファイルが読み込まれます。

  1. /etc/profile
  2. /.bash_profile

  3. /.bash_login ( .bash_profile が存在しないとき)

  4. /.profile ( .bash_profile, .bash_login とも存在しないとき)
    ※〜は、ログイン時の初期フォルダ位置です。しかしながら、この bash_profileファイルはログイン時のみに読み込まれ、ログイン後に bash シェルを新たに起動した場合は読み込まれない。その場合は,~/.bashrc ファイルが読み込まれる。ちなみに、ログアウト時には~/.bash_logoutが読み込まれ実行される。

    通常、/etc/profileをいじることはまずないので、以下の2つのファイルを修正します。

    # emacs ./.bash_profile
    echo Profile start                                                         <- message表示
    alias  ls='ls -al -F --color=auto'                             <- アイリアス設定
    # emacs ./.bashrc
    PS1="\033[31m[\u@\h\033[31m:\w] \\$ \033[0m"           <- コマンドプロンプトの設定

 ¥u … ユーザ名
 ¥h … ホスト名
 ¥W … カレントディレクトリ
 ¥$ … $という文字(画面上に $ を表示させるという意味)だけじゃなくて、一般ユーザであれば『 $ 』、root ユーザ(UID が 0) であれば『 # 』を表示させます。

動作すべてクリア太字水色
¥[033[xxm のxxの数字013031323334353637

Edit
Shellの条件分岐の引数

if [ -n $TEST ]; then などのif文の引数の説明

-n $TEST変数TESTの長さが0より大きいとき真
$TEST変数TESTがNULLでないとき真
-z $TEST変数TESTの長さが0のとき真
$TEST = $TEST22つの文字列が等しいとき真
$TEST != $TEST22つの文字列が等しくないとき真

Edit
history

シェルに入力した過去のコマンドに連番をつけて、再呼び出しの為の一覧表を作成できます。

# history               <- 過去のコマンド一覧
# !830                  <- コマンドに振られた番号のコマンドを再実行

Edit
screen 複数の仮想コンソールを管理する

http://www.dekaino.net/screen/

Edit
GREPでサブディレクトリも検索

下記のコマンドは、カレントディレクトリから TARGETSTRINGを検索します。

# find ./ -name \*.c -exec grep TARGETSTRING {} \;

または

# find ./ -type f -print | xargs grep TARGETSTRING /dev/null

パスのコマンドの位置を確認するには、以下のコマンドが便利

# which <command-name>

Edit
GREPで文字列の除外もできる。

ps 関数などで、自分自身が入ってしまうときなどに重宝する。

<mysql が起動しているか?>

# ps ax | grep -v grep | grep mysqld_safe

Edit
リダイレクトについて

Edit
キーボードショートカット

CTRL-Zプロセスを中断しbashに戻る。jobsコマンドで現在の中断プロセスを確認。bg <processID> でjobsコマンドで得たプロセスをバッググランドで再開する。

Edit
SH commandを作成するときに注意すること

ファイルで新しいコマンドを作成するとき

# emacs new-com.py
  #!/usr/local/bin/python           <- このコマンドの右にスペースを入れること
   ----
   ----
   ----

Edit
便利なエイリアス

# alias lm='ls -lt -r'            <- 日付の古い順(一番下が一番新しい)
# alias e='emacs'
# alias pl='ps ax | grep'

Edit
フォルダ一括処理

#!/bin/sh
for file in `ls -1`
do
    <command> $file
done

Edit
フォルダだけリスト表示

$ ls -F | grep / | sed -e 's/\///g'

Edit
フォルダやファイルサイズ 0 のものだけ一括削除

$ find . -maxdepth 0 -size 0 -ok rm {} \;          <- 確認付き
$ find . -maxdepth 0 -empty | xargs rm             <- 確認なし

ディレクトリが空

$ find . -maxdepth 1 -empty | xargs rm -r

Edit
expr コマンドの説明

足し算をする
  $ expr 1 + 5 
  6
環境変数$val1が10以上であるかを確かめる
  $ expr $val1 >= 10 
  0   ← 偽を返しているので$val1は10より小さい
拡張子を除く処理
  $ expr "test.txt" : "\(.*\)\."
  test
「expr 文字列 : 正規表現」書式の正規表現中で「\(\)」が使われていた場合は、括弧で囲まれた範囲が結果として出力される。
「.」任意の文字列「*」直前の0回以上の繰り返し「\.」ピリオド文字のため、ピリオドの直前までの文字列を取り出す。

※拡張子を除く処理は拡張子がわかっている場合は、

  $ basename test.txt .txt

でも取得できる。

Edit
ファイル名の文字コードを一括変更

SJISのファイル名になってしまっているものを、一括してUTF-8に変更する。

# convmv -r -f sjis -t utf8 * --notest

Edit
Diskの容量を確認

# du -sm ./* | sort -n
# df -h

フォルダのサイズを調べたいとき

# du -s -h

Edit
シェルスクリプトのデバッグモード

# sh -x <scriptfile>

Edit
スクリプト内でよく利用される表記

if [ -x hogehoge.exe ]; then
   echo Execute OK
else
   echo No execute
fi

このファイル名に指定できる特別なオプションには以下の種類がある。

-b指定したファイルがブロックデバイスファイルなら真
-c指定したファイルがキャラクタデバイスファイルなら真
-d指定したファイルがディレクトリなら真
-f指定したファイルが通常ファイルなら真
-L指定したファイルがシンボリックリンクなら真
-p指定したファイルが名前付きパイプなら真
-S指定したファイルがソケットなら真である
-g指定したファイルにSGIDがセットされていれば真
-k指定したファイルにスティッキービットがセットされていれば真
-r指定したファイルが読み取り可能なら真
-u指定したファイルにSUIDがセットされていれば真
-w指定したファイルが書き込み可能なら真
-x指定したファイルが実行可能なら真
-e指定したファイルが存在すれば真
-s指定したファイルのファイルサイズが0より大きければ真

文字列のチェック

-n 文字列文字列の長さが0より大きければ真
-z 文字列文字列の長さが0であれば真
文字列1 = 文字列22つの文字列が等しければ真
文字列1 != 文字列22つの文字列が等しくなければ真


Bash特別変数説明
$nnはNumeric、$0=シェルスクリプト名、$1=第1引数、$2=第2引数、第10引数以降は${10}、${11}となる。
$#与えられた引数の数
$@$0以外の全ての引数("$@"のようにダブルクォーテーションで囲んだ場合"$1" "$2" …"のように個別に展開される。)
$*$0以外の全ての引数("$@"のようにダブルクォーテーションで囲んだ場合"$1 $2 …"のように展開される。)
$?最後に実行したコマンドの終了ステータス
$!最後に実行したバックグラウンドコマンドのPID
$$シェルのPID
$-現在のオプションフラグ


http://cyberam.dip.jp/linux_command/shellscript/shellscript_main.html#2

Edit
Vi command

ESCコマンドモードに移行
iインサートモードに移行
oカーソル行の後に1行あけてからインサートモード
ddカーソル行を1行削除
yyカーソル行をコピー
pカーソル行の下に貼り付け
d$カーソル位置から右を行末まで削除
nGファイルの先頭からn行目の左端へ移動
/<文字列>文字列を検索
?<文字列>文字列を逆検索
n順方向へ再検索
N逆方向へ再検索
コマンドモード
:q終了
:q!保存せずに強制終了
:wqセーブして終了

Edit
時間あわせ

# date --set="30/08/09" --set="05:44:44"
# hwclock --systohc
# clock                                            <- BIOS時間表示
# date                                             <- Linux時間表示

Edit
特定の時間以前のファイルをフォルダを移動

50日以前のlogファイルをoldフォルダに移動させる。

# find . -name "*.log" -mtime +50 -exec mv {} old \;

60分以前のlogファイルをoldフォルダに移動させる。

# find . -name "*.log" -mmin +60 -exec mv {} old \;

Edit
サーバーステータス情報の表示

# vmstat 10

見方

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r  b   swpd   free   buff  cache     si   so    bi    bo   in   cs  us sy  id wa st
1  0    104 1659000  42708 2031720    0    0     0     0  990   107  0  0 100  0  0
グループ項目意味
procsr実行待ちのプロセス数。CPUの数以上ならCPU負荷が高い状態
b割り込み不可のスリープ状態にあるプロセス数
wスワップアウトされている、実行可能なプロセス数
memoryswpd仮想メモリの容量(Kbytes)
free空きメモリの容量(Kbytes)
buffバッファに使用されているメモリの容量(Kbytes)
cacheキャッシュに使用されているメモリの容量(Kbytes)
swapsiディスクからスワップインされているメモリの容量(Kbytes/s)
soディスクにスワップアウトされているメモリの容量(Kbytes/s)
iobiブロックデバイスに送られたブロック(blocks/s)
boブロックデバイスから受け取ったブロック(blocks/s)
systemin1秒当たりの割り込みの回数(クロックの割り込みも含む)
cs1秒当たりのコンテキストスイッチの回数
cpuusCPU総時間当たりのユーザー時間の割合(%)
syCPU総時間当たりのシステム時間の割合(%)
idCPU総時間当たりのアイドル時間の割合(%)

Edit
ファイルの圧縮・解凍

Edit
tar.gz方式

圧縮

# tar CZVF archivefile.tar.gz /sourceDirectory/

解凍

# tar XZVF archivefile.tar.gz

内容表示

# tar TZVF archivefile.tar.gz

Edit
Bz2方式

圧縮

# bzip2 archivefile.bz2

解凍

# bzip2 -d archivefile.bz2

Edit
7za 方式

圧縮

# 7za a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=1024m xxxx.7z xxxxx

解凍

# 7za x xxxx.7z

中身と圧縮情報の表示

# 7za l xxxx.7z

※xxxxは、ファイル or フォルダ名

オプション説明
オプション引数名選択可能値概要
-t7z,bzip2,cab,gzip,lzma,tar,xz,Z,zip圧縮フォーマット(Type)
-m0=lzma,lzma2,BZip2,Deflate,Deflate64,7zAES圧縮方式(Codec, Method)
-mx=0-9圧縮レベル0...最低 9...最高、初期値5
-mfb=8-256ワードサイズ。大きいほど圧縮比があがる。初期値64
-md=1-65536m辞書サイズ、別名ソリッドブロックサイズ。初期値64m。数字の後ろのmは、Megabytesの略
-ms=on,offソリッド圧縮の on/off 初期値 on。offにすると大概圧縮比が悪くなる
-mqs拡張子でソートする。メモリが小さく辞書サイズが大きく取れない場合に有効。以前の古い7zではこちらが初期値だった。指定無しの場合はファイル名でソートになる

Edit
リンクを確認

# ldd /usr/lib/libsocket.so.1     <- 引数はコマンドでもOK

Edit
特定のプロセスのポート確認

# lsof -i:80

Edit
ネットワーク関係のコマンド

Edit
ncコマンド

nc(netcat)コマンドはtcpまたはudpのポートと標準入出力を繋げるコマンドである。通信のsshのトンネルなどの場合に利用することが多い。( 例: nc <option> サーバ名 ポート番号 )

-eコマンドを実行(コンパイル時の指定が必要)
-lリッスンモード
-uUDPモードにて通信を行う。指定しないとtcpモード
-n名前解決を行わない
-sソースポートを指定
-zスキャンのみを行いデータを送らない

ポートの稼働チェック(ポートスキャン)

# nc -z -v target-server 53      <- ポートの範囲指定は 53-55 のように指定

通信データを標準出力に出力する。

# nc -l -p 53

Edit
mknodコマンド

mknodはネットワーク専用のコマンドではないが、tun/tapなどのインターフェイスを作成するときに利用するのでここでも紹介する。
tunデバイスの作成

# mkdir /dev/net (まだ /dev/net が存在しない場合)
# mknod /dev/net/tun c 10 200                        <- ここでmknod
# chmod 0700 /dev/net/tun

mknodの引数の説明

記号デバイスタイプの種類(第二引数)
bブロック・デバイス
cキャラクター・デバイス

Edit
depmodとmodprobe

上記のmknodで利用されていたdepmodとmodprobeの2つのコマンドを説明する。基本的にはデバイスをコントロールするためのコマンドであるが、大きな違いがある。
depmod
このdepmodは-aオプションを指定することで、/etc/modules.confの設定に従い、デバイスの依存関係を整頓する機能がある。(モジュールの依存関係をファイル'/lib/modules'に作成して解決する。また依存関係ファイルをユーザーが直接意識の必要はないと思われる)

# /sbin/depmod -a

modprobe
modprobeは内部的にはinsmodのラッパーであり、モジュールをカーネルにロードするための機能である。但しこのmodprobe単体でモジュール間の依存関係を解決するわけではないため、上記depmodとの併用利用となる。上記でも記述していたように、tun を直接手動で登録する場合などに利用される。(modprobeの設定ファイルは、/etc/modprobe.conf)
通常は標準的なモジュールはカーネルコンパイル時に導入されているので、tunのような一般的なモジュールは、modprobe tun とするだけでカーネルにロードされ、利用できるようになる。余談だがLinuxはロードされたモジュールが一定時間利用されないと、メモリから自動的に解放される)

# modprobe -c                    <- 定義され利用できるモジュールの一覧(巨大)
# modprobe tun                   <- tun モジュールをカーネルにロード

Edit
route

ローカルのルート情報(IPの転送を決定する情報)を変更するためのコマンド。例えばVPNなどで一部のローカルセグメントは、違うゲートウェイを利用するような場合。

# route add -net 192.168.100.0 netmask 255.255.255.0 dev tun0

削除は同じ内容でコマンドだけ変更する。

# route delete -net 192.168.100.0 netmask 255.255.255.0 dev tun0

Routeコマンドのオプション説明

Edit
iptables

カーネルレベルのプログラムであり、デバイスの入出力パケットをコントロールする。詳細はセキュリティ項目を参照の事。

現状のiptables の設定状況の表示コマンド

# iptables --list --line-numbers -v -x

Edit
mail関係 コマンド

Edit
mailの送信

# mail -

Edit
受信したmailの内容確認

# mail [-s SUBJECT] [-c CC] [-b BCC] [ADDRESS] 

※本文はインタラクティブで入力

<一覧表示>

& h

<個別表示>

& xx                                  <- xxはメール番号

<削除>

& 100                               <- 100番のメール削除
& 100-200                        <- 100~200番のメール削除

<終了>

& q

Edit
LINUXの総本山

Linux Foundationのページ
SDK のインストール

# wget http://ftp.linux-foundation.org/pub/lsb/bundles/released-3.2.0/app-testkit/lsb-atk-manager-3.2.0-8.ia32.tar.gz
# tar zxvf lsb-atk-manager-3.2.0-8.ia32.tar.gz
# cd lsb-app-testkit
# ./install.sh

Edit
chkconfigについて

Red Hat系のディストリビューションでは、chkconfig というサービス登録のコマンドがあり、とても便利ですが、yumではなくソースコードから入れた場合、どこに設定ファイルを入れてよいか、わからない場合が多いと思います。chkconfig は以下の2つのファイルを参照します。

<例:named >
# /etc/rc.d/init.d/named              <- serviceコマンドからのシェルスクリプト
# /etc/sysconfig/named                <- 基本的なconfig設定

上記の2つのファイルを設定すると、chkconfig --list コマンドにそのサービスが登録され、サービスのランレベル等の設定が可能になります。

# chkconfig --list | grep named
# chkconfig --add named
# chkconfig named on

Edit
ルーターのグローバルIPを取得したいとき。

http://seo-sem.org/IPadder.phpこのアドレスにアクセスすると、自分のIPが見れる。

Edit
GNU binutilsの導入

GNUのバイナリユーティリティである、binutilsには、いろいろな便利な機能が含まれている。

Edit
GNU binutilsのインストール

# wget ftp://ftp.gnu.org/gnu/binutils/binutils-2.22.tar.gz
# tar zxvf binutils-2.22.tar.gz
# cd binutils-2.22
# ./configure
# make
# make install

Edit
UnixコマンドのErrorコード表

Error定数名Errorコードエラーの詳細
EPERM1Not super-user 送信者が struct ucred(ユーザ資格証明構造体) に不正な信任状を渡した。
ENOENT2No such file or directory 指定したファイルやディレクトリは存在しない
ESRCH3No such process そのようなプロセスは無い
EINTR4interrupted system call 関数呼び出しが割り込まれた
EIO5I/O error 入出力エラー
ENXIO6No such device or address そのようなデバイスまたはアドレスは無い
E2BIG7Arg list too long 引数リストが長すぎる
ENOEXEC8Exec format error Exec 形式のエラー
EBADF9Bad file number ファイルディスクリプタが不正
ECHILD10No children 子プロセスがない
EAGAIN11Resource temporarily unavailable リソースが一時的に利用不可
ENOMEM12Not enough core 十分なメモリが足りない
EACCES13Permission denied 権限がない
EFAULT14Bad address ユーザーメモリアドレスが不正
ENOTBLK15Block device required ブロックデバイスが必要
EBUSY16Mount device busy リソースが使用中
EEXIST17File exists ファイルが存在する
EXDEV18Cross-device link 不適切なリンク
ENODEV19No such device そのようなデバイスは無い
ENOTDIR20Not a directory ディレクトリではない
EISDIR21Is a directory ディレクトリである
EINVAL22Invalid argument 渡した引数が不正。よくある原因は、渡したアドレスの sun_type フィールドに AF_UNIX を設定しなかった、行おうとした操作に対してソケットの状態が有効ではなかったなど
ENFILE23File table overflow システム全体でオープンされているファイルが多すぎる
EMFILE24Too many open files オープンされているファイルが多すぎる
ENOTTY25Inappropriate ioctl for device I/O 制御操作が適切でない
ETXTBSY26Text file busy テキストファイルが使用中
EFBIG27File too large ファイルが大きすぎる
ENOSPC28No space left on device デバイスに空き領域が無い
ESPIPE29Illegal seek 無効なシーク
EROFS30Read only file system ファイルシステムがリードオンリー
EMLINK31Too many links リンクが多すぎる
EPIPE32Broken pipe リモートソケットがストリームソケット上でクローズされた。可能な場合は SIGPIPE も同時に送られる。これを避けるには MSG_NOSIGNAL フラグを sendmsg (2) や recvmsg (2) に渡す
EDOM33Math arg out of domain of func ドメインエラー
ERANGE34Math result not representable 結果が大きすぎる
ENOMSG35No message of desired type 指定された型のメッセージは存在しない
EIDRM36Identifier removed 識別子が除去された
ECHRNG37Channel number out of range チャネル番号が範囲を超えた
EL2NSYNC38Level 2 not synchronized レベル 2 で同期がとれていない
EL3HLT39Level 3 halted レベル 3 で終了した
EL3RST40Level 3 reset レベル 3 でリセットした
ELNRNG41Link number out of range リンク番号が範囲外
EUNATCH42Protocol driver not attached プロトコルドライバが接続されていない
ENOCSI43No CSI structure available CSI 構造体がない
EL2HLT44Level 2 halted レベル 2 で終了した
EDEADLK45Deadlock condition. リソースがデッドロックにより拒否された
ENOLCK46No record locks available. 利用できるロックが無い
ECANCELED47Operation canceled 操作がキャンセルされた
ENOTSUP48Operation not supported サポートされていない
EDQUOT49Disc quota exceeded ディスククオータを超えた
EBADE50invalid exchange 無効な交換
EBADR51invalid request descriptor 無効なリクエストディスクリプタ
EXFULL52exchange full 変換テーブルが一杯である
ENOANO53no anode 陰極がない
EBADRQC54invalid request code 無効なリクエストコード
EBADSLT55invalid slot 無効なスロット
EDEADLOCK56file locking deadlock error ファイルロックにおけるデッドロックエラー
EBFONT57bad font file fmt フォントファイル形式が不正
EOWNERDEAD58process died with the lock ロックを保持したままプロセスが終了した
ENOTRECOVERABLE59lock is not recoverable ロックは回復不能(ロックの保持中に処理に失敗した前の所有者によって回復不能にされた)
ENOSTR60Device not a stream ストリーム型でないデバイス
ENODATA61no data (for no delay io) ストリームの読み出しキューの先頭に読み出し可能なメッセージがない
ETIME62timer expired 時間切れ
ENOSR63out of streams resources 指定されたストリーム・リソースが存在しない
ENONET64Machine is not on the network マシンがネットワーク上にない
ENOPKG65Package not installed パッケージがインストールされていない
EREMOTE66The object is remote オブジェクトがリモートにある
ENOLINK67the link has been severed リンクが切れている
EADV68advertise error Advertise エラー
ESRMNT69srmount error Srmount エラー
ECOMM70Communication error on send 送信時の通信エラー
EPROTO71Protocol error プロトコルエラー
ELOCKUNMAPPED72locked lock was unmapped ロックは前の所有者によってアンマップされた
ENOTACTIVE73Facility is not active その資源は有効ではない
EMULTIHOP74multihop attempted マルチホップ (multihop) を試みた
EBADMSG77trying to read unreadable message メッセージが不正
ENAMETOOLONG78path name is too long ファイル名が長すぎる
EOVERFLOW79value too large to be stored in data type 指定されたデータ型に格納するには値が大き過ぎる
ENOTUNIQ80given log. name not unique 名前がネットワークで一意ではない
EBADFD81f.d. invalid for this operation ファイルディスクリプタが不正な状態
EREMCHG82Remote address changed リモートアドレスが変わった
ELIBACC83Can't access a needed shared lib. 必要な共有ライブラリにアクセスできない
ELIBBAD84Accessing a corrupted shared lib. 壊れた共有ライブラリにアクセスしようとした
ELIBSCN85.lib section in a.out corrupted. a.out のライブラリセクションが壊れている
ELIBMAX86Attempting to link in too many libs. リンクしようとした共有ライブラリが多過ぎる
ELIBEXEC87Attempting to exec a shared library. 共有ライブラリを直接実行できなかった
EILSEQ88Illegal byte sequence. 不正なバイト列
ENOSYS89Unsupported file system operation 関数が実装されていない
ELOOP90Symbolic link loop シンボリック・リンクが多すぎる
ERESTART91Restartable system call システムコールが中断され再スタートが必要
ESTRPIPE92if pipe/FIFO, don't sleep in stream head ストリーム・パイプ・エラー
ENOTEMPTY93directory not empty ディレクトリが空ではない
EUSERS94Too many users (for UFS) ユーザ数が多過ぎる
ENOTSOCK95Socket operation on non-socket ソケットではない
EDESTADDRREQ96Destination address required 宛先アドレスが必要
EMSGSIZE97Message too long メッセージバッファの長さが適切でない
EPROTOTYPE98Protocol wrong type for socket ソケットに指定できないプロトコル・タイプ
ENOPROTOOPT99Protocol not available 指定されたプロトコルが利用できない
EPROTONOSUPPORT120Protocol not supported 渡されたプロトコルが PF_UNIX でない
ESOCKTNOSUPPORT121Socket type not supported 未知のソケットタイプ。EPROTOTYPE リモートソケットとローカルソケットのタイプが一致していなかった (SOCK_DGRAM と SOCK_STREAM)
EOPNOTSUPP122Operation not supported on socket ストリーム指向でないソケットに対してストリーム操作が呼び出された。または帯域外データオプションを用いようとした
EPFNOSUPPORT123Protocol family not supported サポートされていないプロトコルファミリー
EAFNOSUPPORT124Address family not supported by アドレス・ファミリーがサポートされていない
EADDRINUSE125Address already in use 選択したソケットが既に用いられていた、またはファイルシステムのソケットオブジェクトが既に存在していた
EADDRNOTAVAIL126Can't assign requested address アドレスが使用できない
ENETDOWN127Network is down ネットワークが不通
ENETUNREACH128Network is unreachable ネットワークが到達不能
ENETRESET129Network dropped connection because 接続がネットワーク側から中止された
ECONNABORTED130Software caused connection abort 接続が中止された
ECONNRESET131Connection reset by peer リモートソケットが予期しないかたちでクローズ(Reset)された
ENOBUFS132No buffer space available 使用可能なバッファ空間がない
EISCONN133Socket is already connected 既に接続されているソケットに対して connect (2) を呼んだ、または指定したターゲットアドレスが既に接続済みのソケットだった
ENOTCONN134Socket is not connected ソケット操作にターゲットアドレスが必要だが、このソケットは接続されていない
ESHUTDOWN143Can't send after socket shutdown 通信相手がシャットダウンされて送信できない
ETOOMANYREFS144Too many references: can't splice 参照が多すぎる
ETIMEDOUT145Connection timed out 操作はタイムアウトした
ECONNREFUSED146Connection refused listen 状態にないソケットオブジェクトに対して connect (2) を呼んだ。リモートソケットが存在していなかった、ファイル名がソケットではなかった、などのときに起こる
EHOSTDOWN147Host is down ホストがダウンしている
EHOSTUNREACH148No route to host ホストに到達不能である
EWOULDBLOCKEAGAINEAGAIN と同義 リソースが一時的に利用不可
EALREADY149operation already in progress 操作は既に処理中
EINPROGRESS150operation now in progress 操作は実行中
ESTALE151Stale NFS file handle ファイルハンドルが古い状態になっている

Edit
PHPなどのモジュール上で、Rootコマンドの実行を行う場合。

LinuxなどのUnixではroot権限がないと実行できないコマンドやアクセスできないファイルなどがあるが、apache上で動いているPHPなどから、アクセスしたい場合がある。そのような場合には以下の手順で許可を出す。

# visudo
  apache ALL=(ALL) NOPASSWD: /bin/echo,/bin/chmod       <- 追加
  #Defaults    requiretty                               <- コメントアウト

visudoは、sudoコマンドの設定を行うツールであり、上記の2行は上から、apacheユーザーでsudoを利用する場合には、passwdを聞かずに実行でき、また/bin/echoと/bin/chmodコマンドだけroot権限を持つ。2行目はtty(端末)からログインしていなくても、sudoを実行できる。という意味になる。

Edit
トラブルシューティング

Edit
Linuxのルートパスワードを忘れたとき

http://itpro.nikkeibp.co.jp/article/COLUMN/20061030/252224/

Edit
Argument list too longが出て、コマンドが実行できない。

例えば、mv *.jpg dest を行い多場合。

# find src -name "*.jpg" -exec mv {} dest \;

で代用できる。(この方法は遅い、xargsを使う事で早く行うことも可能だが、バージョン違いや、OSXなどでは、GNUの CoreUtilsなどのインストールが必要になるので、ここでは紹介しない)