我想运行一个无止境的脚本,只想看远程节点上的输出。这可能吗?
也许是这样的:
---
- hosts: server
gather_facts: False
tasks:
- name: Run runserver.sh and save the output of script
shell: screen -dRR bash /home/dell/tester_server_2/runserver.sh
async: 99999999999
poll: 0
但这并没有打开新的屏幕会话,尽管远程虚拟机上的top命令显示脚本已经开始运行
我也玩过其他屏幕选项,比如-d -m -x等
答案 0 :(得分:0)
我有一个ansible任务,从屏幕内启动一个长时间运行的shell脚本,以便我可以在以后检查它的状态。以下是我如何定义它:
- name: Invoke do-grails reset -solr
command: /usr/bin/screen -d -m sudo -u czapp /usr/local/bin/do-grails.sh -i -y reset -solr
async: 60
poll: 0
编辑:所有这个命令都在调用屏幕以在后台运行命令。在这种情况下的命令是:
sudo -u czapp /usr/local/bin/do-grails.sh -i -y reset -solr
在我的特定情况下,我需要以名为“czapp”的用户身份运行此shell脚本,因此我使用了sudo。您应该能够为命令使用相同的基本方法。在你的情况下,你可能想做这样的事情:
- name: Run runserver.sh and save the output of script
command: /usr/bin/screen -d -m /home/dell/tester_server_2/runserver.sh
async: 60
poll: 0
通过使用“-d -m”调用屏幕,您将告诉它以分离模式启动,因此会创建一个运行指定命令的新屏幕会话,并立即将控制权返回给Ansible。