
Можно ли что-то ввести в терминал, чтобы он выполнил команду, если запущена определенная программа? Например, 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