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