什么是使用诸如/etc/init.d/functions
执行daemon
以下任务的良好等效 centos 命令?
STARTCMD='start-stop-daemon --start --exec /usr/sbin/swapspace --quiet --pidfile /var/run/swapspace.pid -- -d -p'
STOPCMD='start-stop-daemon --stop --oknodo --quiet --pidfile /var/run/swapspace.pid'
它看起来daemon
将适用于启动命令并killproc
用于停止命令。
. /etc/init.d/functions
pushd /usr/sbin
daemon --pidfile /var/run/swapspace.pid /usr/sbin/swapspace
. /etc/init.d/functions
killproc -p $(cat /var/run/swapspace.pid)
CentOS 环境中是否需要 --oknodo(交换文件实际上只是启动时)?“oknodo - 如果没有采取任何操作,则返回退出状态 0 而不是 1。”
我没有看到daemon
或安静killproc
,但我无法想象这会有什么关系。
原始的 swapspace start-stop-daemon 似乎同时具有 -p 和 --pidfile(同一个命令)。那肯定是错误。
我遗漏了什么吗?知道为什么守护进程不创建 pid 文件吗?
答案1
它看起来
daemon
将适用于启动命令并killproc
用于停止命令。
这些只是在 中定义的 shell 函数/etc/rc.d/init.d/functions
。它们并不像 那样复杂start-stop-daemon
,但基本上就是您在 CentOS 上必须使用的内容。
在 CentOS 环境中是否需要它
--oknodo
(交换文件实际上只是启动时)?
daemon
并且killproc
没有该选项,所以您没有。daemon
如果进程已在运行,则会成功退出,所以没问题。我不确定killproc
会如何表现——您可能需要在调用它之前明确检查进程是否正在运行。
原始的 swapspace 启动-停止守护进程似乎同时具有
-p
和--pidfile
(相同的命令)。那肯定是一个错误。
不是:--pidfile
是 的参数start-stop-daemon
,而-p
是 的参数swapspace
。将 到 的参数与 到 正在启动的进程的参数--
分隔开。start-stop-daemon
我遗漏了什么吗?知道为什么守护进程不创建 pid 文件吗?
您需要传递-p
给swapspace
,如下所示:
daemon --pidfile /var/run/swapspace.pid /usr/sbin/swapspace -p