百度智能云服务器HAS组件卸载

摘要

本文介绍了在百度智能云服务器上卸载HAS组件的方案。

前言

之前在给我百度智能云的VPS服务器重新安装HostEye[1]的时候,我一不小心脑袋一昏,往服务器上误装了百度云的HAS组件。这篇文章主要介绍如何从服务器上移除这个HAS组件。

什么是HAS组件

HAS组件,全名Hardware Aware Service,是百度智能云提供给云服务器宿主机(或者类似的裸金属服务器)的全套硬件自动化管理的软件,能够提供智能化的硬件状态管理、事件监控与推送、硬件维修等能力。相关文档链接如下

https://cloud.baidu.com/doc/BCC/s/bmgyqvtdx

https://cloud.baidu.com/doc/BEC/s/imfz6c6ro

https://cloud.baidu.com/doc/BCC/s/Olwg5cnbw

为什么我需要卸载它

就如我刚刚所说,HAS组件是提供给宿主机的用于硬件管理的软件,而我购买的是百度云的VPS[2],这是一个云上的虚拟机,而HAS组件在虚拟机中是完全没有任何实际作用的。

而且HAS组件安装后也是要一直在后台运行的,这个组件占用对于宿主机来说九牛一毛,但是对于低配置的VPS服务器来说还是不容忽视的。如图1所示,这是我截取我服务器各程序硬盘IO占用率的截图,红色方框圈出的是则是has组件占用的硬盘资源详情数据。

 服务器硬盘IO占用率各程序的截图
图1 服务器各程序的硬盘IO占用率的截图

当然,这里要声明一点。百度智能云VPS服务器默认镜像是没有HAS组件的,我是一不小心误安装的该组件。如果您是非VPS服务器用户,不推荐卸载HAS组件。

检查我的服务器是否安装了HAS组件

我们可以通过检查/home/opt 这个目录下面,看下是否有has、has-agent这两个文件夹,如果有,代表您服务器上安装了has组件,如图2所示。

/home/opt目录下的文件夹截图
图2 /home/opt目录下的文件夹截图

当然我们也可以通过查看进程,来判断系统中是否存在HAS组件,查找命令如下。

ps aux |grep has

如果有下列的进程运行的话,说明您系统上存在HAS组件,命令运行截图如图3所示。

root        3935  0.0  0.0   6304   328 ?        Ss   Feb27   0:00 /opt/avalokita/bin/avalokita --update-url=http://has-master-a.sdns.baidu.com/download/qa_packages/bbc//has-agent-installer.sh --signature-url=http://has-master-a.sdns.baidu.com/download/qa_packages/bbc//has-agent-installer.sh.sig --certificate=/home/opt/has-agent/cert.pem --update-interval=3600 --max-executable-size=1000000000 /home/opt/has-agent/has-agent-installer.sh
root       68133  0.0  0.1  10540  2996 ?        S    Feb27   0:00 bash /home/opt/has-agent/test.sh
root       71543  0.1  0.4 393256  8176 ?        Ssl  Feb27   4:00 /home/opt/has/has_client/has_agent
root       71888  0.0  0.1 1608004 2248 ?        Sl   Feb27   0:02 /home/opt/has/hdoctor/check/logcheck --gpu=20
root       71964  0.0  0.0   1444    64 ?        Ss   Feb27   0:00 /home/opt/has/hdoctor/monitor/plugins/mcelog/checkmce --config-file /home/opt/has/hdoctor/monitor/plugins/mcelog/conf/mcelog.conf --daemon
ps aux |grep has命令在存在HAS的时候的运行结果截图
图3 ps aux |grep has命令在存在HAS的时候的运行结果截图

如何卸载

备注:截止到本文写完(2026年3月3日),最新的HAS版本为1.1.3.144,本文示范的版本也是1.1.3.144。

操作需要重启,且有可能造成服务中断,请务必在修改前对服务器进行备份(比如使用快照功能)。

本文中的操作系统是Ubuntu 24.04。

我自己找到的卸载方案

我自己经过多次实验,总结了下述的卸载方案。首先,前往/home/opt/has-agent/output这个文件夹,在这个文件夹中,有文件叫做standalone.sh。我们在这个文件夹路径下执行下述命令(注意,后续操作都需要root权限)

sh standalone.sh stop

这个命令用于停止HAS服务,执行成功会在终端输出success(我运行的时候,会输出两个success),如图4所示。

sh standalone.sh stop执行后的终端输出截图
图4 sh standalone.sh stop执行后的终端输出截图

执行完成后,再执行下列命令。

sh standalone.sh delservice

此命令用于删除HAS的服务,此命令执行后没有任何输出。执行完后接下来继续执行下面的命令

sh standalone.sh uninstall

这个命令就是用于卸载HAS组件包,此过程可能需要一些时间才能完成,如果运行正常,终端应该输出如图5中所示,有很多个success。

sh standalone.sh uninstall执行成功后的终端输出结果
图5 sh standalone.sh uninstall执行成功后的终端输出结果

当然,如果终端输出failed,如图6所示,代表卸载失败了。您可以尝试重试(经过我多次测试,第一次失败,再执行一次基本上都能成功,我猜测可能是临时有进程占用了文件)。

sh standalone.sh uninstall执行失败后的终端输出结果
图6 sh standalone.sh uninstall执行失败后的终端输出结果

执行完上述命令后,系统中还是有一些残留的东西,crontab中的HAS组件用于保活的计划任务并没有在上述流程中被删除掉。我们输入下述命令

crontab -l | grep has_control

会输出下面的内容(输出截图如图7),这个条目就是HAS残留的计划任务


*/10 * * * * /home/opt/has/has_control keepalive > /dev/null 2>&1、
图7 crontab -l | grep has_control的输出结果

我们执行下述命令移除这个计划任务

sudo crontab -l | grep -vF '/home/opt/has/has_control keepalive' | sudo crontab -

执行完成后重启服务器。重启后重新前往/home/opt这个目录,可以看到这个目录下只有has-agent这个文件夹了,如图8所示。我们直接删除掉这个文件夹就可以了。

卸载HAS完成后/home/opt目录文件截图
图8 卸载HAS完成后/home/opt目录文件截图

然后我们再次执行ps aux |grep has,可以看到结果如图9所示,没有HAS相关的进程了。(备注:程序会输出一个进程,但这个进程是当前的查找程序的进程,并不是残留的HAS进程)

卸载HAS完成后ps aux |grep has的输出结果
图9 卸载HAS完成后ps aux |grep has的输出结果

咨询百度智能云,他们提供的卸载方案

我也问了百度智能云,咨询了是否有相关的删除方案,他们也提供了一种方案。(我感觉这种方案比较暴力,也能卸载掉HAS,但是会有一些残留),下面是他们提供的方案(反馈截图如图10所示)。

先对机器做个镜像备份,然后执行 rm -rf /home/opt/has-agent/  /home/opt/has 删除整个目录,然后ps aux |grep has ,使用kill -9 把这些进程(进程号在图10中有所展示)一个一个删除掉。

百度云工程师回复卸载方案的截图
图10 百度云工程师回复卸载方案的截图

参考

  1. ^Host Eye是百度的一个用于云服务器的安全软件,官方文档:https://cloud.baidu.com/doc/HOSTEYE/index.html
  2. ^百度智能云将其VPS产品称之为BCC,产品介绍文档:https://cloud.baidu.com/doc/BCC/index.html

--------------

本文标题为:

百度智能云服务器HAS组件卸载

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,记得载明出处。
内容有问题?想与我交流下?点此哦,欢迎前来交流~
上一篇