* [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: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: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
* 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: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
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