Мониторинг процессов с помощью kill
Если у вас есть 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
- 3657 просмотров
Страница для печати

Как раз то что нужно мне сейчас :)
Хостер самым неожиданным образом постоянно вырубает сервер, и из-за этого остаются pid файлы видя которые mongrel отказывается стартовать. Теперь попробую грамотоно обработать это используя материал этой статьи.
век живи, век rtfm.. а я паршу что ps выводит. дурень.. Ж:-)
test -d /proc/$$/
echo $?
Ну идея ясна. Я как то писал демона, которому надо было pid проверять на сях. Ну и тогда я лучшего способа, чем тупо проверить существование такой директории, не придумал.
Отправить комментарий