Linux - finding of system file



 ◆ ファイルの配置

 Linuxでは、ファイルシステムのレイアウトは
FHSFilesystem 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」であるファイルとディレクトリを検索
 # find /tmp -user 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ファイルの高速検索
 # locate "*.txt"



 updatedbコマンドは、検索用データベースを更新するコマンドです。locateコマンドが使用する検索用の
 データベースが作成された後、ファイルなどが更新された場合、それらのファイルなどを検索することは
 できません。そこで、updatedbコマンドで検索用データベースを定期的に更新する必要があります。なお
 updatedbコマンドはcronで定期的に更新されるようになっています。
/etc/updatedb.confで確認できます。

 # updatedb



 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 はシェルで使用する用語




Linux 技術入門

Copyright(C) 2002-2024 ネットワークエンジニアとして All Rights Reserved