什么是 linux 脚本中的 start-stop-daemon?

Posted

技术标签:

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

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

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

【问题讨论】:

【参考方案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

【讨论】:

以上是关于什么是 linux 脚本中的 start-stop-daemon?的主要内容,如果未能解决你的问题,请参考以下文章

linux脚本中的冒号是啥意思? 第一行:read YN , 第二行 :$YN:=yes,第三行 case $YN in ...

linux脚本中的ps等命令问题

linux中的命令在shell脚本中怎么写

linux shell脚本学习

linux shell脚本中的开头#!/bin/bash的含义

linux__shell脚本编程