10

"screen -R -D -S test" 如果它不存在,将创建一个名为 test 的会话,如果存在则连接到它

“screen -d -m -S test” 将创建一个名为 test 的新分离会话,无论它是否存在,都可能导致多个名为 test 的会话:

There are several suitable screens on:
    9705.test   (06/18/2012 06:42:58 PM)    (Detached)
    9639.test   (06/18/2012 06:42:57 PM)    (Detached)

如何创建一个名为 test 的独立会话,但前提是该会话尚不存在?

4

1 回答 1

13

我相信您正在寻找-d -R组合:

screen -d -R -S test

来自man screen

      -d -R   Reattach a session and if necessary detach or  even  create  it
              first

编辑

如果您只想在不存在的情况下创建背景屏幕,则 ~/.bashrc 或 ~/.zshrc 中的一个小 shell 函数将起作用:

function bgsc { 
  if screen -list | awk '{print $1}' | grep -q "$1$"; then
    echo "screen $1 already exists" > &2
  else
    screen -d -m -S $1
  fi
}

然后只需调用bgsc test.

于 2012-06-19T00:03:41.650 回答