付録E proc ファイルシステム
Linux カーネルには、コンピューター上の物理デバイスへのアクセスを制御し、それらのデバイスとプロセスがいつ、どのような方法で情報のやりとりを行うかをスケジュールするという、2 つの主要な機能があります。
/proc/
ディレクトリー( proc
ファイルシステムとも呼ばれます)には、カーネルの現在の状態を表す特殊なファイルの階層が含まれており、アプリケーションとユーザーがシステムのカーネルビューにピア接続できるようにします。
/proc/
ディレクトリーには、システムハードウェアと実行中のプロセスの詳細情報が記載されています。さらに、/proc/
内のファイルの一部は、ユーザーおよびアプリケーションが設定変更をカーネルと通信できるように操作できます。
/proc/ide/ ディレクトリーおよび /proc/pci/ ディレクトリー
2.6 カーネルの後のバージョンでは、
/proc/ide/
ディレクトリーおよび /proc/pci/
ディレクトリーが廃止されました。/proc/ide/ ファイルシステムは sysfs のファイルに置き換えられました。PCI デバイスに関する情報を取得するには、代わりに lspci を使用してください。sysfs または lspci の詳細は、それぞれの man ページを参照してください。
E.1. 仮想ファイルシステム
Linux システムでは、すべてのデータが ファイル として保管されます。大半のユーザーは、主要な 2 つのファイルタイプ (テキストとバイナリ) について精通していますただし、
/proc/
ディレクトリーには、仮想 ファイル と呼ばれる別のタイプのファイルが含まれています。したがって、/proc/
は多くの場合、仮想ファイルシステム と呼ばれます。
仮想ファイルには、固有の性質があります。大半の仮想ファイルは、サイズがゼロバイトで表示されていても、表示すると大量の情報が格納されている場合があります。又、仮想ファイルの時刻及び日付のスタンプの大半は、現在の時刻と日付を反映します。これは、常に更新されていることを示しています。
/proc/interrupts
、/proc/meminfo
、/proc/mounts
、および /proc/partitions
などの仮想ファイルは、システムのハードウェアの最新の状態を保ちます。/proc/filesystems
ファイルや /proc/sys/
ディレクトリーは、システム設定情報とインターフェースを提供します。
情報を体系化するために、同様のトピックに関する内容が記載されたファイルは、仮想ディレクトリ/サブディレクトリにグループ化されます。プロセスディレクトリには、システムで実行中の各プロセスに関する情報が格納されます。
E.1.1. 仮想ファイルの表示
/proc/
ファイル内のほとんどのファイルは、テキストファイルと同様に動作し、有用なシステムおよびハードウェアデータを人間が判読できるテキスト形式で保存します。そのため、cat、より 、以下を使用してそれらを表示できます。たとえば、システムの CPU に関する情報を表示するには、cat /proc/cpuinfo を実行します。これにより、以下のような出力が返されます。
processor : 0 vendor_id : AuthenticAMD cpu family : 5 model : 9 model name : AMD-K6(tm) 3D+ Processor stepping : 1 cpu MHz : 400.919 cache size : 256 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 1 wp : yes flags : fpu vme de pse tsc msr mce cx8 pge mmx syscall 3dnow k6_mtrr bogomips : 799.53
/proc/ の一部のファイルには、人間が判読できない情報が含まれます。このようなファイルから情報を取得するには、lspci、apm、free、top などのツールを使用します。
特定のファイルは、root 権限でしかアクセスできない
/proc/
ディレクトリーにある仮想ファイルの一部は、root ユーザーのみが読み取りできます。
E.1.2. 仮想ファイルの変更
一般的なルールとして、
/proc/
ディレクトリー内のほとんどの仮想ファイルは読み取り専用です。ただし、カーネルの設定の調整にも使用できます。これは特に /proc/sys/
サブディレクトリー内のファイルに該当します。
仮想ファイルの値を変更するには、以下のコマンドを使用します。
echo value > /proc/file
たとえば、ホスト名をすぐに変更するには、次のコマンドを実行します。
echo www.example.com > /proc/sys/kernel/hostname
他のファイルはバイナリースイッチまたはブール値スイッチとして機能します。cat /proc/sys/net/ipv4/ip_forward を入力すると、
0
(off または false)または 1
(on または true)を返します。0
は、カーネルがネットワークパケットを転送していないことを示します。パケット転送を有効にするには、echo 1 > /proc/sys/net/ipv4/ip_forward を実行します。
sysctl コマンド
/proc/sys/
サブディレクトリーの設定を変更するのに使用される別のコマンドは、/sbin/sysctl です。このコマンドについての詳しい情報は、を参照してください。 「sysctl コマンドの使用」
/proc/sys/
サブディレクトリーで利用可能なカーネル設定ファイルの一覧は、「/proc/sys/」 を参照してください。