Wie testet man, ob der Bildschirm gestartet ist, führt dann einen Befehl im Bildschirm aus und trennt ihn?

Wie testet man, ob der Bildschirm gestartet ist, führt dann einen Befehl im Bildschirm aus und trennt ihn?
screen -list
There are screens on:
        4278.chat       (07/16/15 14:26:47)     (Detached)
        15127.notifier  (07/16/15 13:27:57)     (Detached)

Mein Ziel ist:

  • Wenn der Chat-Bildschirm nicht gestartet ist, starten Sie ihn, andernfalls schließen Sie ihn.
  • einen Befehl in einer Chat-Sitzung ausführen (Beispiel: node chat.js)
  • Chatsitzung trennen

Antwort1

Mehrteilige Antwort:

  • Wenn der Chat-Bildschirm nicht gestartet ist, starten Sie ihn, andernfalls schließen Sie ihn.
screen -S chat -X quit || screen -S chat

Könnte auch sein detach, anstatt die Bildschirmsitzung zu beenden, falls Sie das gemeint haben.

  • einen Befehl in einer Chat-Sitzung ausführen (Beispiel: node chat.js)

Wenn Sie einen neuen Bildschirm starten und einen Befehl ausführen möchten, dann

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

Beachten Sie die eingebettete neue Zeile in den Anführungszeichen. Wenn der Bildschirm bereits läuft, können Sie die erste Hälfte weglassen.

  • Chatsitzung trennen
screen -S chat -X detach

siehe auch Antwort auf die erste Frage.

Dies alles ist ausführlich im Handbuch dokumentiert.

verwandte Informationen