长话短说:我有一个 irssi 代理屏幕会话在后台运行。我正在运行byobu -R -S byobu;exit
以~/.bash_profile
启动第二个会话,而不是重新连接到 irssi 会话,但当我登录两次时(例如,一次通过本地终端,一次通过 SSH),它会启动第三个会话。如何使第二个登录重新连接到第一个?
我之前在登录我的服务器时启用了 byobu。这工作得很好,无论我从哪里登录,我都会得到相同的底层屏幕会话。
但是,然后我在服务器的启动中添加了第二个屏幕会话:
[alex@alex-ubuntu-server ~]$ cat /etc/rc.local
#!/bin/sh -e
# [clipped out default ubuntu rc.local header]
# run an irssi proxy under screen as user alex
sudo -H -u alex screen -d -m -S irssi-proxy irssi
exit 0
[alex@alex-ubuntu-server ~]$
从那时起,这个命令(它被放在我的~/.bash_profile
byobu 配置中):
_byobu_sourced=1 . /usr/bin/byobu-launch -S byobu
将连接到已经存在的 irssi 屏幕会话,而不是创建新会话。这显然不理想,所以最终我决定使用以下命令:
byobu -R -S byobu;exit
然后的目的是命名屏幕会话,从而允许当我通过例如 SSH 再次登录时重新连接到相同的名称。但是,当我再次登录时,我会得到一个新的屏幕会话,而不是现有的屏幕会话(正如您在下面的示例中看到的,这种情况已经发生过一次)。
[alex@alex-ubuntu-server ~]$ screen -ls
There are screens on:
18036.byobu (07/07/2013 04:26:44 PM) (Attached)
3869.byobu (07/05/2013 07:45:37 PM) (Attached)
1319.irssi-proxy (07/04/2013 05:01:54 PM) (Detached)
3 Sockets in /var/run/screen/S-alex.
[alex@alex-ubuntu-server ~]$ ssh localhost
Ubuntu 13.04
alex@localhost's password:
# at this point the screen redrew because of the new byobu session,
# so these weren't really one after another, as shown here
alex@alex-ubuntu-server:~$ screen -ls
There are screens on:
6216.byobu (07/07/2013 05:17:38 PM) (Attached)
18036.byobu (07/07/2013 04:26:44 PM) (Attached)
3869.byobu (07/05/2013 07:45:37 PM) (Attached)
1319.irssi-proxy (07/04/2013 05:01:54 PM) (Detached)
4 Sockets in /var/run/screen/S-alex.
alex@alex-ubuntu-server:~$
我宁愿不切换到tmux
.如何构建一个 byobu/screen 命令,在可能的情况下重新连接到现有的第二个屏幕会话,但否则启动一个新的(第二个)会话?
答案1
您可以将 irssi 进程切换为使用tmux
,而不是登录进程。
答案2
当使用 ssh 连接到机器并且您想要一个新会话时,您可以在连接上创建一个新的 byobu 会话(-t
需要该标志来“强制伪终端分配”,否则您可能会收到以下错误:“打开终端失败:不是终端”):
ssh -t your_machine byobu new-session