ALT Linux Sisyphus discussions
 help / color / mirror / Atom feed
* [sisyphus] не отрабатывает нормально start-stop-deamon (имя процесса содержит пробелы)
@ 2014-05-07 16:00 Denis G. Samsonenko
  2014-05-07 16:47 ` Dmitry V. Levin
  0 siblings, 1 reply; 14+ messages in thread
From: Denis G. Samsonenko @ 2014-05-07 16:00 UTC (permalink / raw)
  To: sisyphus

День добрый!

Разбираясь с 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 теряются кавычки. Пытался по всякому их вкладывать и
экранировать -- не помогло.

Можно как-нибудь с этим справиться?

-- 
Всего доброго,

Денис.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [sisyphus] не отрабатывает нормально start-stop-deamon (имя процесса содержит пробелы)
  2014-05-07 16:00 [sisyphus] не отрабатывает нормально start-stop-deamon (имя процесса содержит пробелы) Denis G. Samsonenko
@ 2014-05-07 16:47 ` Dmitry V. Levin
  2014-05-07 20:35   ` Alexei V. Mezin
  0 siblings, 1 reply; 14+ messages in thread
From: Dmitry V. Levin @ 2014-05-07 16:47 UTC (permalink / raw)
  To: ALT Linux Sisyphus mailing list

[-- Attachment #1: Type: text/plain, Size: 2006 bytes --]

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

[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [sisyphus] не отрабатывает нормально start-stop-deamon (имя процесса содержит пробелы)
  2014-05-07 16:47 ` Dmitry V. Levin
@ 2014-05-07 20:35   ` Alexei V. Mezin
  2014-05-07 21:10     ` Michael Shigorin
  0 siblings, 1 reply; 14+ messages in thread
From: Alexei V. Mezin @ 2014-05-07 20:35 UTC (permalink / raw)
  To: sisyphus

07.05.2014 20:47, Dmitry V. Levin пишет:

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


Программа запускается как /usr/sbin/ddclient, но на самом деле это 
perl-скрипт, и exe->perl, а в init-скриптах про перл ни слова. В 
результате ничего не работает, ни stop, ни status.


[root@threebears ~]# service ddclientd status
ddclient is dead, but stale PID file exists

[root@threebears ~]# ps xau | grep ddclient
dyndns     928  0.0  0.9  16204  9232 ?        S    май06   0:42

[root@threebears ~]# ll /proc/928/exe
lrwxrwxrwx 1 dyndns dyndns 0 май  7 21:18 /proc/928/exe -> 
/usr/bin/perl5.16.3


Вот в дебиан что-то из той же темы обсуждали
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=202719

Но в нашем случае все куда печальнее, потому что cmdline постоянно 
меняется, ибо там "ddclient - sleeping for XX seconds", где XX все время 
меняется.



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [sisyphus] не отрабатывает нормально start-stop-deamon (имя процесса содержит пробелы)
  2014-05-07 20:35   ` Alexei V. Mezin
@ 2014-05-07 21:10     ` Michael Shigorin
  2014-05-07 21:29       ` Alexei V. Mezin
  0 siblings, 1 reply; 14+ messages in thread
From: Michael Shigorin @ 2014-05-07 21:10 UTC (permalink / raw)
  To: sisyphus

On Thu, May 08, 2014 at 12:35:33AM +0400, Alexei V. Mezin wrote:
> Программа запускается как /usr/sbin/ddclient, но на самом деле это 
> perl-скрипт, и exe->perl, а в init-скриптах про перл ни слова.
> В результате ничего не работает, ни stop, ни status.

Ммм... может иметь смысл глянуть 
http://fly.osdn.org.ua/~mike/tmp/sympa-4.1.2-alt1.nosrc.rpm
(там тоже перл).

-- 
 ---- WBR, Michael Shigorin / http://altlinux.org
  ------ http://opennet.ru / http://anna-news.info


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [sisyphus] не отрабатывает нормально start-stop-deamon (имя процесса содержит пробелы)
  2014-05-07 21:10     ` Michael Shigorin
@ 2014-05-07 21:29       ` Alexei V. Mezin
  2014-05-07 21:44         ` Dmitry V. Levin
  0 siblings, 1 reply; 14+ messages in thread
