连续一行的应答grep

2024-05-16 09:01:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道如何使用下面的任务检查文件中的某一行是否可用,但我不知道如何连续检查或grep文件,直到出现上述行并退出任务。(-=SERVICE HAS begind=-)

 - name: Check whether my.log contains "SERVICE HAS BEGUN"
  command: grep -Fxq "-= SERVICE HAS BEGUN =-" my.log
  register: logg
  check_mode: no
  ignore_errors: yes
  changed_when: no

我遇到过等待选项,但这对案件没有帮助。有什么建议吗


Tags: 文件nonamelogmycheckservicegrep
2条回答

你可以用^{} loop来做一些事情,比如:

- name: Check whether my.log contains "SERVICE HAS BEGUN"
  command: grep -Fxq   "-= SERVICE HAS BEGUN =-" my.log
  register: logg
  ignore_errors: true
  changed_when: false
  until: logg.rc == 0
  retries: 60
  delay: 2

这将重试大约2分钟(60次,两次尝试之间有2秒的延迟)。在

请注意,我必须修改您的grep命令,否则搜索字符串中的前导-会导致{}将其解释为命令行选项。在

如果要使用wait_for,可以-它可以等待正则表达式出现在文件中:

- name: Wait until SERVICE HAS BEGUN
  wait_for:
    path: /path/to/my.log
    search_regex: SERVICE HAS BEGUN

您应该在这里添加一些超时值—检查文档以查看默认值是什么,并为您的用例设置适当的值。在

相关问题 更多 >