Linux systemctl 管理 Zabbix-Agent 服务笔记

一、需求场景

在 Linux 系统中,需要实现以下逻辑:

  1. 检查 zabbix-agent 服务是否运行
  2. 如果运行,则显示服务状态(status
  3. 如果未运行,则执行启动命令(systemctl start

二、一键命令实现(检查并启动)

方式一:一行命令(推荐用于脚本或快速执行)

systemctl is-active --quiet zabbix-agent && systemctl status zabbix-agent || systemctl start zabbix-agent

命令解释:

  • systemctl is-active --quiet zabbix-agent:静默检查服务是否运行(退出码 0 表示运行中)
  • &&:前面命令成功(服务运行中)则执行 systemctl status
  • ||:前面命令失败(服务未运行)则执行 systemctl start

方式二:使用 if 语句(更清晰,适合写脚本)

if systemctl is-active --quiet zabbix-agent; then
    systemctl status zabbix-agent
else
    systemctl start zabbix-agent
fi

方式三:一行增强版(带提示)

systemctl is-active --quiet zabbix-agent && systemctl status zabbix-agent || systemctl start zabbix-agent && echo "已启动 zabbix-agent"

三、只看服务状态和启动时间

1. 使用 systemctl show 获取关键属性

systemctl show zabbix-agent --property=ActiveState,SubState,ExecMainStartTimestamp

输出示例:

ActiveState=active
SubState=running
ExecMainStartTimestamp=Wed 2026-06-10 11:23:37 CST

2. 只显示启动时间(纯文本)

systemctl show zabbix-agent --property=ExecMainStartTimestamp --value

输出:

Wed 2026-06-10 11:23:37 CST

3. 格式化显示状态 + 启动时间

echo "服务状态: $(systemctl is-active zabbix-agent)"; echo "启动时间: $(systemctl show zabbix-agent --property=ExecMainStartTimestamp --value)"

输出示例:

服务状态: active
启动时间: Wed 2026-06-10 11:23:37 CST

4. 用 systemctl status 过滤关键行

systemctl status zabbix-agent | grep -E "Active:|Loaded:"

输出示例:

     Loaded: loaded (/etc/systemd/system/zabbix-agent.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2026-06-10 11:23:37 CST; 60ms ago

5. 只判断是否运行(简洁)

systemctl is-active zabbix-agent && echo "运行中" || echo "未运行"

四、systemctl status 输出详解

以下为一个实际输出的完整示例及逐行解释:

● zabbix-agent.service - Zabbix Agent (Extracted 5.0 armhf)
     Loaded: loaded (/etc/systemd/system/zabbix-agent.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2026-06-10 11:23:37 CST; 60ms ago
    Process: 15052 ExecStart=/usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf (code=exited, status=0/SUCCESS)
   Main PID: 15054 (zabbix_agentd)
      Tasks: 3 (limit: 2065)
     Memory: 2.8M
        CPU: 143ms
     CGroup: /system.slice/zabbix-agent.service
             ├─15054 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
             ├─15055 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
             └─15056 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]

Jun 10 11:23:37 pbsbc01h3 zabbix_agentd[15054]: Starting Zabbix Agent [pbsbc01h3]. Zabbix 5.0.47...
Jun 10 11:23:37 pbsbc01h3 systemd[1]: Started Zabbix Agent (Extracted 5.0 armhf).

各字段含义说明

段落含义示例中的信息
标题行服务名称与描述zabbix-agent.service - Zabbix Agent (Extracted 5.0 armhf)
Loaded配置文件路径、是否开机自启loaded /etc/systemd/system/... enabled
Active运行状态、启动时间、已运行时长active (running) since ... 60ms ago
Process启动时执行的命令及其退出状态status=0/SUCCESS
Main PID主进程 ID15054
Tasks任务/线程数及系统限制3 (limit: 2065)
Memory内存占用2.8M
CPU已使用的 CPU 时间143ms
CGroup控制组路径/system.slice/zabbix-agent.service
进程树所有子进程及其作用主进程、collector、active checks
日志块最近的服务日志(通常 10 行)启动过程、功能支持、配置文件等

关键信息速查表

项目命令或字段状态值示例
是否运行Activeactive (running)
启动时间since ...2026-06-10 11:23:37 CST
运行时长ago60ms ago
是否开机自启enabledenabled / disabled
内存占用Memory2.8M
进程数量Tasks3

五、常见操作小结

服务管理命令

systemctl start zabbix-agent       # 启动
systemctl stop zabbix-agent        # 停止
systemctl restart zabbix-agent     # 重启
systemctl status zabbix-agent      # 查看状态
systemctl enable zabbix-agent      # 设置开机自启
systemctl disable zabbix-agent     # 取消开机自启

状态判断常用命令

systemctl is-active zabbix-agent   # 输出 active/inactive
systemctl is-enabled zabbix-agent  # 输出 enabled/disabled
systemctl show zabbix-agent        # 显示所有属性

六、适用环境

  • Linux 发行版:CentOS / RHEL / Ubuntu / Debian / Rocky / AlmaLinux 等(使用 systemd)
  • 服务名称:zabbix-agent
  • 要求:具有 sudo 或 root 权限(如当前用户无权限,命令前加 sudo

笔记整理完成,可直接复制保存为 .md 文件。

标签: none

添加新评论