From: Alexei V. Mezin @ 2014-05-07 21:29 UTC (permalink / raw)
  To: sisyphus

08.05.2014 01:10, Michael Shigorin пишет:

> Ммм... может иметь смысл глянуть
> http://fly.osdn.org.ua/~mike/tmp/sympa-4.1.2-alt1.nosrc.rpm
> (там тоже перл).
>

Э-э-э, нет. Там все как-то слишком просто и примитивно. Типа "есть 
лок-файл -- приложение запущено, нет файла -- запустить". И статус 
проверяется через имя скрипта, а в нашем случае это не работает.

На первый взгляд работает вот так:

stop)
         stop_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" 
--expect-user dyndns  -- /usr/bin/perl

status)
         status --pidfile "$PIDFILE" --expect-user dyndns  -- /usr/bin/perl

Только неаккуратненько выходит: выключаешь сервис ddclient, а пишет что 
"perl остановлен".



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [sisyphus] не отрабатывает нормально start-stop-deamon (имя процесса содержит пробелы)
  2014-05-07 21:29       ` Alexei V. Mezin
@ 2014-05-07 21:44         ` Dmitry V. Levin
  2014-05-08 12:19           ` Denis G. Samsonenko
  0 siblings, 1 reply; 14+ messages in thread
From: Dmitry V. Levin @ 2014-05-07 21:44 UTC (permalink / raw)
  To: ALT Linux Sisyphus mailing list

[-- Attachment #1: Type: text/plain, Size: 904 bytes --]

On Thu, May 08, 2014 at 01:29:03AM +0400, Alexei V. Mezin wrote:
> 08.05.2014 01:10, Michael Shigorin пишет:
> 
> >Ммм... может иметь смысл глянуть
> >http://fly.osdn.org.ua/~mike/tmp/sympa-4.1.2-alt1.nosrc.rpm
> >(там тоже перл).
> >
> 
> Э-э-э, нет. Там все как-то слишком просто и 
> примитивно. Типа "есть лок-файл -- 
> приложение запущено, нет файла -- 
> запустить". И статус проверяется через 
> имя скрипта, а в нашем случае это не 
> работает.
> 
> На первый взгляд работает вот так:
> 
> stop)
>         stop_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" 
> --expect-user dyndns  -- /usr/bin/perl
> 
> status)
>         status --pidfile "$PIDFILE" --expect-user dyndns  -- /usr/bin/perl
> 
> Только неаккуратненько выходит: 
> выключаешь сервис ddclient, а пишет что "perl 
> остановлен".

start_daemon/stop_daemon/status --displayname ddclient


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [sisyphus] не отрабатывает нормально start-stop-deamon (имя процесса содержит пробелы)
  2014-05-07 21:44         ` Dmitry V. Levin
@ 2014-05-08 12:19           ` Denis G. Samsonenko
  2014-05-08 12:47             ` Denis G. Samsonenko
  2014-05-08 12:50             ` Alexei V. Mezin
  0 siblings, 2 replies; 14+ messages in thread
From: Denis G. Samsonenko @ 2014-05-08 12:19 UTC (permalink / raw)
  To: ALT Linux Sisyphus discussions

День добрый!

8 мая 2014 г., 4:44 пользователь Dmitry V. Levin написал:
> start_daemon/stop_daemon/status --displayname ddclient

Сделал так:

  stop)
        stop_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE"
--expect-user dyndns --displayname ddclient -- /usr/bin/perl ||
failure
        ;;
  status)
        status --pidfile "$PIDFILE" --expect-user dyndns --displayname
ddclient -- /usr/bin/perl
        ;;

Останов и проверка теперь отрабатывают нормально. Для запуска
используется такая запись:

  start)
        start_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE"
--user dyndns --expect-user dyndns  -- /usr/sbin/ddclient -daemon
"$CHECKTIME" || failure
        ;;

Вот тут есть трудность. Если сервис уже запущен, то эта ситуация не
распознаётся, и происходит повторный запуск сервиса. По идее,
start-stop-daemon проверяет, запущен ли уже сервис, и если запущен --
должен ничего не делать.

-- 
Всего доброго,

Денис.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [sisyphus] не отрабатывает нормально start-stop-deamon (имя процесса содержит пробелы)
  2014-05-08 12:19           ` Denis G. Samsonenko
