어떤 장치가 작동 중인지

어떤 장치가 작동 중인지

내 시스템에 dvb-t와 카드가 있습니다 dvb-s.

/dev/dvb/adapter0

그리고

/dev/dvb/adapter1

현재 어떤 카드를 사용하고 있는지 알 수 있는 방법이 있나요? 어느 것이 아닌가?

답변1

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. 은 이 설명자의 현재 파일 오프셋이고 1034는 (내 시스템에 있는) 장치 파일의 inode 번호입니다.1,90t0

이 출력에 대한 자세한 내용은 다음을 참조하세요.lsof(8). 그런데 lsof프로세스는 파일을 찾았는지 여부에 따라 다른 상태 코드를 반환합니다. 이는 쉘 스크립트에서 매우 간단하게 사용할 수 있음을 의미합니다.

#!/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

관련 정보