Re: core dump при обновлении на лету
Maxim Dounin
mdounin на mdounin.ru
Ср Ноя 16 15:37:24 UTC 2016
Hello!
On Wed, Nov 16, 2016 at 02:39:35PM +0000, Andriy Tovstik wrote:
> Добрый день!
>
> Столкнулся со следующей ситуацией.
> Платформа:
> # uname -a
> SunOS sunos 5.11 11.3 i86pc i386 i86pc
>
> Пытаюсь обновить бинарник на лету, согласно
> http://nginx.org/ru/docs/control.html#upgrade
> исходная версия nginx 1.11.3
> целевой бинарник nginx 1.11.5
>
> конфигурационный файл - дефолтный, без изменений.
>
> опции сборки:
> nginx version: nginx/1.11.3
> built by gcc 4.8.2 (GCC)
> configure arguments: --with-cc=gcc
>
> nginx version: nginx/1.11.5
> built by gcc 4.8.2 (GCC)
> configure arguments: --with-cc=gcc
>
> Как указано в мануале, заменяю бинарный файл, делаю
> kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
> после чего nginx падает в core dump:
[...]
> что я делаю не правильно?
Не раскрыта процедура "заменяю бинарный файл".
Если новый файл просто скопировать поверх старого с помощью cp -
будет как раз core dump скорее всего.
Нужно убрать старый файл в сторону (или удалить), после чего
положить новый с тем же именем:
mv /path/to/nginx /path/to/nginx.old
cp objs/nginx /path/to/nginx
Ну или положить рядом новый файл, а потом атомарно переименовать:
cp objs/nginx /path/to/nginx.new
mv /path/to/nginx.new /path/to/nginx
Важно, чтобы в результате не получилось так, что работающий
бинарник переписали по живому (и именно это сделает стандартный
cp), а вместо этого был создан новый файл с тем же именем.
При установке из исходников - правильные операции умеет
проделывать "make install", им и имеет смысл пользоваться.
--
Maxim Dounin
http://nginx.org/
Подробная информация о списке рассылки nginx-ru