“/ sys”디렉토리는 무엇입니까?


16

얼마 전 나는이 디렉토리에서 내가 본 적이없는 것을 발견했다 /sys. 나는 약간의 연구를하여 "현대 리눅스 시스템"에 종종이 디렉토리가 있으며 장치를 관리한다는 것을 읽었다. 나는 그것이 / dev를위한 것이라고 생각했다. 페이지 에서 인용 한 것 외에이 디렉토리에 대한 많은 정보를 찾을 수없는 것 같습니다 .

/ sys는 시스템의 커널보기에 대한 정보를 설정하거나 얻기 위해 액세스 할 수있는 가상 파일 시스템입니다.

나는 한동안 Trusty를 실행 해 왔으며 이전에는 눈치 채지 못했기 때문에 조금 이상하다고 생각합니다. 누군가 저를 채워주시겠습니까? 이것과 / dev의 차이점은 무엇입니까? 우분투는 언제이 디렉토리를 사용하기 시작했고, 왜 그런가요? 감사.


/sys십여 년 동안 주변에 있었다 .
muru

1
사이드 노트는 다른 사용자에게 유용 할 것입니다. 가상 파일 시스템 인 / proc 및 / sys 디렉토리는 컴퓨터가 종료되면 사라집니다. 다른 OS에서 Linux와 함께 하드 드라이브를 마운트 한 경우 해당 디렉토리가 비어 있음을 알 수 있습니다.
Sergiy Kolodyazhnyy

답변:


28

/sys이다 오래된 . Linux 커널이 2.6에 도달하기 전에 소개되었습니다 (2.4 / 2.5 분할이 있었을 때). 이후 최초의 우분투 버전은 2.6 커널을 사용 , 모든 우분투 버전은 있었다 /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.

예를 들면 다음과 같습니다.

  • 랩톱 모니터의 밝기를 설정하는 한 가지 방법은 다음과 같습니다.

    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 : 많은 메모리를 소비하는 이러한 파일 중 하나를 제거하려면 어떻게합니까? 나는 루프로 들어가서 / sys / devices 디렉토리의 일부 파일에 지속적으로 버그가있는 장치 드라이버를 작성했습니다. 또한 실수로 잘못된 파일을 삭제하면 어떤 영향이 있습니까?
Bhavik Shah

2
@BhavikShah 여기에서 아무것도 제거하지 마십시오.이 파일은 실제로 존재하지 않습니다. 관련된 모듈을 제거해야합니다.
muru
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.