Разделение конфигурационных файлов является способом управлять ими. Путем помещения строк конфигурации, характерных для модуля в их собственные файлы, становится намного легче включить и отключить модули. Это также помогает управлению ими, потому что теперь у Вас только есть маленький конфигурационный файл для редактирования. (Предположите открывать 500 строк httpd.conf и искать неправильную опцию.)
Различные системы, кажется, имеют различные способы разделить апачские конфигурационные файлы. Например, на моем хинду существуют modules.d/
и vhosts.d/
, в то время как на моей Ubuntu существует conf.d/
, mods-available/
, mods-enabled/
, sites-available/
и sites-enabled/
. Можно предположить то, что они делают именем или смотрят внутри httpd.conf для Include
строки.
Попытайтесь перенестись $(...)
в двойных кавычках:
if [ -z "$(ps aux | grep '[n]m-applet')" ]; then
Но Вы могли бы хотеть попытаться использовать pgrep
или ps axo cmd | grep '[n]m-applet'
вместо этого.
Та ошибка прибывает из предоставления нескольких аргументов-z. Это - унарный оператор, и если $()
расширяется до чего-то с $IFS в нем, это будет видеть несколько аргументов. Для фиксации этого можно поместить кавычки вокруг этого как так: [ -z "$(ps...)" ]
.
В этом случае Вам на самом деле не нужен тест ([]
) потому что grep возвратится ненулевой, если он ничего не найдет. Можно сделать:
if ps aux | grep '[n]m-applet' > /dev/null; then
И Вы могли бы хотеть видеть, планируете ли системы Вы развертывание этого, чтобы иметь pgrep
. Это, сделан для поиска процессов, которые соответствуют шаблону.
Кроме того, Вы могли бы хотеть сценарий к не фон nm-апплет. Таким образом, сценарий заблокируется, пока nm-апплет не умирает.
Наконец, Вы могли бы хотеть посмотреть на Monit, который сделан для того, чтобы сделать то, что делает Ваш сценарий.
-s
к grep или близкому stdout (>&-
) предотвратить вывод, добирающийся до пользователя.
– Arcege
26.08.2011, 05:21
Я не уверен в Ваших причинах while [ true ]; do
и я предложение второго Arcege для использования pgrep
.
#!/bin/bash
while true; do
if ! pgrep nmapplet &>/dev/null; then
echo "Bugger died, resurrecting..."
nm-applet &>/dev/null
disown $!
fi
sleep 3
done