ansible shell:如何显示grep结果与在本地运行相同

时间:2017-08-31 17:50:16

标签: shell ansible

ListViews

结果显示:

- name: check process is running or not
  shell: ps -ef |grep abcd |grep defg
  register: result
  ignore_errors: yes
- debug: msg="{{ result.stdout }}"

但如果我登录该机器直接运行:

TASK [debug] ***********
ok: [52.35.61.9] => {
"msg": "ec2-user 28932 28931  0 17:42 pts/0    00:00:00 /bin/sh -c ps 
-ef |grep abcd |grep defg"
}

我什么也看不见,因为这个过程已经停止了。

在ansible中我需要检查进程是否已经运行。然后只有在不是的情况下运行它。这就是为什么我使用shell和ps(命令不支持管道所以我必须使用shell)。但是从ansible调用shell总是显示出来。即使这个过程没有运行。

如何使它不显示任何内容,与在本地运行ps时相同?

1 个答案:

答案 0 :(得分:1)

尝试将字符括在方括号中,如下所示:

shell: ps -ef |grep [a]bcd |grep defg

这只是让grep忽略ps输出中的那一行。