Самый элегантный способ проверить, запущен ли процесс, и запустить, если нет?

8

Я возился с различными способами сделать это в bash, и я нашел pgrep program > /dev/null || programсамый короткий / самый элегантный способ сделать это. Есть ли лучший метод, чем этот?

персона
источник

Ответы:

9

С pgrep, вы можете соответствовать другим программам, чем только ваши. Если вы хотите быть уверенным, что подбираете правильную программу, используйте pidofвместо этого.

Вы также можете использовать start-stop-daemonс файлом PID. start-stop-daemonпроверит, запущена ли программа, и запустит ее при необходимости. Это то, что используется в большинстве сценариев инициализации.

ℝaphink
источник
Просматривая man-файл start-stop-daemon, он выглядит красиво. Спасибо за понимание!
aperson
1
Вы также можете быть заинтересованы в /lib/lsb/init-functionsбиблиотеке, которую большинство сценариев инициализации анализируют для использования функций-оболочек, таких как start_daemonили pidofproc.
Кафинк
1
[ -z `pidof program` ] || echo "program runing"
# or 
[ -z `pidof program` ] && OtherProgram 
SergioAraujo
источник
Не могли бы вы объяснить оператору, что делать с этой командой?
нанофарад