Остановка делается таким скриптом:
PID=`cat /var/run/apache2.pid`<br/>
kill -TERM $PID<br/>
if [ -n "${PID:-}" ]; then<br/>
i=0<br/>
while kill -0 "${PID:-}" 2> /dev/null; do<br/>
if [ $i = '60' ]; then<br/>
break;<br/>
else<br/>
if [ $i = '0' ]; then<br/>
echo -n " waiting "<br/>
else<br/>
echo -n "."<br/>
fi<br/>
i=$(($i+1))<br/>
sleep 1<br/>
fi<br/>
done<br/>
fi
В итоге скрипт отрабатывает даже без ожидания (не рисует точечки), потом запускается некий скрипт, который работает с базой и т.д. (порядка 10-20 секунд) еще, а потом запускается Apache. Но в итоге имем ошибку:
(98)Address already in use: make_sock: could not bind to address 127.0.0.1:80<br/>
no listening sockets available, shutting down<br/>
Unable to open logs
Из которой видно, что старый апач так и висит запущенный. Где-то через 2-3 минуты удается запустить новую копию. Собственно вопрос, почему же он такой медленный на умирание. Раньше такого не наблюдалось, заметил это только после обновления Nginx на последнюю версию (apache — бэкэнд, nginx — фронтэнд).
P.S. nginx убивается прямо ПЕРЕД apache такой командой:
kill -TERM `cat /var/run/nginx/nginx.pid`
P.P.S. Apache/2.2.14 (Ubuntu), nginx/1.1.0, Ubuntu 10 LTS Server