LINUX.ORG.RU

Запущен процесс или нет?

 , ,


1

2

Есть у меня пару bash и python скриптов, хочу сделать проверку запущенны они ли нет, если нет то запустить. Пробую ps -a в процессах показан запущенный скрипт. Пробую ps x | grep go.sh все работает. Закрываю терминал с нужным скриптом пробую снова ps x | grep go.sh снова выдает список процессов с go.sh. Почему это происходит? Как правильно отследить запущен процесс или нет?

Закрываю терминал с нужным скриптом пробую снова ps x | grep go.sh снова выдает список процессов.

а что должен выдавать?

Как правильно отследить запущен процесс или нет?

я думаю, что по pid'у будет надежнее.

Novel ★★★★ ()
Ответ на: комментарий от ivanzzz

по пид можно его сбросить прямо из шелл скрипта в pid файл (echo $$ /path/to/pid). потом читать из этого файла pid и делать дальше по ситуации (kill -0 $pid например, чтобы проверить, что он запущен).

Novel ★★★★ ()

Закрываю терминал с нужным скриптом пробую снова ps x | grep go.sh снова выдает список процессов с go.sh.

Не знаю как написан твой скрипт, он может игнорировать SIGHUP и не закрываться при закрытии терминала.
А ещё ps x | grep go.sh будет всегда что-нибудь выдавать, например сам процесс grep :)

$ ps x | grep этогодерьматочнонетвмоихпроцессах
 6678 pts/0    S+     0:00 grep этогодерьматочнонетвмоихпроцессах

Nao ★★★★★ ()

Попробуй monit, как раз для этого предназначен.

kukuruku ()
Ответ на: комментарий от Nao

А ещё ps x | grep go.sh будет всегда что-нибудь выдавать, например сам процесс grep :)

Поэтому лучше в данном случае делать ps x | grep [g]o.sh

shell-script ★★★★★ ()
if pgrep go.sh; then
    echo running
else
    echo not running
fi
kvap ()
Ответ на: комментарий от shell-script

Поэтому лучше в данном случае делать ps x | grep [g]o.sh

Почему вы думаете, что у него ущербный ps, что не умеет ?

Zmicier ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.