GNU屏幕:如果屏幕不存在,如何在后台创建屏幕?

时间:2012-06-18 23:46:15

标签: shell gnu-screen

“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的分离会话,但仅当一个尚未存在?

1 个答案:

答案 0 :(得分: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