GNU/Linux >> Linux の 問題 >  >> Linux

Unix ファイルの基本 :i ノード、ソフト対ハード リンク、デバイス ファイル、名前付きパイプ

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

名前付きパイプ

– 名前付きパイプは、プロセッサ間通信に使用される特別なファイルです。通常のパイプとは異なり、名前付きパイプから読み書きできます。このため、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


Linux
  1. 例を使用して UNIX / Linux の i ノードの基本を理解する

  2. UNIX/Linux :アクセス制御リスト (ACL) の基本

  3. Linux ファイル システムのソフト リンクとハード リンクとは

  1. Linux インタビューの質問 :オープン ファイル / オープン ファイル記述子

  2. Linuxのソフトリンクとハードリンクの違い

  3. デバイスファイルとデバイスドライバーの違い

  1. Linuxのハードリンクとソフトリンクの説明

  2. Linux / UNIX でファイルを管理する 10 の Cat コマンドの例

  3. Unix/Linux 削除されたファイルの復元/回復