@ 2014-05-08 12:47             ` Denis G. Samsonenko
  2014-05-08 12:53               ` Denis G. Samsonenko
  2014-05-08 12:50             ` Alexei V. Mezin
  1 sibling, 1 reply; 14+ messages in thread
From: Denis G. Samsonenko @ 2014-05-08 12:47 UTC (permalink / raw)
  To: ALT Linux Sisyphus discussions

День добрый!

8 мая 2014 г., 19:19 пользователь Denis G. Samsonenko написал:
>   start)
>         start_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE"
> --user dyndns --expect-user dyndns  -- /usr/sbin/ddclient -daemon
> "$CHECKTIME" || failure
>         ;;
>
> Вот тут есть трудность. Если сервис уже запущен, то эта ситуация не
> распознаётся, и происходит повторный запуск сервиса. По идее,
> start-stop-daemon проверяет, запущен ли уже сервис, и если запущен --
> должен ничего не делать.

Сделал так:

        start_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE"
--user dyndns --expect-user dyndns --displayname ddclient --
/usr/bin/perl /usr/sbin/ddclient -daemon "$CHECKTIME" || failure

Теперь вроде правильно работает.

-- 
Всего доброго,

Денис.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [sisyphus] не отрабатывает нормально start-stop-deamon (имя процесса содержит пробелы)
  2014-05-08 12:19           ` Denis G. Samsonenko
  2014-05-08 12:47             ` Denis G. Samsonenko
@ 2014-05-08 12:50             ` Alexei V. Mezin
  2014-05-08 12:55               ` Denis G. Samsonenko
  1 sibling, 1 reply; 14+ messages in thread
From: Alexei V. Mezin @ 2014-05-08 12:50 UTC (permalink / raw)
  To: sisyphus

08.05.2014 16:19, Denis G. Samsonenko пишет:

> Вот тут есть трудность. Если сервис уже запущен, то эта ситуация не
> распознаётся, и происходит повторный запуск сервиса. По идее,
> start-stop-daemon проверяет, запущен ли уже сервис, и если запущен --
> должен ничего не делать.
>

Может сразу стоит запускать /usr/bin/perl, а в параметры ему передавать 
имя скрипта?

И вообще: такая ситуация должна быть со всеми перловыми скриптами, 
которые пытаются работать через start-stop-daemon? Может надо какое-то 
полиси иметь по офрмлению скриптов-демонов?



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [sisyphus] не отрабатывает нормально start-stop-deamon (имя процесса содержит пробелы)
  2014-05-08 12:47             ` Denis G. Samsonenko
@ 2014-05-08 12:53               ` Denis G. Samsonenko
  2014-05-09 18:17                 ` Michael Shigorin
  0 siblings, 1 reply; 14+ messages in thread
From: Denis G. Samsonenko @ 2014-05-08 12:53 UTC (permalink / raw)
  To: ALT Linux Sisyphus discussions

День добрый!

> Сделал так:
>
>         start_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE"
> --user dyndns --expect-user dyndns --displayname ddclient --
> /usr/bin/perl /usr/sbin/ddclient -daemon "$CHECKTIME" || failure
>
> Теперь вроде правильно работает.

Теперь у меня есть ddclient-0.8.1, пропатченный на предмет поддержки
IPv6. На текущую версию 0.8.2 патч не накладывается, надо
адаптировать.

Есть ещё такой вопрос. ddclient лежит в /usr/sbin, в то время как
perl, необходимый ему для запуска лежит в /usr/bin. Может стоит
переложить ddclient туда же, где и perl?

-- 
Всего доброго,

Денис.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [sisyphus] не отрабатывает нормально start-stop-deamon (имя процесса содержит пробелы)
  2014-05-08 12:50             ` Alexei V. Mezin
@ 2014-05-08 12:55               ` Denis G. Samsonenko
  0 siblings, 0 replies; 14+ messages in thread
From: Denis G. Samsonenko @ 2014-05-08 12:55 UTC (permalink / raw)
  To: ALT Linux Sisyphus discussions

Привет!

