0

我正在尝试使用 byobu 命令通过 ansible playbook 在 VM 上启动一个命名的 byobu 会话。会话确实开始但在后台,即当我运行命令时会话及其所有窗口/任务正在显示,_ps -aux_但是当我尝试从 VM 附加到该会话 (testByobu) 时_byobu attach-session -t testByobu_,它说找不到会话 testByobu,类似地命令_byobu list-session_

/tmp/tmux-100/default* 上没有运行服务器

VM ---带有 Ubuntu 18.04.2 LTS 的 VirtualBox VM ---Byobu 版本 5.125 tmux 2.6

本地系统 ---Ubuntu 18.04.2 LTS ---ansible 2.8.0 config file = /etc/ansible/ansible.cfg 配置模块搜索路径 =[u'/home/emumba/.ansible/plugins/modules', u '/usr/share/ansible/plugins/modules'] ansible python 模块位置 = /usr/lib/python2.7/dist-packages/ansible 可执行位置 = /usr/bin/ansible python 版本 = 2.7.15rc1(默认, 2018 年 11 月 12 日,14:31:15) [GCC 7.3.0]

当我尝试使用 ansible playbook 再次创建同名会话时,即testByobu,出现错误

任务 [开始 byobu 会话] ************************************************ ****************************************************** ***************************** 致命:[192.168.2.218]:失败!=> {“更改”:true,“cmd”:“byobu new-session -d -s testByobu”,“delta”:“0:00:00.046348”,“end”:“2019-05-27 12:26 :15.832584”,“msg”:“非零返回码”,“rc”:1,“start”:“2019-05-27 12:26:15.786236”,“stderr”:“重复会话:testByobu”, “stderr_lines”:[“重复会话:testByobu”],“stdout”:“”,“stdout_lines”:[]}

当它发现会话已经存在时发生。但是,当我直接在 VM 上创建相同的会话(testByoby)时,它就成功创建了。VM 上的 ps -aux 命令显示两个会话以相同的名称运行,并且我为通过 playbook 创建的会话创建的窗口也显示在输出中。但是运行byobu list-session命令只显示我直接在 VM 上创建的一个会话。

**output of the _ps -aux_ command:**

USER    PID %CPU %MEM   VSZ   RSS TTY   STAT START   TIME COMMAND
osama   3374  0.0  0.1  37284  3740 ?       Ss   12:27   0:00 tmux -u -2 -f /usr/share/byobu/profiles/tmuxrc new-session -d -s testByobu
osama   3378  0.0  0.2  29896  5080 pts/6   Ss+  12:27   0:00 /bin/bash
root    4087  0.0  0.0      0   0 ?     I   12:31   0:00 [kworker/u2:1-ev]
root    4123  0.0  0.0      0   0 ?     I   12:36   0:00 [kworker/0:2]
root    4126  0.0  0.3 110076  7280 ?       Ss   12:36   0:00 sshd: osama [priv]
osama   4190  0.2  0.2 110556  5288 ?       S   12:36   0:00 sshd: osama@notty
root    4275  0.0  0.1  37276  3652 ?       Ss   12:36   0:00 tmux -u -2 -f /usr/share/byobu/profiles/tmuxrc new-session -d -s testByobu
root    4278  0.0  0.1  28908  4040 pts/3   Ss+  12:36   0:00 /bin/bash
root    4403  0.0  0.1  28908  3852 pts/2   Ss   12:36   0:00 /bin/bash
root    4441  0.0  0.2  39760  4196 pts/2   S+   12:36   0:00 vi
root    4492  0.0  0.1  28908  3948 pts/4   Ss+  12:36   0:00 /bin/bash
root    4581  0.0  0.1  28908  3892 pts/5   Ss   12:36   0:00 /bin/bash
root    4619  0.0  0.0  23828  1076 pts/5   S+   12:36   0:00 ping 8.8.8.8
osama   4641  0.0  0.1  47100  3716 pts/0   R+   12:37   0:00 ps -aux

尝试其他方法 如果我首先在 VM 上进行会话,然后如果我运行 playbook 来创建该会话的窗口,它会再次遇到错误

任务 [任务 1] ********************************************* ****************************************************** ***************************************** 致命:[192.168.2.218]:失败!=> {“更改”:true,“cmd”:“byobu send-keys -t testByobu:0 'vim''Cm'”,“delta”:“0:00:00.057772”,“end”:“2019- 05-27 12:30:08.899375”,“msg”:“非零返回码”,“rc”:1,“start”:“2019-05-27 12:30:08.841603”,“stderr”:“没有服务器运行在 /tmp/tmux-0/default", "stderr_lines": ["没有服务器运行在 /tmp/tmux-0/default"], "stdout": "", "stdout_lines": []}

这再次表明剧本没有访问已经存在的。

这是示例剧本。


  name: Test Byobu
  hosts: all
  remote_user: osama
  become: yes

任务:

#  name: kill byobu session
#  shell: byobu kill-session -t testByobu

    name: start byobu session
    shell: byobu new-session -d -s testByobu


  name: task 1
  shell: |
  byobu send-keys -t testByobu:0 'vim' 'C-m'

  name: task 2
  shell: |
  byobu new-window -t testByobu:1
  byobu send-keys -t testByobu:1 'vi' 'C-m'

  name: task 3
  shell: |
  byobu new-window -t testByobu:2
  byobu send-keys -t testByobu:2 'cd /tmp/ && touch testByobu.txt' 'C-m'

  name: task 4
  shell: |
  byobu new-window -t testByobu:3
  byobu send-keys -t testByobu:3 'ping 8.8.8.8' 'C-m'`

我期望的是,当我运行我的剧本(提供的代码)时,它应该在 VM 上创建一个名为 testByobu 的新会话,这样当我运行_byobu attach-session -t testByobu_命令时它应该可以访问,并且在剧本中创建的所有 winows 都完好无损。我可以切换到 playook 中正在创建的所有 4 个窗口。

实际发生的情况是剧本成功运行,但在 VM 上,会话在后台运行,VM 上的 byobu 似乎对该会话一无所知。

我将不胜感激在这方面的任何帮助。

更新 我想我应该总结一下问题,它可能使详细描述易于理解。

我想在 VM 上启动一个名为 testByobu 的 byobu 会话,并通过 ansible playbook 在该会话的不同窗口上运行不同的进程。剧本(提供的代码)成功运行,但是当我尝试使用byobu list-session命令列出 byobu 会话时,在 VM 上,testByobu 不在列表中。因此,当我运行byobu attach-session -t testByobu命令时,我也无法附加到该会话。需要提到的重要一点是,会话“testByoby”和通过 playbook 在该会话中运行的所有进程都显示在命令生成的运行进程列表中ps -aux。我想要的是当我byobu list-session在虚拟机上运行命令时会话必须出现,因此当我运行命令时必须可以进入该会话byobu attach-session -t testByobu

4

0 回答 0