Сделайте что-нибудь, если программа работает

Есть ли что-то, что вы можете ввести в терминал, чтобы он запускал команду, если запущена определенная программа? Например, if <Libre office is running> then sudo pkill <Libre ofice>.

Правка 1: Итак, я хочу сделать в терминале оператор if, который запускается, если программа работает, а если нет, то ничего не делает или делает что-то еще.

3
задан 6 May 2014 в 04:03

1 ответ

"то, что я хочу сделать, делают, если оператор в терминале, который работает, если программа работает и если это не он, ничего не делает или делает что-то еще"

, Чтобы определить, работает ли программа данный ее имя, используйте pgrep. К dosomething, если текстовой процессор LibreOffice работает:

pgrep soffice.bin >/dev/null && do_something

Точно так же, чтобы сделать что-то, если текстовой процессор LibreOffice не выполнение:

pgrep soffice.bin >/dev/null || do_something

Далее, можно использовать эти два в комбинации:

pgrep soffice.bin && do_one_thing || do_another

Или, если вещи становятся более сложными, использование if оператор:

if pgrep soffice.bin
then
    # command is running
    do_one_thing
    do_one_thing2
else
    # command is not running
    do_another
    do_another2
fi

вышеупомянутая работа, потому что pgrep, точно так же, как grep, устанавливает полезный код выхода. Если процесс найден, он возвращается с кодом выхода нуля (который оболочка интерпретирует как логичная верный). В противном случае это возвращается с одним (оболочка интерпретирует любой ненулевой код выхода для значения лжи).

Для обнаружения всех программ, которые в настоящее время работают (и следовательно что имя использовать в качестве аргумента pgrep) работайте ps ax

0
ответ дан 6 May 2014 в 04:03

Другие вопросы по тегам:

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