Экран GNU: как создать экран в фоновом режиме, если он не существует?

"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

Я считаю, что вы ищете комбинацию -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:

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.