count - 使用 Ansible 查找进程数
问题描述
下面是我的剧本,它转储匹配的进程.*httpd.*|.*sjsws.*|.*java.*|.*docker.*|.*node.*
剧本:
vars:
grepelement: ".*httpd.*|.*sjsws.*|.*java.*|.*docker.*|.*node.*"
- name: "Check processes on destination"
ignore_errors: yes
command: ps auxwww
register: ps_out
- set_fact:
processdump: "{{ ps_out.stdout | regex_findall(grepelement) }}"
- set_fact:
processdumpcount: "{{ ps_out.stdout.split() | length }}"
不幸的是,虽然只有 4 个进程正在运行,但计数似乎打印了 1000 多个,这可能是输出中的字符数。
我也尝试了以下方法,但这也打印出比正在运行的进程数更多的内容。
- set_fact:
processdumpcount: "{{ ps_out.stdout_lines | length }}"
我可以command: ps auxwww | wc -l
用作解决方案,但更喜欢使用单个ps
命令的解决方案。
你能建议吗?
解决方案
您需要检查processdump
寄存器的长度以获取计数 ps_out.stdout_lines
- set_fact:
processdumpcount: "{{ processdump | length }}"
请注意,它ps_out
会保留系统上运行的所有进程,然后您正在使用ps_out
它regex_findall
来过滤掉与processdump
. 你需要注册length
。processdump
最小的工作示例:
我的系统进程计数:
ps auxwww |wc -l
287
ps auxwww |grep -E ".*httpd.*|.*sjsws.*|.*java.*|.*docker.*|.*node.*" |grep -v grep |wc -l
3
剧本:
---
- name: Sample playbook
connection: local
# gather_facts: false
hosts: localhost
vars:
grepelement: ".*httpd.*|.*sjsws.*|.*java.*|.*docker.*|.*node.*"
tasks:
- name: "Check processes on destination"
ignore_errors: yes
command: ps auxwww
register: ps_out
- set_fact:
processdump: "{{ ps_out.stdout | regex_findall(grepelement) }}"
- set_fact:
processdumpcount: "{{ processdump | length }}"
- debug: msg="{{ processdumpcount }}"
以上剧本将导致:
PLAY [Sample playbook] **********************************************************************************************************************************************
TASK [Gathering Facts] **********************************************************************************************************************************************
ok: [localhost]
TASK [Check processes on destination] *******************************************************************************************************************************
changed: [localhost]
TASK [set_fact] *****************************************************************************************************************************************************
ok: [localhost]
TASK [set_fact] *****************************************************************************************************************************************************
ok: [localhost]
TASK [debug] ********************************************************************************************************************************************************
ok: [localhost] => {
"msg": "3"
}
PLAY RECAP **********************************************************************************************************************************************************
localhost : ok=5 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
推荐阅读
- html - MD Bootstrap 轮播照片列表,将所有照片的高度“锁定”到第一张
- amazon-web-services - 无论自定义异常如何,连接到 appsync 的 Lambda 始终返回 Lambda:Unhandled errorType
- jquery - 从 ajax 调用生成的引导模式主体中的触发按钮
- c# - 为什么带有 CefSharp WPF 可插拔模块的应用程序会意外停止?
- c# - 如何检索
进行 lgrouping 后从列表中 - python - 重新调整训练集
- r - 如何用 ggplot2 (R) 绘制单个置信区间?
- c - 使用 printf 时出现意外的双值输出
- java - Kotlin 中的 Sealed 类和继承原理有什么区别?
- python - 如何使用 Python Pandas 从 1 行中的特定列中获取值?