如何使用确切的会话名称进入屏幕?

How to use exact session name to enter a screen?

我正在使用屏幕 运行 应用程序的许多不同实例,我将会话命名为 "app1"、"app2" 等

问题是如果我有一个名为 "app10" 的屏幕在名为 "app1" 的屏幕之后启动,当我键入

screen -r app1

我附加到 app10 屏幕,因为它是最后创建的屏幕 "matching" 名称 app1。

是否可以取消名称匹配并使用准确的名称?

出于技术原因,我不想将 app1 更改为 app01。用于目录名、自动化等

您可以为此目的使用 pid 前缀:

man screen

-r [pid.tty.host] -r sessionowner/[pid.tty.host] resumes a detached screen session. No other options (except combinations with -d/-D) may be specified, though an optional prefix of [pid.]tty.host may be needed to distinguish between multiple detached screen sessions. The second form is used to connect to another user's screen session which runs in multiuser mode. This indicates that screen should look for sessions in another user's directory. This requires setuid-root.

正如您正确指出的那样,screen 使用参数值作为前缀。

一个较长的替代方法是输入:

  screen -r $(basename /var/run/screen/S-$USER/*.app1}

(假设您的套接字位于 /var/run/screen 目录中,这是 Debian 系统的默认目录)

您可以在 .bashrc 文件中创建等效的 bash 函数

   function mscreen() {
      screen -r $(basename /var/run/screen/S-$USER/*)
   }

让你输入

 mscreen app1

恢复会话 app1 而不是 app10