Upstart 终止脚本启动的所有进程

Upstart 终止脚本启动的所有进程

因此我使用 Upstart[myscript]来启动一个脚本[A],该脚本启动另一个脚本[B],该脚本又启动一些其他脚本[GROUP C]

当我运行 时stop [myscript],我遇到了异常行为,其中[GROUP C]也停止了。 中的每个脚本[GROUP C]都以 启动&,并在后台运行。我很惊讶它们也被命令终止stop [myscript]。为什么会这样,我该如何防止这种情况发生?

编辑:基本上[myscript]如下:

pre-start script
          echo 'Starting myscript Daemon\n'
end script

script
        exec /foo/bar/myscript-start.sh
end script

post-stop script
        echo 'and apparently we are done....'
end script

答案1

暴发户终止进程组

由 kill 信号节指定的信号将发送到主进程的进程组。(这样,属于作业主进程的所有进程都会被杀死)。默认情况下,此信号为 SIGTERM。

为了避免这种情况,请使用 在新会话中启动子进程setsid,例如:

setsid top

ps ( ps -eo '%c %a %p %P %r') 将显示该进程具有唯一的进程组,并且父 pid 为 1。

答案2

看来您不明白脚本节是如何工作的。

开始前的段落

pre-start script
          echo 'Starting myscript Daemon\n'
end script

此脚本在主脚本之前启动,如果失败,启动顺序将失败。这通常用于允许第一个脚本启动的一些临时操作,这些操作不是守护进程(在后台持续运行)。示例:

pre-start script
    /lib/init/apparmor-profile-load usr.sbin.avahi-daemon
end script

script
    opts="-D"
    [ -e "/etc/eucalyptus/avahi-daemon.conf" ] && opts="${opts} -f /etc/eucalyptus/avahi-daemon.conf"
    exec avahi-daemon ${opts}
end script

如您所见,apparmor 配置文件首先从 DBus 加载(是的,如果您不了解 Ubuntu 的后端,这有点尴尬),然后按预期启动服务。此操作是为执行后会终止的进程设计的。

脚本节

script
        exec /foo/bar/myscript-start.sh
end script

这是程序中唯一需要持续运行的部分,upstart 必须跟踪其 PID。当您停止脚本时,此进程将终止。

停顿后节

post-stop script
        echo 'and apparently we are done....'
end script

这些节被设计为一种清理过程。它将在主脚本正常终止后执行。例如,apport:

post-stop script
    # Check for a hung resume.  If we find one try and grab everything
    # we can to aid in its discovery
    if [ -e /var/lib/pm-utils/status ]
    then
        ps -wwef > /var/lib/pm-utils/resume-hang.log
    fi

    if [ "`dd if=/proc/sys/kernel/core_pattern count=1 bs=1 2>/dev/null`" != "|" ]
    then
        exit 1
    else
        echo 0 > /proc/sys/fs/suid_dumpable
        echo "core" > /proc/sys/kernel/core_pattern
    fi
end script

它尝试检测未成功的从睡眠中恢复,并开始准备检测下一次挂起,以便生成有用的报告(是的,又很复杂,但这是我发现的最简单的脚本,除了ufw过于简单之外)。正如您所看到的,每个进程都会自行死亡,因为它可能会阻止系统关闭(在这种情况下,还有一个脚本可以发送TERM信号KILL给挂起的进程)。

底线是,您所经历的事情完全正常,并且是新贵所期望的行为。

相关内容