我编写了一个简单的任务来回显文本,并将其封装在nohup命令中。通常,当我执行nohup echo test时,nohup.out是在同一个工作目录中创建的。当我从ansible做这件事时,nohup.out完全失踪了
- name: nohup
tags: nohup
shell: 'nohup echo test'
args:
chdir: /tmp
executable: /bin/bash
async: 45
poll: 0上面怎么了?为什么nohup.out没有出现?
发布于 2019-04-03 08:17:33
所以根据nohup的文件
如果标准输入是终端,则从不可读文件重定向。如果标准输出是终端,如果可能的话,将输出附加到'nohup.out‘,'$HOME/nohup.out’否则。
Ansible似乎无法以这种方式工作,因此没有创建nohup.out文件。为了解决这个问题,我用以下方式修改了任务
- name: nohup
tags: nohup
shell: 'nohup echo test > nohup.out 2>&1 &'
args:
chdir: /tmp
executable: /bin/bash
become: yes
become_user: user
become_method: su这里的关键部分是> nohup.out 2>&1 &命令中的shell。关于become技术的最后三行在这里没有那么相关。
最后,nohup.out在我需要它的地方,包含我想要的所有数据。
https://stackoverflow.com/questions/55476484
复制相似问题