Linux

哪個設備在工作

  • August 18, 2015

我的系統中有一張dvb-t和一張dvb-s

/dev/dvb/adapter0

/dev/dvb/adapter1

有沒有辦法找出目前工作的卡?哪個不是?

您可以使用lsof查看哪些程序正在使用文件。在你的情況下:

$ lsof /dev/dvb/adapter0
$ lsof /dev/dvb/adapter1

每次呼叫都會為您提供已向您的設備請求處理程序(文件描述符)的程序列表。如果沒有列印任何內容,您可以斷定您的設備目前未在使用中。/dev/urandom這是我係統上的 Conky、Chromium 和 Thunderbird 使用的範例:

$ lsof /dev/urandom
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
conky     ---- ----    3r   CHR    1,9      0t0 1034 /dev/urandom
chromium- ---- ----   55r   CHR    1,9      0t0 1034 /dev/urandom
thunderbi ---- ----   24r   CHR    1,9      0t0 1034 /dev/urandom

r(在 FD 欄位中)表示程序已請求讀取訪問權限:之前的數字是它們的描述符編號。 CHR並且1,9是設備類型和主要/次要編號。0t0是該描述符的目前文件偏移量,而 1034 是設備文件的 inode 號(在我的系統上)。

有關此輸​​出的更多資訊,請參閱lsof(8)。順便說一句,lsof根據是否找到文件的程序返回不同的狀態程式碼。這意味著您可以在 shell 腳本中非常簡單地使用它:

#!/bin/bash

if lsof /dev/dvb/adapter0 > /dev/null 2>&1; then
   echo "Adapter 0 is in use."
elif lsof /dev/dvb/adapter1 > /dev/null 2>&1; then
   echo "Adapter 1 is in use."
else
   echo "No adapter is in use."
fi

引用自:https://unix.stackexchange.com/questions/223875