トップ > Linuxらしい使い方を覚える >
擬似デバイスファイルおよびその活用方法

  

デバイスファイルには擬似的なものもある

引き続きファイルやディレクトリに関する話題です。 この記事では、デバイスファイルの一種である擬似デバイスファイルについて解説します

過去の記事で軽く触れたように、UNIX系OSでは /dev ディレクトリの下にはデバイスファイルと呼ばれるファイル群があります。 デバイスファイルはスペシャルファイルとも呼ばれるもので、PCに接続された機器と対応しています。

ハードディスク・光学ドライブ・USBフラッシュメモリ・マウス・キーボードなど、様々な機器に対応するデバイスファイルが存在しており、それらデバイスファイルを読み書きすることで、対応する機器と入出力することができます。

そんなデバイスファイル達ですが、実は物理的には存在していない機器に対応しているデバイスファイルも含まれています。 仮想的な機器、つまり擬似的な機器に対応しているデバイスファイルです。 それらは擬似デバイスファイルと呼ばれます。

よく知られている擬似デバイスファイルが、

  1. /dev/null
  2. /dev/zero
  3. /dev/random

の3つです。 それぞれの擬似デバイスの機能は以下の通りです。

擬似デバイス 説明
/dev/null 読み出されるデータはEOF(ファイルの終わり)
※EOFはCTRL-Dのこと
書き込まれたデータは破棄される
/dev/zero 読み出されるデータは0(ゼロ)
書き込まれたデータは破棄される
/dev/random 読み出されるデータは乱数
書き込まれたデータは乱数を混乱させる

/dev/null

/dev/null はゴミ箱のような擬似デバイスで、

command > /dev/null

のように実行することで command コマンドの標準出力を全て捨てることができます。

このような特性から /dev/null は "ブラックホール" とも呼ばれます。

/dev/zero

/dev/zero は常に0(ゼロ)を返します。 この特性を利用し、

dd if=/dev/zero of=/dev/sdx bs=4096

のように実行することで /dev/sdx の機器(USBフラッシュメモリなど)のデータを 0(ゼロ) で埋めることができます。 いわゆる "データ消去" を行うことができます。

  
dd コマンドはデータをコピーするためのコマンドです。 cp コマンドがファイルをコピーするのに対し、dd コマンドはデバイスファイルを通じてデバイス間でコピーを行います。

/dev/random

/dev/ranodm は乱数を取得するための擬似デバイスで、

od -An -td -N1< /dev/random

のように実行することで乱数を取得し、画面に表示させることができます。

  
od コマンドはデータを数値に変換して表示するためのコマンドです。

なお /dev/random は、各種機器やその他情報源から集めたデータを元ネタに乱数を生成します。 そのため、元ネタが枯渇すると乱数の生成が一時的に停止します。 元ネタが集まると乱数の生成が再開されます。

  
/dev/urandom という擬似デバイスファイルもあります。 こちらは元ネタが異なるため枯渇することはありません。 ただし、/dev/random に比べて乱数の強度と信頼性は低くなります。
  
  

まとめ

デバイスファイルの中には物理的な機器ではなく仮想的な機器に対応したものがあります。 それらは擬似デバイスファイルと呼ばれ、以下の3つが代表例です。

擬似デバイス 説明
/dev/null 読み出されるデータはEOF(ファイルの終わり)
※EOFはCTRL-Dのこと
書き込まれたデータは破棄される
/dev/zero 読み出されるデータは0(ゼロ)
書き込まれたデータは破棄される
/dev/random 読み出されるデータは乱数
書き込まれたデータは乱数を混乱させる

これらのファイルを活用することで、ゴミ箱のように使ったり、乱数を取得したり、ハードディスクやUSBフラッシュメモリのデータを安全に消去することができます。

メニュー