Wozu dient das Verzeichnis "/ sys"?

16

Vor einiger Zeit ist mir dieses Verzeichnis aufgefallen, das ich noch nie zuvor gesehen hatte /sys. Ich habe ein bisschen recherchiert und gelesen, dass "moderne Linux-Systeme" oft über dieses Verzeichnis verfügen und Geräte verwalten. Ich dachte, dafür war / dev da. Ich kann anscheinend nicht viele Informationen zu diesem Verzeichnis finden, außer dem, was ich erwähnt habe, und dies, zitiert von dieser Seite:

/ sys ist ein virtuelles Dateisystem, auf das zugegriffen werden kann, um Informationen über die Kernelansicht des Systems festzulegen oder abzurufen.

Ich bin jetzt schon eine Weile mit Trusty unterwegs und habe es noch nie bemerkt. Deshalb finde ich es etwas seltsam. Würde mich bitte jemand ausfüllen? Was ist der Unterschied zwischen this und / dev? Wann hat Ubuntu angefangen, dieses Verzeichnis zu verwenden und warum? Vielen Dank.

Chev_603
quelle
/sysgibt es schon seit über einem Jahrzehnt .
muru
1
Sidenote ist möglicherweise für andere Benutzer nützlich: Die Verzeichnisse / proc und / sys, die virtuelle Dateisysteme sind, verschwinden, sobald der Computer heruntergefahren wird. Wenn Sie jemals eine Festplatte mit Linux unter einem anderen Betriebssystem gemountet haben, werden Sie feststellen, dass diese Verzeichnisse leer sind.
Sergiy Kolodyazhnyy

Antworten:

28

/sysist alt . Es wurde eingeführt, bevor der Linux-Kernel 2.6 erreichte (damals gab es einen 2.4 / 2.5-Split). Seit dem ersten Ubuntu-Release mit einem 2.6er-Kernel hat jede Ubuntu-Version einen /sys.

/deventhält die eigentlichen Gerätedateien. Es macht keinen Zugriff auf alle Geräte zur Verfügung stellt , dass der Kern kennt (wie Ethernet - Geräte, für einen - ? Warum Netzwerk - Schnittstellen sind nicht in / dev wie andere Geräte , Warum zeigen Sie Ethernet - Geräte nicht in „/ dev“? ). Es ist eine Schnittstelle zum Gerät selbst - Sie schreiben auf das Gerät, lesen von ihm usw.

/sysist eine Schnittstelle zum Kernel. Insbesondere bietet es eine dateisystemähnliche Ansicht von Informationen und Konfigurationseinstellungen, die der Kernel ähnlich bereitstellt/proc . Abhängig von der Einstellung, die Sie ändern, kann das Schreiben in diese Dateien möglicherweise zum tatsächlichen Gerät führen oder nicht. Es dient nicht nur zur Verwaltung von Geräten, auch wenn dies ein häufiger Anwendungsfall ist.

Weitere Informationen finden Sie in der Kernel-Dokumentation :

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.

Beispielsweise:

  • Eine Möglichkeit, die Helligkeit eines Laptop-Monitors einzustellen, ist:

    echo N > /sys/class/backlight/acpi_video0/brightness
    
  • So ermitteln Sie die MAC-Adresse einer Netzwerkkarte:

    cat /sys/class/net/enp1s0/address
    
  • So rufen Sie die aktuellen CPU-Skalierungsregler ab:

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

Und so weiter...

muru
quelle
@muru: Was ist, wenn ich eine dieser Dateien entfernen möchte, die viel Speicher verbraucht? Ich habe einen (möglicherweise) fehlerhaften Gerätetreiber geschrieben, der in eine Schleife geriet und fortlaufend in eine Datei im Verzeichnis / sys / devices schrieb. Auch wenn ich versehentlich eine falsche Datei lösche, was wäre die Auswirkung?
Bhavik Shah
2
@BhavikShah Sie entfernen hier nichts - diese Dateien existieren tatsächlich nicht. Sie müssen das betreffende Modul entfernen.
muru