【问题标题】:What is start-stop-daemon in linux scripting?什么是 linux 脚本中的 start-stop-daemon?
【发布时间】:2013-04-14 22:21:42
【问题描述】:

什么是start-stop-daemon,应该如何使用?

我正在尝试使特定程序自动运行。每当系统启动时,程序都应该运行。为此,我正在/etc/init.d/ 位置编写脚本。

【问题讨论】:

    标签: linux shell init.d start-stop-daemon


    【解决方案1】:

    它是一个管理系统级后台进程(守护进程)启动和停止的程序。您可以通过为要启动的进程传入参数(例如要创建/检查的 pid 文件)和命令参数来使用它。

    然后,你做两件事之一:

    start-stop-daemon -S [other arguments] something

    启动 something,如果 something 尚未运行。如果它正在运行,什么也不做。

    start-stop-daemon -K [other arguments] something

    停止something。如果something 没有运行,什么也不做。

    man page 提供有关各种参数的更多信息。通常,/etc/init.d/ 中提供了一个模板,该模板具有用于控制后台进程运行的 init 进程的其他命令。


    什么意思?

    start-stop-daemon --start --background -m --oknodo --pidfile ${PIDFILE} --exec ${DAEMON} -- ${TARGETDIR}

    • --background = 作为后台进程启动
    • -m = 创建一个 PID 文件。这在您的进程没有创建自己的 PID 文件时使用,并且与 --background 一起使用
    • --oknodo = 返回0,而不是1,如果守护进程没有采取任何行动
    • --pidfile ${PIDFILE} = 检查 PID 文件是否已创建
    • --exec = 确保进程是这个可执行文件的实例(在你的情况下,DAEMON

    【讨论】:

    • 它是通用的吗?在 debian 上,它似乎来自 dpkg 包。我想知道这是否也是由其他同名发行版提供的,或者他们是否使用其他工具。
    • @ychaouche 不,不是。例如,基于 RedHat 的发行版根本不使用它。我只希望它可以在基于 Debian 的系统(即 Debian、Ubuntu 和衍生产品)上工作。
    【解决方案2】:

    复制/etc/init.d/skeleton file(例如/etc/init.d/rajeevdaemon 或其他好名字),这是一个包含许多cmets 的shell 脚本,并根据您的需要对其进行编辑。然后添加适当的符号链接,例如/etc/rc2.d/S98rajeevdaemon/etc/rc2.d/K98rajeevdaemon 给它。

    阅读更多关于runlevels的信息。

    最近(或未来)的 Linux 发行版正在使用越来越多的 systemd

    【讨论】:

      猜你喜欢
      • 2015-10-04
      • 1970-01-01
      • 1970-01-01
      • 2012-06-23
      • 2014-10-25
      • 1970-01-01
      • 2022-01-22
      • 2016-07-03
      • 1970-01-01
      相关资源
      最近更新 更多