tmux 会话中的权限有限

tmux 会话中的权限有限

我正在使用 tmux 会话来运行一个脚本,该脚本运行一些 Python 代码(它使用存储在 /opts/... 的虚拟环境;Python 二进制文件已被复制但未链接),该代码使用 libvirt 创建虚拟机。当脚本完成后我virsh list --all在此 tmux 会话中运行时,机器不会显示。当我跑步时,sudo virsh list --all它们就会出现。当我离开会话时,virsh list --all会按预期显示虚拟机。我在随后创建的新 tmux 会话中也按预期列出了它们。发生了什么事以及如何解决这个问题?

如果我在 tmux 之外运行脚本,则列出虚拟机可以使用virsh list --all.

答案1

我不知道这是否能解决您的问题。但是以下解决了我的问题:

  • 停止所有tmux会话。
    • 真的全部,这样tmux机器上就不再运行了
  • 登出
  • 再次登录
  • 开始新的tmux

现在按预期virsh list --all工作。tmux

在我这边,问题是,我的用户libvirt在我开始后被添加到组中tmux。因此,其中的所有会话tmux,甚至是全新的会话,都还没有分组libvirt


这是一个tmux烦恼,因为即使是全新的tmux调用仍然由同一个旧tmux服务器启动(它们可以由当前服务器启动tmux,然后通过 Unix 套接字通过 FD 传递传递给服务器,但这不是tmux工作原理,叹息),这样所有的东西都会随着这个服务器而消失(我希望看到tty服务器和每个客户端都持有它tmux,这样如果其中任何一个死掉了,都不会发生真正糟糕的事情)。

而且tmux服务器崩溃的频率太高:在tmux1000 个虚拟机上运行时,一年 1 次意味着每天 3 次。即使它崩溃的概率低至 10^-20(tmux“崩溃概率更高”),这仍然意味着过于频繁的崩溃,因为每台计算机至少在这些天运行 - 每秒 10^10 条指令,这大致意味着,每 350 年发生 1 次坠机事故。

尽管对 1000 亿个计算单元的四舍五入估计以及每次崩溃造成的 5 美元工作损失,这仍然意味着由于tmux不稳定的设计每天造成的净值损失可能远远超过 100 万美元。

抱歉,只是一些数学。 (请注意,“崩溃”包括“挂起”或任何其他可能性,这会阻止所有tmux会话变得可访问。但是挂起是最常见的问题来源,tmux并且并不是那么致命。因为我曾经在某个地方偶然发现了一个粗糙的脚本 - 抱歉我不记得了 - 这允许接管ttys,即使是在某些挂起的情况下。这会在之后产生一些其他问题,并且只有在由于挂起服务器而仍然打开的tmux情况下才有效。如果它真的崩溃了,则所有s 都会关闭。 .)ttytmuxtty

相关内容