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

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

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

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

решение1

«Я хочу создать оператор if в терминале, который выполняется, если программа запущена, а если нет, то он ничего не делает или делает что-то еще»

Чтобы определить, запущена ли программа, по ее имени, используйте pgrep. Чтобы выполнить что-либо, если запущен текстовый процессор 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

Связанный контент