Originally Posted by
lly
busybox меняется, какие-то баги чинятся, новые появляются...
Вывод из консоли:
Code:
pilson@pilson-router pilson:$ env | grep PATH
PATH=/opt/sbin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Вывод из веб-интерфейса, через "External command":
Code:
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
Наверняка при ребуте используется тот же порядок что и при выполнении из web-интерфейса.
Можно попробовать в pre-shutdown экспортировать PATH такого же вида как и в консоли.
**********
UPD: Немного поковырялся. Нарыл следующее: При ребуте запускается "/opt/etc/init.d/pre-shutdown", который запускает в свою очередь "/bin/sh /opt/etc/init.d/rc.stop".
rc.stop, в свою очередь, запускает скрипты остановки демонов. скрипты отрабатывают, но демоны не прибиваются полностью, превращаясь в зомби-процессы:
Code:
root 422 0.0 0.0 0 0 ? Zs 13:24 0:00 [cron] <defunct>
root 424 0.2 0.0 0 0 ? Zs 13:24 0:00 [php-fcgi] <defunct>
root 431 0.0 0.0 0 0 ? Z 13:24 0:00 [php-fcgi] <defunct>
root 455 0.0 0.2 1380 380 ? Ss 13:25 0:00 /bin/sh /usr/local/sbin/pre-shutdown
root 472 0.0 0.3 1384 412 ? S 13:25 0:00 /bin/sh /opt/etc/init.d/rc.stop
root 476 0.0 0.3 1380 392 ? S 13:25 0:00 /bin/sh /opt/etc/init.d/S70php-fcgi stop
root 477 0.0 0.2 1072 352 ? S 13:25 0:00 /opt/bin/killall -q -w /opt/bin/php-fcgi
Отсюда видно, что /opt/bin/killall ожидает пока php-fcgi убьется окончательно, ну и соответственно дальше ничего не происходит, ибо выполнение висит на этой строке скрипта.
Так вот, собственно, вопрос: Почему при остановке демона из консоли все проходит отлично, и при остановке через ребут - он остается висеть как зомби?
Думаю что решив эту проблему - решится "неперегружание" если не у всех, то у многих.