移植以使用 CentOS init.d 函数

移植以使用 CentOS init.d 函数

什么是使用诸如/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 文件吗?

您需要传递-pswapspace,如下所示:

daemon --pidfile /var/run/swapspace.pid /usr/sbin/swapspace -p

相关内容