i ノード
Linux/Unix オペレーティング システムのすべてのファイルには、inode を持たない Solaris ZFS を除いて、関連付けられた inode があります。 inode は基本的に、本の付録と非常によく似た働きをします。すべての i ノードには、ファイルに関する以下の情報があります。
1.所有者2.パーミッション
3.サイズ
4.最終アクセス時刻
5.作成時間
6.グループID
7.ファイル コンテンツに関連付けられたデータ ブロックへのポインタ
注:ただし、inode はファイル名を提供しません。
ファイルの種類
どの UNIX オペレーティング システムにも、基本的に 5 種類のファイルがあります。
1.レギュラー
2.ディレクトリ
3.シンボリック リンク (ハード リンクとソフト リンク)
4.デバイスファイル(キャラクタースペシャル、ブロックスペシャルデバイス)
5.名前付きパイプ
ls -l コマンドの最初の列の文字は、ファイルのタイプを識別します。
# cd / # ls -l bin lrwxrwxrwx 1 root root 9 Sep 19 15:41 bin -> ./usr/bin
- Regular files d Directories l Symbolic links b Block-special device files c Character-special device files p Named pipes
ファイルとディレクトリ
通常のファイルにはさまざまな種類のデータを保存でき、touch コマンドまたは vi エディターを使用して簡単に作成できます。ディレクトリは、ファイルやディレクトリと inode 番号の間の関連付けを保持します。
ソフトリンク
図に示すように、ソフト リンクまたはシンボリック リンクは単に別のファイルを指しています。指しているファイルのパス名のみが含まれています
1.作成方法
# touch file1 # ln -s file1 link1 # ls -l -rw-r--r-- 1 root root 0 Sep 19 14:41 link1 lrwxrwxrwx 1 root root 5 Sep 19 15:41 link1 -> file1
2. 上記の例で作成されたソフト リンクのサイズは、パス名 (file1) の文字数 (絶対または相対) の 5 です。
3.元のファイル (file1) を削除すると、ソフト リンクは役に立たなくなります。
4.ソフト リンクは、異なるファイル システムに存在できます。
ハードリンク
すべてのファイルは、少なくとも 1 つのハード リンクを使用します。そのため、新しいファイルを作成すると、リンク カウントと呼ばれる新しいディレクトリ エントリが作成されます。したがって、このファイルへの新しいハード リンクを作成すると、リンク数が 1 ずつ増えます。
1.作成方法
# touch file1 # ls -l -rw-r--r-- 1 root root 0 Sep 23 13:19 file1 # ln file1 file2 # ls -l -rw-r--r-- 2 root root 0 Sep 23 13:19 file1 -rw-r--r-- 2 root root 0 Sep 23 13:19 file2 # ls -li 1282 -rw-r--r-- 2 root 0 root 0 Sep 23 13:19 file1 1282 -rw-r--r-- 2 root 0 root 0 Sep 23 13:19 file2 # find . -inum 1282 ./file1 ./file2
2. 上記のように、ファイルへの新しいハード リンクを作成するたびに、リンク数が 1 ずつ増えます。
3.いずれかのファイルを削除しても、他のファイルには影響しません。リンク数だけ減る
4.ハード リンクはファイル システムを越えることはできません。
デバイス ファイル
UNIX オペレーティング システムでは、どの物理デバイスにも デバイス ファイル と呼ばれるファイルが関連付けられています。 .これは、デバイス ドライバーと対話するインターフェイスです。他のファイル タイプとは異なり、データ ブロックにデータを保持せず、代わりに inode を使用してデバイス ファイルのメジャー番号とマイナー番号を格納します。
# cd /dev/ # ls -l crw-r----- 1 root tty 4, 0 Sep 23 12:51 tty0 brw-rw----- 1 root disk 8, 1 Sep 23 12:51 sda0
主要なデバイス番号 – デバイスにアクセスするために必要な特定のデバイス ドライバ
マイナー デバイス番号 – デバイス ドライバーが制御するタイプの特定のユニット。
たとえば、10 台の HP プリンターがある場合、メジャー番号は HP プリンター デバイス ドライバーになり、マイナー番号はプリンターのインスタンスになります (1、2 .. 最大 10)。
デバイスファイルには 2 つのタイプがあります
1.キャラクタースペシャル
2.ブロックスペシャル
キャラクター専用デバイスファイル
1. ls -l コマンド出力の最初の列の文字「c」は、文字特殊デバイス ファイルを識別します
2.データはデータ ストリームとしてアクセスされます (1 文字ずつ、一度に 1 バイト)
3.例 :tty、シリアル、仮想端末
# ls -l crw-r----- 1 root tty 4, 0 Sep 23 12:51 tty0
特別なデバイス ファイルをブロック
1. ls -l コマンド出力の最初の列の文字「b」は、文字特殊デバイス ファイルを識別します
2.データは、そのデバイスの定義されたブロック サイズとしてアクセスされます
3.例:ハードディスク、CD/DVD
# ls -l brw-rw----- 1 root disk 8, 1 Sep 23 12:51 sda0
名前付きパイプh2>
– 名前付きパイプは、プロセッサ間通信に使用される特別なファイルです。通常のパイプとは異なり、名前付きパイプから読み書きできます。このため、FIFO (file in file out) とも呼ばれます。
– mknod() または mkfifio() は、名前でパイプにアクセスするために名前付きパイプを使用する一般的な例です。
– 以下の例に示すように、2 つのプロセス (gzip と cat) が名前付きパイプに同時にアクセスして、データの書き込みと読み取りを行うことができます。
# mkfifo test_pipe # gzip -9 -c > test_pipe < out.gz # cat file1 > test_pipe # ls -l test_pipe prw-rw----- 1 root root 0 Sep 23 12:51 test_pipe