0547-CM Server和Agent服务停止脚本说明

1 文档编写目的

在前面的文章《0520-如何使用非root用户启动CM的Server和Agent服务》中,Fayson介绍过在CDH5中,无论是Cloudera Manager Server还是Agent服务都无法配置为其他用户来启停,只能通过root用户来管理。这里假设我们有root用户或者有sudo(ALL)权限的普通用户,但我们依旧不想通过系统自带的system或者systemctl来操作这2个服务,而是直接操作CM Server和Agent的脚本文件。本篇文章Fayson主要说明CDH5和CDH6版本中cloudera-scm-server和cloudera-scm-agent服务停止脚本的变化。

  • 测试环境

1.CDH6.1.0

2.CDH5.15.0

2 CDH5中CM和Agent服务停止脚本实现

在CDH5中这两个服务的启停方式是在/etc/init.d目录下提供两个shell脚本cloudera-scm-agent和cloudera-scm-server,脚本中停止服务的方式是调用了local_killproc函数

local_killproc函数中最终调用的是/etc/init.d/functions脚本中的killproc函数

cloudera-scm-server和cloudera-scm-agent服务的最终停止脚本是通过服务的pid文件找到服务的找到服务的进程ID使用kill命令杀掉进程从而实现停止服务。

3 CDH6中CM和Agent服务停止脚本实现

在C6中启停cloudera-scm-agent和cloudera-scm-server服务的方式与C5有一定的区别,可以说C5下两个服务的启停方式使用的是RedHat6下通过将shell脚本注册为OS的Service,通过Service命令stop服务,终止是通过kill的方式杀掉集成而停止服务。

而在C6下完全抛弃了Redhat6中通过Service的方式管理服务,而是使用systemctl的方式管理服务。通过Systemctl的方式管理服务,最终服务的启停会在/usr/lib/system/system目录下创建cloudera-scm-server和cloudera-scm-agent服务启停,该文件只是配置文件,不属于shell脚本

在定义的两个配置文件中可以看到ExecStart参数指定了服务的启动脚本,systemd只支持预定义的Action,如:ExecStart, ExecStartPre, ExecStartPost, ExecStop, and ExecReload,在两个服务的定义脚本中并未指定ExecStop执行脚本(推测systemctl stop操作是调用RedHat7默认的操作),因此cloudera-scm-agent和cloudera-scm-server两个服务并未提供stop的脚本。

4 总结

1.在CDH5中,cloudera-scm-agent和cloudera-scm-server两个服务并未提供单独停止服务的脚本,但启动脚本中有相应的停止函数,是直接调用的kill进程的函数。

2.在CDH6中,cloudera-scm-agent和cloudera-scm-server两个服务也未单独提供停止服务的脚本,启动脚本中也没有停止函数。

3.在CDH6中,cloudera-scm-agent和cloudera-scm-server两个服务如果需要停止建议使用systemctl stop执行进行操作,依靠RedHat默认的机制实现服务的停止动作。

4.对于CDH6,如果需要手动操作脚本停止服务,也可以参照CDH5版本的停止方式,通过kill的方式将进程停止。

本篇文章有个疑问,在RedHat7系统下,ExecStop参数未配置停止服务的脚本时,默认是通过什么方式停止服务的?是否和RedHat6一样也是通过kill进程的方式暴力停止?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值