[sisyphus] не отрабатывает нормально start-stop-deamon (имя процесса содержит пробелы)

Dmitry V. Levin ldv на altlinux.org
Ср Май 7 20:47:38 MSK 2014


On Wed, May 07, 2014 at 11:00:41PM +0700, Denis G. Samsonenko wrote:
> День добрый!
> 
> Разбираясь с ddclient обнаружил, что не отрабатывает останов сервиса.
> Процесс продолжает работать после останова. Соответственно повторный
> запуск запускает ещё один процесс. То же самое происходит при рестарте
> сервиса.
> 
> Покопавшись в /rc.d/init.d/ddclientd и /rc.d/init.d/functions понял,
> что start-stop-daemon не находит процесс ddclient.
> 
> $ ps ax |grep ddclient
> 8562 ?        S      0:00 ddclient - sleeping for 30 seconds
> 
> $ cat /proc/8562/cmdline
> ddclient - sleeping for 30 seconds
> 
> $ cat /proc/8562/stat
> 8562 (ddclient - slee) S 1 8481 8481 0 -1 1077944384 999 3150 0 0 2 0
> 0 1 20 0 1 0 5329363 30277632 1811 18446744073709551615 4194304
> 4198956 140736794566528 140736794565432 140013415770624 0 0 128 16385
> 18446744071579414165 0 0 17 2 0 0 0 0 0 6299072 6299804 6303744
> 140736794570065 140736794570112 140736794570112 140736794570725 0
> 
> На сколько я понял, start-stop-daemon сверяет заданное имя процесса с
> тем, что находит в /proc/[pid]/stat, а там оно оказывается таким:
> "ddclient - slee".
> 
> Ручной запуск start-stop-daemon с параметром --name "ddclient - slee"
> отрабатывает нормально:
> 
> # start-stop-daemon --stop --test --name "ddclient - slee" --pidfile
> /var/run/ddclient/ddclient.pid
> Would send signal 15 to 8562.
> 
> 
> Если же запустить с --name ddclient, то отработает с ошибкой:
> 
> # start-stop-daemon --stop --test --name ddclient --pidfile
> /var/run/ddclient/ddclient.pid
> No ddclient found running; none killed.
> 
> 
> Попытка подсунуть --name "ddclient - slee" в /rc.d/init.d/ddclientd не
> приводит к успеху. По видимому где-то по дороге к вызову
> start-stop-daemon теряются кавычки. Пытался по всякому их вкладывать и
> экранировать -- не помогло.
> 
> Можно как-нибудь с этим справиться?

Не используйте --name, идентификация по /proc/<pid>/exe гораздо надежнее.


-- 
ldv
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 198 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/sisyphus/attachments/20140507/02b833c8/attachment.bin>


Подробная информация о списке рассылки Sisyphus