Summary: | status | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Chess <slchess> |
Component: | starman | Assignee: | Vladimir Lettiev <crux> |
Status: | ASSIGNED --- | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P3 | CC: | crux, enp, imz, ldv |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
Chess
2012-07-10 09:51:22 MSK
starman меняет имя процесса, как и показано в выводе команды ps. start-stop-daemon сверяет то, то что передано в параметре --name с содержимым /proc/<PID>/stat, где содержится первые 15 символов имени процесса, в данном случае это "starman master ". Судя по коду /etc/init.d/functions передать параметр --name с пробелами невозможно, поэтому придётся в init-скрипте starman дублировать код из /etc/init.d/functions для status и stop. Или, как вариант, повесить фич-реквест на service? (В ответ на комментарий №1)
> starman меняет имя процесса, как и показано в выводе команды ps.
>
> start-stop-daemon сверяет то, то что передано в параметре --name с содержимым
> /proc/<PID>/stat, где содержится первые 15 символов имени процесса, в данном
> случае это "starman master ". Судя по коду /etc/init.d/functions передать
> параметр --name с пробелами невозможно, поэтому придётся в init-скрипте starman
> дублировать код из /etc/init.d/functions для status и stop. Или, как вариант,
> повесить фич-реквест на service?
А чем плох такой вариант
--- starman.orig 2013-03-21 12:17:03.856200891 +0000
+++ starman 2013-03-21 12:17:09.314201894 +0000
@@ -31,7 +31,7 @@
stop()
{
- stop_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user _starman --retry -15/300 --name starman -- starman
+ action $"Stopping starman service:" start-stop-daemon --stop --pidfile $PIDFILE
RETVAL=$?
return $RETVAL
}
(In reply to comment #2) > (В ответ на комментарий №1) > > starman меняет имя процесса, как и показано в выводе команды ps. > > > > start-stop-daemon сверяет то, то что передано в параметре --name с содержимым > > /proc/<PID>/stat, где содержится первые 15 символов имени процесса, в данном > > случае это "starman master ". Судя по коду /etc/init.d/functions передать > > параметр --name с пробелами невозможно, поэтому придётся в init-скрипте starman > > дублировать код из /etc/init.d/functions для status и stop. Или, как вариант, > > повесить фич-реквест на service? > > А чем плох такой вариант > > --- starman.orig 2013-03-21 12:17:03.856200891 +0000 > +++ starman 2013-03-21 12:17:09.314201894 +0000 > @@ -31,7 +31,7 @@ > > stop() > { > - stop_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user > _starman --retry -15/300 --name starman -- starman > + action $"Stopping starman service:" start-stop-daemon --stop --pidfile > $PIDFILE > RETVAL=$? > return $RETVAL > } Тем, что убьет не глядя любой процесс с указанным pid'ом. (В ответ на комментарий №3) > (In reply to comment #2) > > (В ответ на комментарий №1) > > Тем, что убьет не глядя любой процесс с указанным pid'ом. но pid записал starman при запуске, а не mysql например, убьет он того кого нужно Это что хуже того что init скрипт вообще не может убить starman и приходится делать чтото вроде pkill -9 starman && service starman start если все равно рабочего решения нет а интересно, systemd что убивает не по pid-у который поймал при запуске? По аналогии со start_daemon, можно добавить --check в stop_daemon и status. (In reply to comment #4) > а интересно, systemd что убивает не по pid-у который поймал при запуске? systemd завершает все процессы из соответствующей cgroup'ы. (В ответ на комментарий №5)
> По аналогии со start_daemon, можно добавить --check в stop_daemon и status.
Давайте добавим
|