Демон Linux Остановка запуска-остановки-демона - PullRequest
1 голос
/ 12 октября 2011

У меня есть демон, которого я создаю в Linux.Я создал файл init.d и успешно запустил процесс демона, используя

/etc/init.d/mydaemon start

Когда я пытаюсь остановить его (с помощью /etc/init.d/mydaemon stop), он останавливается успешно, ноstart-stop-daemon, кажется, никогда не завершается, о чем свидетельствует отсутствие эха сразу после вызова start-stop-daemon

Подробный режим показывает, что он остановил процесс, и, глядя на системный монитор, он останавливаетprocess.

Stopped mydaemon (pid 13292 13310).

Вот моя функция остановки файла init.d.

do_stop()
{
    # Return
    #   0 if daemon has been stopped
    #   1 if daemon was already stopped
    #   2 if daemon could not be stopped
    #   other if a failure occurred
    start-stop-daemon --stop --name $NAME -v
echo "stopped"#This is never printed and the script never formally gives shell back.
    RETVAL="$?"

    [ "$RETVAL" = 2 ] && return 2

    # Wait for children to finish too if this is a daemon that forks
    # and if the daemon is only ever run from this initscript.
    # If the above conditions are not satisfied then add some other code
    # that waits for the process to drop all resources that could be
    # needed by services started subsequently.  A last resort is to
    # sleep for some time.
    start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON 
    [ "$?" = 2 ] && return 2
    # Many daemons don't delete their pidfiles when they exit.

    return "$RETVAL"
}

Я запускаю это на виртуальной машине, это как-то влияет?

1 Ответ

0 голосов
/ 19 мая 2014

Работа на виртуальной машине не должна влиять на это.И я понятия не имею, почему это происходит или как он контролирует родительский скрипт.

Однако я только что столкнулся с этой проблемой и обнаружил, что если я это сделаю:

start-stop-daemon ... && echo -n

это будет работать, как ожидалось, и освободит управление от оболочки.

Я понятия не имею, почему это работает, но похожена работу.

...