我正在为smartd编写一个SMF配置文件,我在各种示例中看到有两个选项:使用PID文件,如(from apcupsd)
echo "Stopping apcupsd power management ...\c"
if [ -f ${APCPID} ]; then
THEPID=`cat ${APCPID}`
kill ${THEPID} || return=" Failed."
rm -f ${APCPID}
else
return=" Failed."
fi
rm -f ${LOCKDIR}/apcupsd
echo "$return"或者完全跳过" stop“方法,例如使用this SMF generator,除了最小的":kill”命令之外不提供任何停止脚本。
在这两种情况下,看起来服务都被终止了。那么为什么要使用stop方法呢?
在我的特定情况下,smartd默认运行时没有PID,但我可以选择更改行为。
发布于 2018-04-29 20:24:24
在SMF方法命令中,:kill简单地表示....嗯,就是这样。与从外壳程序中执行kill命令的效果相同,除了SMF确保这是被终止的约定,即该约定的所有进程都终止。
您可以在"smf_method“的手册页中阅读有关:kill的信息
如果您没有指定任何
<exec_method type='method' name='stop' ..../>在您的清单中,SMF将使用:kill -SIGTERM作为停止命令。这适用于许多服务。因此,通常您可以拥有一个非常简单的SMF清单,它不需要很多行。
但是,在某些情况下,您可能需要更详细的stop方法,在这种情况下,您必须编写自己的方法。你的不是这样的情况。您的示例只使用了kill,因此它不会做任何事情,而不是SMF本身不能做的事情。你不需要它!
一些例子会让你想到一些场景,你可能想要使用显式的'stop‘方法:
kill (nice kill),如果X秒后没有杀死进程,则应该尝试执行kill -9。https://stackoverflow.com/questions/49623811
复制相似问题