Bug 7441 - server does not stop
: server does not stop
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/nginx)
: unstable
: all Linux
: P2 major
Assigned To:
:
:
:
:
: 14167
  Show dependency tree
 
Reported: 2005-07-22 10:40 by
Modified: 2008-01-25 21:53 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2005-07-22 10:40:22
worker processes does not die when service nginx stop
------- Comment #1 From 2005-07-22 14:59:33 -------
Я, видимо, не до конца понимаю логику работы start_stop_daemon.

Можете подсказать как это решить?
------- Comment #2 From 2005-07-22 20:15:38 -------
Ещё не копал, хотя killall nginx уже звучало.
------- Comment #3 From 2005-07-22 21:20:17 -------
killall я делать точно не буду
------- Comment #4 From 2005-09-17 21:04:58 -------
Пожалуйста, подскажите как правильно решить эту проблему.
Сейчас я этого сделать не могу.
------- Comment #5 From 2005-09-17 22:30:53 -------
Я бы подсказал, если бы был в курсе.
------- Comment #6 From 2007-07-19 11:40:11 -------
(In reply to comment #5)
> Я бы подсказал, если бы был в курсе.
А ты до сих пор не применяешь nginx? :)
------- Comment #7 From 2007-08-30 17:12:03 -------
Актуально для 0.5.31-alt1

2 lakostis: ты альтовой сборкой пользовался?
------- Comment #8 From 2007-08-30 17:55:41 -------
Значтак.  stop() фиксится как раз просто:

-   stop_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user root
--name nginx -- nginx
+   stop_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user root
--name nginx -- /usr/sbin/nginx

Следующий пациент -- upgrade(), которое дёргается на condrestart.  Сейчас
отдельно повешу, а это у меня в nginx.git сейчас будет (0.5.31-alt1.1).
------- Comment #9 From 2007-08-30 18:57:16 -------
Полный путь нужно указывать только в том случае, когда в $PATH есть другой
одноимённый executable.
Поэтому смысл замены nginx на /usr/sbin/nginx я не вижу.
------- Comment #10 From 2007-08-30 21:44:15 -------
Тем не менее хватило одной этой правки, чтоб застопалось (процесс имеет
обыкновение менять себе process title или как его).

Я помню, что в /etc/init.d/functions делалась довольно развесистая обработка,
но
сегодня пробегал только по диагонали... часом не сравнивалось с /proc/$PID/exe?
"# We need the absolute pathname for /proc/*/exe checks."

Ровно чтоб цепляло глаз -- во всех остальных вызовах оставил nginx, а не
$BINARY==/usr/bin/nginx -- мож когда кто доберётся, а сейчас по факту работает.

Там оказалось ещё несколько process related усложнений около upgrade(), ну да
это всё стопкой коммитов уже у меня в nginx.git и всё проверенное работает :)
------- Comment #11 From 2007-08-30 21:48:08 -------
WHICH="$(absolute "$NAME")" || return 1
Миша, откати скорее это изменение, оно ничего не исправляет.
Если у тебя что-то исправилось, то по другой причине.
------- Comment #12 From 2007-08-30 23:23:40 -------
Дим, оно, к сожалению, _исправило_ и я почти готов дать зуб, что именно
атомарное -- проверил пару раз.

Можно взять сборку 0.5.31-alt1, применить к ней только это изменение и
проверить, останавливается ли запущенный сервер, при помощи

service nginx restart
service nginx restart

Сегодня больше разборок не будет -- я ещё хочу до полуночи домой добраться.

Тот пакет, который сейчас -- рабочий для меня по меркам, принятым мной для
apache (а TODO там наоставлено, ещё на подход к инитскрипту хватит ;-).
------- Comment #13 From 2007-08-30 23:46:26 -------
Ой, а зачем --name?

Поменяйте на
stop_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user root --
nginx

Использование --name менее безопасно и в данном случае выглядит совершенно
ненужным.
------- Comment #14 From 2007-08-31 15:02:49 -------
fixed in 0.5.31-alt3.1 [0e8601f]
(пока не заливаю, ещё #12655)
------- Comment #15 From 2007-08-31 15:04:47 -------
(In reply to comment #14)
> fixed in 0.5.31-alt3.1 [0e8601f]
Точнее, [2e7557c] -- забыл спек закоммитить.
------- Comment #16 From 2007-08-31 17:09:21 -------
PS: в смысле было сделано

-       stop_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user
root --name nginx -- $BINARY
+       stop_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user
root -- nginx

Заливаю всё кучей.
------- Comment #17 From 2008-01-16 15:21:06 -------
бага все еще актуальна?
------- Comment #18 From 2008-01-20 01:53:38 -------
Нет.