Я знаю, что должен рассчитать, сколько экземпляров работает:
ps x | grep apache2 | wc -l
закончитесь, если это работает: 2
, или иначе: 1
Я также знаю, что существует названная команда test
то, что я мог использовать для выполнения проверки, но я не знаю, как использовать test
с wc
Сценарии запуска на большинстве дистрибутивов Linux обрабатывают это путем сохранения идентификатора Процесса сервиса (демон), когда они запускают его.
Эти PIDs обычно хранятся в /var/run/
. Например, в моей системе Apache2 хранит его идентификатор исходного или родительского процесса (полезный для предразветвленных процессов) в /var/run/apache2.pid
. Таким образом, можно затем отправить сигналы такой как SIGHUP
или SIGSTOP
к процессу, чтобы сигнализировать или о перезагрузке конфигурации или остановить сервис (демон).
Одно примечание для помощи с Вашим ps ax
поиск процесса стиля должен использовать немного приема для выхода из образца регулярного выражения grep, используемого для соответствия, такого, что это не соответствует себе. Например. ps ax | grep [a]pache2 | wc -l
man test
дает Вам основы test
команда. Для простых задач в сценариях оболочки, это лучше всего, чтобы не зависеть, на которой оболочке Вы используете. Обычно для основных сценариев, пишущий сценарии, предназначающиеся для Перенесенного Shell (/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
Если Вы работаете с ударом, можно сделать это с условными проверками:
#/bin/bash num="1" if [ $num -eq "1" ]; then echo "got 1" fi if [ $num -eq "2" ]; then echo "got 2" fi
if (( $(ps x | grep [a]pache2 | wc -l) > 0 ))
then
do_something
else
do_something_else
fi
или
case $(ps x | grep [a]pache2 | wc -l) in
0)
do_zero_thing
;;
1)
do_one_thing
;;
*)
do_default_thing
;;
esac
Квадратные скобки, используемые таким образом в grep
команда подавляет grep
самостоятельно от того, чтобы быть включенным в его собственный вывод. Это сделает количество 0 процесса, если апач не будет работать.