You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible systemd模块是否支持打印Cgroup的详细信息?

Ansible systemd模块获取Cgroup详细信息问题

Ansible的systemd模块没有直接选项返回包含PID的Cgroup详细信息,该模块返回的ControlGroup字段仅对应cgroup的路径,不会解析其中的进程列表。

解决方案

方法1:直接调用systemctl status提取信息

通过command模块执行systemctl status命令,再用正则提取Cgroup相关的完整内容:

- name: 获取test.service的Cgroup进程信息
  command: systemctl status test.service --full
  register: systemctl_output
  changed_when: false

- name: 提取并打印Cgroup详细信息
  debug:
    msg: "{{ systemctl_output.stdout | regex_findall('Cgroup: .*?(?=\\n\\S|$)', multiline=True, dotall=True) | first }}"
  • --full参数确保输出完整的进程信息
  • 正则表达式匹配从Cgroup:开始到下一个非空白行前的所有内容,精准提取目标段落

方法2:直接读取cgroup文件并关联进程名

通过systemd模块获取cgroup路径后,读取cgroup下的PID文件,再通过ps命令获取进程名:

- name: 获取test.service的cgroup路径
  systemd:
    name: test.service
  register: service_status

- name: 读取cgroup下的PID列表
  command: cat "{{ service_status.status.ControlGroup }}/cgroup.procs"
  register: cgroup_pids
  changed_when: false

- name: 获取每个PID对应的进程名
  command: ps -p {{ item }} -o comm=
  loop: "{{ cgroup_pids.stdout_lines }}"
  register: process_names
  changed_when: false

- name: 组装并打印Cgroup详细信息
  debug:
    msg: |
      Cgroup: {{ service_status.status.ControlGroup }}
      {% for proc in process_names.results %}
              {{ proc.item }} {{ proc.stdout }}
      {% endfor %}
  • 该方法不依赖systemctl status的输出格式,兼容性更强,但需要多步操作获取进程名

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 20:20:27