扫码阅读
手机扫码阅读

运维排查 | Systemd 之服务停止后状态为 failed

185 2024-07-19

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:运维排查 | Systemd 之服务停止后状态为 failed
文章来源:
咸鱼运维杂谈
扫码关注公众号

摘要

本文介绍了在CentOS 7中使用Systemd来管理服务的情况,特别是在软件没有提供Systemd管理方案或通过源码编译安装的情况下,需要手动编写Systemd服务文件(service 文件)。

作者尝试为通过源码编译安装的zookeeper编写Systemd服务文件,并说明了服务文件的结构和配置。服务文件包括[Unit]部分,描述了服务的启动顺序;[Service]部分,定义了启动和停止服务的命令和类型;[Install]部分,定义了如何安装配置文件以实现开机启动。

作者发现,在使用Systemd启动和停止zookeeper服务时,尽管服务操作命令本身执行成功,但是服务状态在停止后显示为failed。分析后发现,主进程在退出时返回的状态码是143,而不是预期的0。

作者解释了当zookeeper进程接收到SIGTERM信号时,会返回143作为退出状态码,这是由POSIX规范决定的。Systemd将此状态码解释为异常退出,而不是成功。

为了解决这个问题,作者在zookeeper的service文件中添加了SuccessExitStatus=143的配置,使得当服务进程以状态码143退出时,Systemd将其视为成功退出。

想要了解更多内容?

查看原文:运维排查 | Systemd 之服务停止后状态为 failed
文章来源:
咸鱼运维杂谈
扫码关注公众号