首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Solaris / illumos / OpenIndiana SMF清单停止服务?

如何使用Solaris / illumos / OpenIndiana SMF清单停止服务?
EN

Stack Overflow用户
提问于 2018-04-03 14:44:51
回答 1查看 86关注 0票数 0

我正在为smartd编写一个SMF配置文件,我在各种示例中看到有两个选项:使用PID文件,如(from apcupsd)

代码语言:javascript
复制
  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,但我可以选择更改行为。

EN

回答 1

Stack Overflow用户

发布于 2018-04-29 20:24:24

在SMF方法命令中,:kill简单地表示....嗯,就是这样。与从外壳程序中执行kill命令的效果相同,除了SMF确保这是被终止的约定,即该约定的所有进程都终止。

您可以在"smf_method“的手册页中阅读有关:kill的信息

如果您没有指定任何

代码语言:javascript
复制
 <exec_method type='method' name='stop'  ..../>

在您的清单中,SMF将使用:kill -SIGTERM作为停止命令。这适用于许多服务。因此,通常您可以拥有一个非常简单的SMF清单,它不需要很多行。

但是,在某些情况下,您可能需要更详细的stop方法,在这种情况下,您必须编写自己的方法。你的不是这样的情况。您的示例只使用了kill,因此它不会做任何事情,而不是SMF本身不能做的事情。你不需要它!

一些例子会让你想到一些场景,你可能想要使用显式的'stop‘方法:

  • 该服务自带了自己的启动/停止/重新启动脚本。在这种情况下,最好使用它,除非您知道它所做的事情是微不足道的,并且可以由SMF处理。
  • 该服务有一个替代的关闭方法,允许它干净地关闭。例如,Tomcat在本地主机上打开一个侦听端口,当您向该端口发送文本"SHUTDOWN“时,Tomcat将完全关闭。
  • 服务可能并不总是对kill命令做出反应。它可能需要一个更苛刻的方法,比如首先执行kill (nice kill),如果X秒后没有杀死进程,则应该尝试执行kill -9
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49623811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档