Как проверить, запущен ли экран, а затем выполнить команду на экране и отсоединить его?

Как проверить, запущен ли экран, а затем выполнить команду на экране и отсоединить его?
screen -list
There are screens on:
        4278.chat       (07/16/15 14:26:47)     (Detached)
        15127.notifier  (07/16/15 13:27:57)     (Detached)

Моя цель:

  • Если экран чата не запущен, запустите его, в противном случае закройте.
  • выполнить команду в сеансе чата (например: node chat.js)
  • отсоединить сеанс чата

решение1

Ответ, состоящий из нескольких частей:

  • Если экран чата не запущен, запустите его, в противном случае закройте.
screen -S chat -X quit || screen -S chat

Можно было бы также detachне убивать сеанс экрана, если вы это имели в виду.

  • выполнить команду в сеансе чата (например: node chat.js)

Если вы хотите начать новый экран и выполнить команду, то

screen -dm -S chat && screen -S chat -X stuff 'command-to-execute-in-screen-subshell
'

Обратите внимание на встроенную новую строку внутри кавычек. Если экран уже запущен, вы можете пропустить первую половину.

  • отсоединить сеанс чата
screen -S chat -X detach

см. также ответ на первый вопрос.

Все это достаточно подробно описано в руководстве.

Связанный контент