On 01.02.2015 13:21, kry...@ukr.net wrote: Вы запутались в синтаксических конструкциях шелла, которыми, увы, владеете совсем нетвердо.
> name=`echo $0 | sed 's/.*\///'` Потрассируем: name=mpd5 > rcvar=${name}_enable rcvar=mpd5_enable > var=`eval echo $name`_enable var=mpd5_enable > eval $var="NO" mpd5_enable=NO То есть, тут принудительно mpd5_enable сброшено в NO. Не думаю, что так задумано. > var1=`eval echo $name`_flags > eval $var1="-b" И тут тоже mpd5_flags принудительно сбрасывается в -b. Каждое использование обратных апострофов это запуск сабшелла, не надо так. Надо вот как: name=${0##*/} # а ещё лучше не извращаться и написать просто name=mpd5, так читабельней rcvar=$name_enable # тут будет rcvar=mpd5_enable eval var=\$$name_enable # тут будет var=$mpd5_enable Но и это тоже всё сплошь плохо читаемые и никому ненужные усложнения. Делайте нормально: name=mpd5 rcvar=$name_enable # или даже rcvar=mpd5_enable : ${mpd5_enable:=NO} # если mpd5_enable пусто, то присвоить NO, иначе не менять > Можно, конечно, monit поставить, и пусть следит за процессом, > но хотелось бы понять, что ж ему не хватает. См. выше. > Плюс, если кто знает, как можно проверить работоспособность > стартовых скриптов не перезагружая сервер. Как я понял, команды > start/stop не совсем показатель того, что все ок. start/stop показатель, если сам скрипт не содержит ошибок. А если сам скрипт сбрасывает mpd5_enable в NO... Такие ошибки можно искать через sh -x /usr/local/etc/rc.d/mpd5 start 2>&1