Networking

替代 /proc/interrupts

  • November 3, 2009

我想獲得有關分配給我的網卡的中斷的資訊。除了 /proc/interrupts 還有其他方法嗎?

核心資訊有兩個通用介面(除了系統呼叫),它們被實現為文件系統。這兩個文件系統是 /proc 和 /sys。sys 比 proc 和更新的更有條理,但不是使用者友好的。所以對程序員來說稍微好一點,避免解析。

如果您想要來自 sys 文件系統的資訊(lspci 解析的資訊(請參閱由 輸出的一些文件strace -o somefile lspci)):

$ lspci | grep -i network
00:19.0 Ethernet controller: Intel Corporation 82566DC Gigabit Network Connection (rev 02)
$ cat /sys/devices/pci0000:00/0000:00:19.0/irq
2299

注意兩個命令之間的 00:19 關係。irq 文件返回的數字將與相關設備的 /proc/interrupts 的第一列相同。

如果您想了解有關 sys 文件系統的更多資訊,請查看核心原始碼中包含的文件,例如/usr/src/linux-source-2.6.27/Documentation/filesystems

更新:

有沒有辦法將輸出與介面名稱連接起來?

當然,如果您使用 sys,您會發現有很多符號連結指向 sys.xml 中的其他位置。例如,在 /sys/class/net 中:

[kbrandt@kb: /sys/class/net] ls -l
lrwxrwxrwx 1 root root 0 2009-11-02 11:01 eth0 -> ../../devices/pci0000:00/0000:00:19.0/net/eth0
lrwxrwxrwx 1 root root 0 2009-11-02 11:01 lo -> ../../devices/virtual/net/lo
lrwxrwxrwx 1 root root 0 2009-11-02 11:01 pan0 -> ../../devices/virtual/net/pan0
lrwxrwxrwx 1 root root 0 2009-11-02 11:01 vmnet1 -> ../../devices/virtual/net/vmnet1
lrwxrwxrwx 1 root root 0 2009-11-02 11:01 vmnet8 -> ../../devices/virtual/net/vmnet8

因此,要獲取 eth0 的 irq,您可以:

cat /sys/class/net/eth0/../../irq

引用自:https://serverfault.com/questions/80542