sysfs에서 정보 가져오기

sysfs에서 정보 가져오기

네트워크 인터페이스에 대한 정보를 폴링하는 스크립트를 만들고 있습니다. 이를 위해 /sysfs.

인터페이스의 가능한 모든 상태를 명확하게 하고 싶을 때까지는 모든 것이 순조롭게 진행되었습니다(그런데 그게 무엇인가요? 현재로서는 up, down그리고 unknown)만 알고 있습니다. 여기저기 찾아보다 /usr/src/linux/Documentation/sysfs-rules.txt가 이런 것을 발견했습니다.

/sys/class/net/eth0/device에 액세스하는 것은 애플리케이션의 버그입니다.

이유가 있나요? 정보를 얻는 데 문제가 있는 경우 누군가 설명해 줄 수 있나요 /sysfs?

모든 인터페이스를 반복하지는 않지만 /sysfs모든 네트워크 인터페이스를 얻습니다 getifaddrs(3). iface 상태를 얻는 다른 방법이 있을까요? 감사해요.

답변1

이는 device사용해서는 안 되는 클래스 디렉토리의 링크입니다. 아이디어는 이것이 /sys/class/net/eth0아래 어딘가에 대한 심볼릭 링크 /sys/devices이고 해당 링크는 (그랜드-) * 상위 디렉토리 device에만 연결된다는 것입니다. 필요한 경우 상위 디렉토리로 돌아가야 합니다.device

파일에 액세스하면 /sys/class/net/eth0/됩니다 .

에 있는 실행 상태를 참조하면 /sys/class/net/eth0/operstate더 많은 상태가 있습니다. 이름은 다음에서 정의됩니다.net/core/net-sysfs.c그리고 일정하다include/uapi/linux/if.h. 그들은 -에서왔다RFC 2863.

관련 정보