Какое устройство работает

Одинарные кавычки не имеют никакого особого значения в регулярных выражениях и так как Ваш шаблон уже включается в двойные кавычки, нет никакой причины выйти из них. Так как они не специальные символы, выходить из них не работает и завинтит Ваш шаблон.

Поэтому все, в чем Вы нуждаетесь, "\$form\['":

$ cat file.txt 
$form['#node']
abc$form['#node']abc
123$form['#node']123
blah blah $form['#node']
someotherstring

$ grep  "\$form\['" file.txt 
$form['#node']
abc$form['#node']abc
123$form['#node']123
blah blah $form['#node']
3
18.08.2015, 10:13
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 и 1,9 - это тип устройства и номер дескриптора. 0t0 является текущим смещением файла для этого дескриптора, а 1034 является кодовым номером файла устройства (в моей системе).

Более подробную информацию об этом выводе смотрите в 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
2
27.01.2020, 21:27

Теги

Похожие вопросы