「/ sys」ディレクトリの目的は何ですか?


16

少し前に、私は今まで見たことのないこのディレクトリに気付きました/sys。私は少し調べて、「現代のLinuxシステム」にはしばしばこのディレクトリがあり、デバイスを管理することを読みました。それが/ devの目的だと思いました。私が言及したことと、このページから引用されたこれ以外には、このディレクトリに関する多くの情報を見つけることができないようです:

/ sysは、システムのカーネルビューに関する情報を設定または取得するためにアクセスできる仮想ファイルシステムです。

私はしばらくの間Trustyを実行していますが、以前は気づいていなかったので、少し奇妙に感じます。誰かが私に記入してくれませんか?これと/ devの違いは何ですか?Ubuntuはいつこのディレクトリの使用を開始しましたか?ありがとう。


/sys今10年以上に渡っています
ムル

1
Sidenoteは、おそらく他のユーザーにとって便利です。仮想ファイルシステムである/ procおよび/ sysディレクトリは、コンピューターがシャットダウンすると消えます。Linuxで別のOSにハードドライブをマウントしたことがある場合、これらのディレクトリは空であることがわかります。
セルギーKolodyazhnyy

回答:


28

/sysある古いです。Linuxカーネルが2.6に到達する前に導入されました(2.4 / 2.5の分割があったときに戻ります)。以来最初のUbuntuのリリースは2.6カーネルを使用しすべての Ubuntuのバージョンがありました/sys

/dev実際のデバイスファイルが含まれています。カーネルが知っているすべてのデバイスへのアクセスを提供しません(たとえば、イーサネットデバイスなど- ネットワークインターフェースが他のデバイスのように/ devにないのはなぜですか?なぜイーサネットデバイスが「/ dev」に表示されないのですか?)。デバイス自体へのインターフェースです-デバイスへの書き込み、デバイスからの読み取りなど。

/sysカーネルへのインターフェースです。具体的には、カーネルが提供する情報と構成設定のファイルシステムのようなビューを提供します/proc。これらのファイルへの書き込みは、変更する設定に応じて、実際のデバイスに書き込む場合と書き込まない場合があります。一般的なユースケースですが、デバイスの管理だけではありません。

詳細については、カーネルのドキュメントを参照してください。

Top Level Directory Layout
~~~~~~~~~~~~~~~~~~~~~~~~~~

The sysfs directory arrangement exposes the relationship of kernel
data structures. 

The top level sysfs directory looks like:

block/
bus/
class/
dev/
devices/
firmware/
net/
fs/

devices/ contains a filesystem representation of the device tree. It maps
directly to the internal kernel device tree, which is a hierarchy of
struct device. 

bus/ contains flat directory layout of the various bus types in the
kernel. Each bus's directory contains two subdirectories:

    devices/
    drivers/

devices/ contains symlinks for each device discovered in the system
that point to the device's directory under root/.

drivers/ contains a directory for each device driver that is loaded
for devices on that particular bus (this assumes that drivers do not
span multiple bus types).

fs/ contains a directory for some filesystems.  Currently each
filesystem wanting to export attributes must create its own hierarchy
below fs/ (see ./fuse.txt for an example).

dev/ contains two directories char/ and block/. Inside these two
directories there are symlinks named <major>:<minor>.  These symlinks
point to the sysfs directory for the given device.  /sys/dev provides a
quick way to lookup the sysfs interface for a device from the result of
a stat(2) operation.

例えば:

  • ノートパソコンのモニターの明るさを設定する1つの方法は次のとおりです。

    echo N > /sys/class/backlight/acpi_video0/brightness
    
  • ネットワークカードのMACアドレスを取得するには:

    cat /sys/class/net/enp1s0/address
    
  • 現在のCPUスケーリングガバナーを取得するには:

    cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
    

等々...


@muru:大量のメモリを消費しているこれらのファイルの1つを削除する場合はどうなりますか?バグが発生する可能性のあるデバイスドライバーを作成しましたが、これはループに入り、/ sys / devicesディレクトリ内のファイルに継続的に書き込みました。また、間違ったファイルを誤って削除した場合、どのような影響がありますか?
バビックシャー

2
@BhavikShahここからは何も削除しません-これらのファイルは実際には存在しません。関連するモジュールを削除する必要があります。
ムル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.