Linux
哪個設備在工作
我的系統中有一張
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