Untuk apa direktori "/ sys"?

16

Beberapa waktu yang lalu saya perhatikan direktori ini yang belum pernah saya lihat sebelumnya /sys. Saya meneliti sedikit dan membaca bahwa "sistem Linux modern" sering memiliki direktori ini, dan ia mengelola perangkat. Saya pikir itu untuk apa. Sepertinya saya tidak dapat menemukan banyak informasi tentang direktori ini, selain dari apa yang saya sebutkan, dan ini, dikutip dari halaman ini :

/ sys adalah sistem file virtual yang dapat diakses untuk mengatur atau mendapatkan informasi tentang tampilan kernel dari sistem.

Saya telah menjalankan Trusty untuk sementara waktu sekarang, dan tidak pernah menyadarinya sebelumnya, itulah sebabnya saya merasa sedikit aneh. Akankah seseorang mengisi saya? Apa perbedaan antara ini dan / dev? Kapan Ubuntu mulai menggunakan direktori ini, dan mengapa? Terima kasih.

Chev_603
sumber
/systelah ada selama lebih dari satu dekade sekarang .
muru
1
Sidenote, mungkin akan bermanfaat bagi pengguna lain: direktori / proc dan / sys, menjadi sistem file virtual, akan hilang begitu komputer dimatikan. Jika Anda pernah memasang hard drive dengan Linux pada OS lain Anda akan melihat bahwa direktori tersebut kosong.
Sergiy Kolodyazhnyy

Jawaban:

28

/syssudah tua . Itu diperkenalkan sebelum kernel Linux mencapai 2,6 (kembali ketika ada split 2.4 / 2.5). Sejak rilis Ubuntu pertama menggunakan kernel 2.6 , setiap versi Ubuntu telah memiliki /sys.

/devberisi file perangkat yang sebenarnya. Ini tidak memberikan akses ke semua perangkat yang kernel tahu dari (seperti perangkat ethernet, untuk satu - ? Mengapa antarmuka jaringan tidak di / dev seperti perangkat lain , Mengapa perangkat Ethernet tidak muncul di "/ dev"? ). Ini adalah antarmuka ke perangkat itu sendiri - Anda menulis ke perangkat, membaca darinya, dll.

/sysadalah antarmuka ke kernel. Secara khusus, ia menyediakan tampilan seperti sistem file dari informasi dan pengaturan konfigurasi yang disediakan kernel, seperti halnya /proc. Menulis ke file-file ini mungkin atau mungkin tidak menulis ke perangkat yang sebenarnya, tergantung pada pengaturan yang Anda ubah. Ini tidak hanya untuk mengelola perangkat, meskipun itu adalah kasus penggunaan umum.

Informasi lebih lanjut dapat ditemukan di dokumentasi kernel :

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.

Sebagai contoh:

  • Salah satu cara mengatur kecerahan monitor laptop adalah:

    echo N > /sys/class/backlight/acpi_video0/brightness
    
  • Untuk mendapatkan alamat MAC kartu jaringan:

    cat /sys/class/net/enp1s0/address
    
  • Untuk mendapatkan gubernur penskalaan CPU saat ini:

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

Dan seterusnya...

muru
sumber
@uru: Bagaimana jika saya ingin menghapus salah satu file ini yang menghabiskan banyak memori? Saya menulis driver perangkat yang buggy (mungkin) yang masuk ke loop dan terus menulis ke beberapa file di direktori / sys / devices. Juga, jika saya tidak sengaja menghapus file yang salah, apa dampaknya?
Bhavik Shah
2
@ BhavikShah Anda tidak menghapus apa pun dari sini - file-file ini sebenarnya tidak ada. Anda harus menghapus modul yang terlibat.
muru