написать фоновый процесс, чтобы проверить, что процесс все еще активен - PullRequest
1 голос
/ 30 июня 2010

В UNIX у меня есть утилита, скажем 'Test_Ex', двоичный файл. Как я могу написать задание или скрипт оболочки (как задание cron), работающий всегда в фоновом режиме, который постоянно проверяет, выполняется ли Test_Ex по-прежнему каждые 5 секунд (и, возможно, скрывает это задание) Если он работает, ничего не делать. Если нет, удалите каталог по указанному пути.

Ответы [ 3 ]

2 голосов
/ 30 июня 2010

Утилиты, такие как upstart , изначально являющиеся частью дистрибутива Ubuntu linux, я считаю, хороши для мониторинга выполнения задач.

2 голосов
/ 05 июля 2010

Лучший способ сделать это - не делать этого.Если вы хотите узнать, запущен ли Test_Ex, запустите его из скрипта, который выглядит примерно так:

#!/bin/sh
Test_Ex
logger "Test_Ex died"
rm /p/a/t/h

или

#!/bin/sh
while ! Test_ex
do
  logger "Test_Ex terminated unsuccesfully, restarting in 5 seconds"
  sleep 5
done

Регулярный запрос ps - плохая идея, ипытаться контролировать его с помощью cron - ужасная, ужасная идея.Кажется, есть некоторая утешение в идее, что crond всегда будет работать, но вы не можете больше полагаться на это, чем полагаться на то, что скрипт-обёртка останется живым;любой из них может быть убит в любое время.Пробуждение каждые 10 секунд для запроса ps - это просто трата ресурсов.

2 голосов
/ 30 июня 2010

Попробуйте этот скрипт:

pgrep Test_Ex > /dev/null || rm -r dir

Если у вас нет pgrep, используйте

ps -e -ocomm | grep Test_Ex || ...

вместо.

...