Como testar se a tela foi iniciada, executar um comando na tela e desconectá-la?

Como testar se a tela foi iniciada, executar um comando na tela e desconectá-la?
screen -list
There are screens on:
        4278.chat       (07/16/15 14:26:47)     (Detached)
        15127.notifier  (07/16/15 13:27:57)     (Detached)

Meu objetivo é:

  • Se a tela de bate-papo não for iniciada, inicie-a; caso contrário, feche-a.
  • execute um comando na sessão de chat (ex node chat.js:)
  • separar sessão de chat

Responder1

Resposta em várias partes:

  • Se a tela de bate-papo não for iniciada, inicie-a; caso contrário, feche-a.
screen -S chat -X quit || screen -S chat

Também poderia, detachem vez de encerrar a sessão da tela, se foi isso que você quis dizer.

  • execute um comando na sessão de chat (ex: node chat.js)

Se você pretende iniciar uma nova tela e executar um comando, então

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

Observe a nova linha incorporada entre aspas. Se a tela já estiver em execução, você pode deixar a primeira metade.

  • separar sessão de chat
screen -S chat -X detach

veja também a resposta à primeira pergunta.

Tudo isso está razoavelmente documentado no manual.

informação relacionada