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

0
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)
  • отключить сеанс чата
Yarek
источник

Ответы:

1

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

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

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

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

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

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

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

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

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

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

малиново-цапля
источник