判断当前系统所使用的初始化系统,可依据发行版版本快速识别:CentOS 7 及以上、RHEL 7 及以上、Ubuntu 16.04 及以上均默认使用 systemd。仅仍在运行 CentOS 6 的旧环境使用 service 命令。
以firewalld.service 为例,日常运维中最常用的 systemctl 命令如下:
systemctl start firewalld.service # 启动systemctl stop firewalld.service # 停止systemctl restart firewalld.service # 重启systemctl reload firewalld.service # 重载配置,不中断服务systemctl enable firewalld.service # 开机自启systemctl disable firewalld.service # 禁止开机自启systemctl status firewalld.service # 查看状态
需注意restart 与 reload 的区别:restart 执行先停止再启动的操作,服务在此期间发生中断。reload 则向服务进程发送信号,通知其重新读取配置文件,服务进程本身保持运行,不会中断现有连接。并非所有服务均支持 reload 操作;对于自行开发的应用,若未实现重载逻辑,执行 reload 可能触发完整重启或直接报错,具体行为取决于程序对信号的响应。
status命令的输出怎么看?
执行systemctl status 服务名时,应重点关注输出中的Active行,其状态显示为running、dead或failed。若状态为failed,systemd 通常会在下方附带最近的日志片段,据此可快速判断故障方向,常见原因包括端口占用、配置文件路径错误或依赖服务未就绪等。
服务起不来怎么排查?
当服务启动异常时,推荐的排查流程如下:
1.执行systemctl status 服务名,查看退出码及简要日志。
2.若信息不足,执行journalctl -xe -u 服务名 查看完整日志。其中 -x 选项会在日志中添加解释性说明,-e 选项可直接跳转至最近条目。
相比SysV init 时期需先确定日志文件位置及格式,再分散查阅的排查方式,现在通过统一的日志工具显著提升了排障效率。