◆ ファイルの配置
Linuxでは、ファイルシステムのレイアウトはFHS(Filesystem Hierarchy Standard)という既定に基き
標準化されています。これにより、CentOSやDebianなど異なるディストリビューションでも主要となる
ディレクトリ構成は統一されています。ここでは、FHSのディレクトリ構造とファイルの検索方法を解説。
FHSではディレクトリ階層の最上位のルートファイルシステム( / )に含める必要があるディレクトリや
各ディレクトリの役割、ファイルの配置場所を定義しています。ルートファイルシステムに含める必要の
あるディレクトリは /bin、/sbin、/etc、/dev、/libの5つ。以下に主なディレクトリを紹介していきます。
◆ ルートファイルシステムに含める必要のあるディレクトリ
ディレクトリ名 |
説明 |
/bin |
一般ユーザーでも実行可能な基本的なコマンドが配置。
例 : cat、chmod、cp、echo、kill、ls、more、pwd、rm、su、umount
|
/sbin |
rootユーザーのみが実行可能なシステム管理コマンドが配置。
例 : shutdown、fdisk、halt、ifconfig、init、mkfs、reboot、route
|
/etc |
システムやコマンドの各種設定ファイル、スクリプトファイルが配置。
|
/dev |
ハードディスク、CD-ROM、DVD-ROMなどのデバイスファイルが配置。
|
/lib |
共有ライブラリやカーネルモジュールが配置。
/bin、/sbinにあるコマンドが必要とするライブラリがここに配置される。
|
◆ ルートファイルシステム以下の主なディレクトリ
ディレクトリ名 |
説明 |
/mnt |
CD-ROMなどのファイルシステムの一時的なマウントポイント。最近は /media が使われる。 |
/opt |
追加パッケージや追加プログラムがインストールされるディレクトリ。 |
/proc |
カーネル内部の情報にアクセスするための仮想ファイルシステム。 |
/root |
rootユーザー専用のディレクトリ。FHSではオプション扱い。 |
/boot |
システム起動に必要なカーネルイメージや設定ファイルが配置される。起動時に影響を
受けないようにルートファイルシステムとは別にして、ディスクの先頭付近に配置される場合もある。 |
/media |
CD-ROMやUSBなどのリムーバルデバイスがマウントされるディレクトリ。 |
/home |
一般ユーザーごとのホームディレクトリ。FHSではオプション扱い。 |
/srv |
システムで提供されるサイト特有のデータ ( WWWなど ) が配置。 |
/tmp |
一時的に使用する作業用ファイルが配置。全てのユーザーが読み書き可能。 |
/var |
ログファイル、メールやプリンタのスプールなど頻繁に更新されるファイルが配置。 |
/usr |
一般ユーザーが共用するコマンド、ライブラリ、ドキュメントなどが配置される。 |
◆ /var以下の主なディレクトリ
ディレクトリ名 |
説明 |
/var/cache |
manコマンドで使用される一時的なキャッシュファイルが配置 |
/var/lock |
アプリケーションの排他制御で使用されるロックファイルが配置 |
/var/log |
システムのログファイル(messages)、メールログ(maillog)などが配置 |
/var/run |
システム状態を示すファイルが配置 |
/var/spool |
送信待ちメール(/var/spool/mqueue)、印刷待ちのデータ(/var/spool/lpd)などが配置 |
◆ /usr以下の主なディレクトリ
ディレクトリ名 |
説明 |
/usr/bin |
一般ユーザー、rootユーザーが使用する基本コマンドが配置。 |
/usr/sbin |
システム管理コマンドが配置。 |
/usr/lib |
プログラムに必要な共有ライブラリが配置。 |
/usr/local |
個人作成のコマンドなど、ローカルシステム管理で必要なプログラム、ドキュメントが配置。 |
/usr/share |
x86などのアーキテクチャに依存しないファイル、manコマンドで使用するマニュアルなどが配置。 |
/usr/src |
Linuxのカーネルソースなどのソースコードが配置。 |
◆ ファイルの検索
findコマンドは指定したディレクトリ以下のファイルやディレクトリを検索するコマンド。検索条件として
正規表現を使用したり、検索結果のファイルやディレクトリに対して指定したコマンドなどが実行できます。
また、ファイル名だけでなくアクセス権、ファイルサイズ、更新日等を条件にして検索することもできます。
◆ 構文 : find [ 検索ディレクトリ ] [ 検索条件 ] [ アクション ]
検索条件 |
説明 |
-name 文字列 |
文字列を指定して検索 |
-atime 日時 |
最終アクセス日で検索 |
-mtime 日時 |
最終更新日で検索 |
-perm アクセス権 |
アクセス権 ( 8進数またはパーミッション表記 ) で検索 |
-size サイズ |
ブロック単位のファイルサイズで検索 |
-type タイプ |
ファイルタイプで検索 ( ファイルは f 、ディレクトリは d 、シンボリックリンクは l ) |
-user ユーザ名 |
ファイルの所有者で検索 |
-print |
検索結果を表示 ( 省略可能 ) |
-exec コマンド\; |
検索結果のファイルに対して、コマンドを実行 |
-ok コマンド\; |
検索結果のファイルに対して、コマンドを実行(確認がある) |
◆ 実行例 : /etcディレクトリにある拡張子が「.conf」というファイルを検索
# find /etc -name "*.conf" |
◆ 実行例 : /tmpディレクトリ以下から、所有者が「mike」であるファイルとディレクトリを検索
◆ 実行例 : /tmpディレクトリ以下から、所有者が「mike」であるファイルだけを検索
# find /tmp -type f -user mike |
◆ 実行例 : カレントディレクトリ以下から、9日以内に更新されたファイルを検索
# find . -type f -mtime -10 |
◆ 実行例 : カレントディレクトリ以下から、61日以前にアクセスされたファイルを検索し、削除
# find . -type f -atime +60 -exec rm {} \; |
locateコマンドは、あらかじめ作成した検索用データベースに基づいてファイルやディレクトリを検索する
コマンド。ファイル名などにワイルドカードを指定して検索可能でfindコマンドよりも高速に検索できます。
◆ 構文 : locate ファイル名/ディレクトリ名
◆ 実行例 : .txtファイルの高速検索
updatedbコマンドは、検索用データベースを更新するコマンドです。locateコマンドが使用する検索用の
データベースが作成された後、ファイルなどが更新された場合、それらのファイルなどを検索することは
できません。そこで、updatedbコマンドで検索用データベースを定期的に更新する必要があります。なお
updatedbコマンドはcronで定期的に更新されるようになっています。/etc/updatedb.confで確認できます。
whichコマンドは、指定したコマンドが格納されているディレクトリを検索し絶対パスを表示するコマンド。
例えば、passwdコマンドの絶対パスを表示しています。注意点としては、whichコマンドは環境変数PATH
に設定されていないディレクトリは検索対象にならないため、一般ユーザは/sbin/ディレクトリなどに配置
されているシステム管理用コマンドは検索できません。例えば、一般ユーザーはifconfigコマンドを検索不可。
# which passwd
/usr/bin/passwd
|
whereisコマンドは、指定したコマンドのバイナリファイル、ソースファイル、マニュアルが格納されて
いる場所を絶対パスで表示するコマンドです。
◆ 構文 : whereis [ オプション ] コマンド
オプション |
説明 |
-b |
バイナリファイルのみ検索して表示 |
-m |
マニュアルファイルのみ検索して表示 |
-s |
ソースファイルのみ検索して表示 |
◆ 実行例 : ifconfigのバイナリファイル、マニュアルファイルの絶対パスを表示
# whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
|
typeコマンドは、指定したコマンドが通常の実行ファイルか、シェルの組み込みコマンドか、エイリアス
なのか、コマンドの種別を表示するコマンドです。
# type passwd
passwd is /usr/bin/passwd ← passwd コマンドのパス
# type if
if is a shell keyword ← if はシェルで使用する用語
|
|