画面が起動されているかどうかをテストし、画面内でコマンドを実行してデタッチするにはどうすればよいですか?

画面が起動されているかどうかをテストし、画面内でコマンドを実行してデタッチするにはどうすればよいですか?
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

最初の質問の回答も参照してください。

これらすべてはマニュアルに適切に文書化されています。

関連情報