Мониторинг процессов с помощью kill


vti - Posted on 24 Сентябрь 2008

Если у вас есть ID процесса, но вы не уверены правильный ли он, можно воспользоваться на первый взгляд самым последним средством: командой kill. Сигнал 0 является специальным и возвращаемое значение kill говорит о том, может ли сигнал быть отослан нужному процессу.

Поэтому kill -0 не остановит процесс, и его возвращаемое значение может быть использовано для выяснения запущен процесс или нет. Например:

$ echo $$     # выведем id текущего процесса
12833
$ /bin/bash   # создадим новый процесс
$ echo $$     # выведем id нового процесса
12902
$ kill -0 12902
$ echo $?     # существует, возвращаемый код 0
0
$ exit        # возвращаемся в предыдущий шелл
$ kill -0 12902
bash: kill: (12902) - No such process
$ echo $?     # не существует, возвращаемый код 1
1

Многие демоны UNIX записывают ID своих процессов в файл куда-то в /var/run когда они запускаются. Использовать kill -0 для проверки существования процесса гораздо проще, чем парсить вывод команды ps. Например, чтобы проверить запущен ли cron, можно сделать следующее:

# kill -0 $(cat /var/run/cron.pid)
# echo $?
0

Ссылки:
http://www.linuxjournal.com/content/monitoring-processes-kill-0

5
Ваша оценка: Ничего Рейтинг: 5 (1 vote)

Как раз то что нужно мне сейчас :)
Хостер самым неожиданным образом постоянно вырубает сервер, и из-за этого остаются pid файлы видя которые mongrel отказывается стартовать. Теперь попробую грамотоно обработать это используя материал этой статьи.

век живи, век rtfm.. а я паршу что ps выводит. дурень.. Ж:-)

test -d /proc/$$/
echo $?

Ну идея ясна. Я как то писал демона, которому надо было pid проверять на сях. Ну и тогда я лучшего способа, чем тупо проверить существование такой директории, не придумал.

Отправить комментарий

Google Friend Connect (leave a quick comment)
loading...
Содержание этого поля является приватным и не предназначено к показу.