Сценарии запуска в большинстве дистрибутивов Linux обрабатывают это путем сохранения идентификатора процесса службы (демона) при запуске.
Эти PID обычно хранятся в /var/run/
. Например, в моей системе Apache2 сохраняет исходный или родительский идентификатор процесса (полезно для предварительно разветвленных процессов) в /var/run/apache2.pid
. Таким образом, вы можете затем отправлять такие процессы, как SIGHUP
или SIGSTOP
чтобы сигнализировать о перезагрузке конфигурации или об остановке службы (демона).
Одно замечание, которое поможет вам при поиске в стиле ps ax
- использовать небольшую хитрость, чтобы избежать шаблона регулярного выражения grep, используемого для сопоставления, так, чтобы он не соответствовал самому себе. Например, ps ax | grep [a]pache2 | wc -l
man test
дает вам основы команды test
. Для простых задач в сценариях оболочки лучше избегать зависимости от того, какую оболочку вы используете. Обычно для базовых сценариев рекомендуется написание сценариев, ориентированных на оболочку Borne (/bin/sh
), так как это имеет тенденцию быть самым популярным наименьшим общим знаменателем.
#!/bin/sh
RC= `ps ax | grep [a]pache2 | wc -l`
if [ $RC -gt 0 ]; then
kill -SIGSTOP `cat /var/run/apache2.pid`
fi