Qual dispositivo está funcionando

3

Eu tenho um cartão dvb-t e um dvb-s no meu sistema que estão em

/dev/dvb/adapter0

e

/dev/dvb/adapter1

Existe uma maneira de descobrir qual cartão está funcionando atualmente? e qual não é?

    
por mohamad danesh 18.08.2015 / 09:04

1 resposta

2

Você pode usar lsof para ver quais processos estão usando um arquivo. No seu caso:

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

Cada chamada lhe dará uma lista dos processos que solicitaram um manipulador (descritor de arquivo) para o seu dispositivo. Se nada for impresso, você pode concluir que seu dispositivo não está em uso no momento. Aqui está um exemplo com /dev/urandom , usado pelo Conky, Chromium e Thunderbird no meu sistema:

$ 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 (no campo FD) significa que os processos solicitaram acesso de leitura: o número imediatamente anterior é o número do descritor deles. CHR e 1,9 são o tipo de dispositivo e os números principais / secundários. 0t0 é o deslocamento do arquivo atual para esse descritor, e 1034 é o número do inode do arquivo do dispositivo (no meu sistema).

Para mais informações sobre este resultado, consulte lsof(8) . By the way, lsof retorna um código de status diferente, dependendo se encontrou processos para um arquivo ou não. Isso significa que você pode usá-lo simplesmente em um script de 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
    
por 18.08.2015 / 10:54