LoginSignup
3
3

More than 3 years have passed since last update.

Linux基礎(ファイルシステムの構成&ファイル検索)

Posted at

ファイルの配置について

Linuxでは、ファイルシステムのレイアウトはFHS(Filesystem Hierarchy Standard)という既定に基づき標準化されている。これにより、CentOSやDebianなど異なるディストリビューションでも主要となるディレクトリ構成は統一されている。

FHSでは、ディレクトリ階層の最上位にルートファイルシステム(/)に含める必要があるディレクトリや各ディレクトリの役割、ファイルの配置場所を定義している。ルートファイルシステムに含める必要のあるディレクトリは/bin, /sbin, /etc, /dev, /libの5つ。

ディレクトリ名 説明
/bin 一般ユーザーでも実行可能な基本的なコマンドが配置
例|cat, chmod, cp, echo, kill, ls, move, pwd, rm, su, unmount
/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などのリムーバルデバイスがマウントされるディレクトリ
/srv システムで提供されるサイト特有のデータ(WWWなど)が配置
/tmp 一時的に使用する作業ファイルが配置。全てのユーザーが読み書き可能
/var ログファイル、メールやプリンタのスプールなど頻繁nに更新されるファイルが配置。
/usr 一般ユーザーが共有するコマンド、ライブラリ、ドキュメントなどが配置される
  • var配下の主なディレクトリ
ディレクトリ名 説明
/var/cache manコマンドで使用される一時的なキャッシュファイルが配置
/var/lock アプリケーションの排他制御で使用されるロックファイルが配置
/var/log システムのログファイル(messages)、メールログ(maillog)などが配置
/var/run
/var/spool 送信待ちメール(var/spool/mqueue)、印刷待ちのデータ(/var/spol/lpd)などが配置
  • usr配下の主なディレクトリ
ディレクトリ名 説明
/usr/bin 一般ユーザー、rootユーザーが使用する基本コマンドが配置
/usr/sbin システム管理コマンドが配置
/usr/lib プログラムに必要なライブラリが配置
/usr/local 個人作成のコマンドなど、ローカルシステム管理で必要なプログラム、ドキュメントが配置
/usr/share x86などのアーキテクチャに依存しないファイル。manコマンドで使用するマニュアルなどが配置
/usr/src Linuxのカーネルソースなどのソースコードが配置

ファイル検索

findコマンド

findコマンドは指定したディレクトリ以下のファイルやディレクトリを検索するコマンド。検索条件として正規表現を使用したり、検索結果のファイルやディレクトリに対して指定したコマンドなどが実行できる。また、ファイル名だけでなくアクセス権、ファイルサイズ、更新日等を条件にして検索することができる。

find [検索ディレクトリ] [検索条件] [アクション]

検索条件 説明
-name 文字列 文字列を指定して検索
-atime 日時 最終アクセス日で検索
-mtime 日時 最終更新日で検索
-pem アクセス権 アクセス権(8進数またはパーミッション表記)で検索
-size サイズ ブロック単位のファイルサイズで検索
-type タイプ ファイルタイプで検索(ファイル:f, ディレクトリ:d, シンボリックリンク:l)
-user ユーザ名 ファイルの所有者で検索
-print 検索結果を表示(省略可能)
-exec コマンド¥; 検索結果のファイルに対して、コマンドを実行
-ok コマンド¥; 検索結果のファイルに対して、コマンドを実行(確認あり)
# /etcディレクトリにある拡張子が「.conf」というファイルを検索
$ find /etc -name "*.conf"

# カレントディレクトリ以下から、9日以内に更新されたファイルを検索
$ find . -type f -mtime -10

# カレントディレクトリ以下から、61日以前にアクセスされたファイルを検索し、削除
$ find . -type f -atime +60 -exec rm {} ¥;

locateコマンド

locateコマンドは、あらかじめ作成した検索用データベースに基づいてファイルやディレクトリを検索するコマンド。ファイル名などにワイルドカードを指定して検索可能でfindコマンドより高速に検索できる。

locate [ファイル名/ディレクトリ名]

# 拡張子がtxtのファイルを検索
$ locate ".txt"

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

whichコマンド

whichコマンドは、指定したコマンドが格納されているディレクトリを検索し絶対パスを表示するコマンド。
注意点としては、whichコマンドは環境変数PATHに設定さえていないディレクトリは検索対象にならないため、一般ユーザは/sbin/ディレクトリなどに配置されているシステム管理用コマンドは検索できない。

# passwdコマンドがどこに格納されているかを確認
$ which passwd

whereisコマンド

whereisコマンドは、指定したコマンドのバイナリファイル、ソースファイル、マニュアルが格納されている場所を絶対パスで表示するコマンド。
whereis [オプション] コマンド

オプション 説明
-b バイナリファイルのみ検索して表示
-m マニュアルファイルのみ検索して表示
-s ソースファイルのみ検索して表示
$ whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz

type

typeコマンドは、指定したコマンドが通常の実行ファイルか、シェルの仕組みコマンドか、エイリアスなのか、コマンドの種別を表示するコマンド。

$ type passwd
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3