8 мая 2014 г., 19:50 пользователь Alexei V. Mezin написал:
> И вообще: такая ситуация должна быть со всеми перловыми скриптами, которые
> пытаются работать через start-stop-daemon?

Видимо так и придётся делать.


-- 
Всего доброго,

Денис.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [sisyphus] не отрабатывает нормально start-stop-deamon (имя процесса содержит пробелы)
  2014-05-08 12:53               ` Denis G. Samsonenko
@ 2014-05-09 18:17                 ` Michael Shigorin
  2014-05-09 18:41                   ` Paul Wolneykien
  0 siblings, 1 reply; 14+ messages in thread
From: Michael Shigorin @ 2014-05-09 18:17 UTC (permalink / raw)
  To: ALT Linux Sisyphus discussions

On Thu, May 08, 2014 at 07:53:05PM +0700, Denis G. Samsonenko wrote:
> Есть ещё такой вопрос. ddclient лежит в /usr/sbin, в то время
> как perl, необходимый ему для запуска лежит в /usr/bin. Может
> стоит переложить ddclient туда же, где и perl?

Зачем бы?  Скрипту скриптово, интерпретатору интерпретаторово.

-- 
 ---- WBR, Michael Shigorin / http://altlinux.org
  ------ http://opennet.ru / http://anna-news.info


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [sisyphus] не отрабатывает нормально start-stop-deamon (имя процесса содержит пробелы)
  2014-05-09 18:17                 ` Michael Shigorin
@ 2014-05-09 18:41                   ` Paul Wolneykien
  2014-05-12 10:24                     ` Rinat Bikov
  0 siblings, 1 reply; 14+ messages in thread
From: Paul Wolneykien @ 2014-05-09 18:41 UTC (permalink / raw)
  To: sisyphus

09.05.2014 22:17, Michael Shigorin пишет:
> On Thu, May 08, 2014 at 07:53:05PM +0700, Denis G. Samsonenko wrote:
>> Есть ещё такой вопрос. ddclient лежит в /usr/sbin, в то время
>> как perl, необходимый ему для запуска лежит в /usr/bin. Может
>> стоит переложить ddclient туда же, где и perl?
> 
> Зачем бы?  Скрипту скриптово, интерпретатору интерпретаторово.
> 

  В смысле, что позволено интерпретатору, не позволено скрипту? :-)


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [sisyphus] не отрабатывает нормально start-stop-deamon (имя процесса содержит пробелы)
  2014-05-09 18:41                   ` Paul Wolneykien
@ 2014-05-12 10:24                     ` Rinat Bikov
  0 siblings, 0 replies; 14+ messages in thread
From: Rinat Bikov @ 2014-05-12 10:24 UTC (permalink / raw)
  To: ALT Linux Sisyphus discussions

9 мая 2014 г., 22:41 пользователь Paul Wolneykien написал:
>> Зачем бы?  Скрипту скриптово, интерпретатору интерпретаторово.
>
>   В смысле, что позволено интерпретатору, не позволено скрипту? :-)

Скорее что позволено скрипту - то не позволено интерпретатору :).

-- 
С уважением, Ринат Биков.

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2014-05-12 10:24 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-05-07 16:00 [sisyphus] не отрабатывает нормально start-stop-deamon (имя процесса содержит пробелы) Denis G. Samsonenko
2014-05-07 16:47 ` Dmitry V. Levin
2014-05-07 20:35   ` Alexei V. Mezin
2014-05-07 21:10     ` Michael Shigorin
2014-05-07 21:29       ` Alexei V. Mezin
2014-05-07 21:44         ` Dmitry V. Levin
2014-05-08 12:19           ` Denis G. Samsonenko
2014-05-08 12:47             ` Denis G. Samsonenko
2014-05-08 12:53               ` Denis G. Samsonenko
2014-05-09 18:17                 ` Michael Shigorin
2014-05-09 18:41                   ` Paul Wolneykien
2014-05-12 10:24                     ` Rinat Bikov
2014-05-08 12:50             ` Alexei V. Mezin
2014-05-08 12:55               ` Denis G. Samsonenko

ALT Linux Sisyphus discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \
		sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru
	public-inbox-index sisyphus

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.sisyphus


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git