什么是 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 ...