我正在尝试使用 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
。