如何处理永无止境的循环linux命令 - ansible

时间:2016-06-22 04:49:41

标签: linux ansible ansible-playbook

请参阅此link以了解我的所作所为。

简短说明

我需要在远程计算机上运行top命令并获取结果内容,然后将该文件保存在本地计算机

test.yml

 #!/bin/bash
 top > system.txt

top.sh

stderr: top: failed tty get
<job 351267881857.24744> FAILED on 192.168.1.7

问题

top.sh 永远不会结束,所以我尝试每五秒轮询结果并复制到本地计算机但它不能正常工作。它会抛出错误。

class A {
    protected void msg(){
        System.out.println("-------------------asdfghjkl");
    }
}

注意:仅当我包含async和poll选项

时才会出现此错误

2 个答案:

答案 0 :(得分:0)

您是否需要自行运行top命令,或者这只是您要监控的长时间运行程序的示例?

您收到的错误:

  

顶部:失败tty get

...当top命令未在真正的终端会话中运行时发生。 Ansible使用的ssh模式不支持完整的终端会话所具有的所有控制台功能 - 这是top所期望的。

答案 1 :(得分:0)

Hello Bilal我希望这对你有用

您的语法:使用民意调查:5 关注此链接http://docs.ansible.com/ansible/playbooks_async.html

民意调查正在使用等待任务来完成。但是top命令不会停止,直到使用停止或系统关闭。使用民意调查:0

“或者,如果您不需要等待任务完成,您可以通过指定轮询值0来”触发并忘记“:”

现在忘记任务,从远程收集顶级结果文件并在语法

下存储到本地使用
    - hosts: webservers
      remote_user: root
      tasks:
        - name: 'Copy top.sh to remote machine'
          synchronize: mode=push  src=top.sh dest=/home/raj

        - name: collecting top result
          command: sh /home/raj/top.sh
          async: 45
          poll: 0

        - name: 'Copy top command result to local machine'
          synchronize: mode=pull src=/home/raj/Top.txt  dest=/home/raj2/Documents/Ansible

top.sh:

  #!/bin/bash

  top -b > /home/raj/Top.txt

这对我有用。如果你有任何问题,请告诉我。