82
82
画面内でコマンドを実行して離脱するには?
どのようにしたら screen にコマンドを実行させてから切り離すことができますか? 例えば myscript.sh を実行すると、自動的にスクリーンセッションが開始され、コマンドが実行されてから切り離されます。
どのようにしたら screen にコマンドを実行させてから切り離すことができますか? 例えば myscript.sh を実行すると、自動的にスクリーンセッションが開始され、コマンドが実行されてから切り離されます。
これは簡単ですね。
screen -d -m yourcommand
スクリーンとデタッチで1つのコマンドを実行するには、以下を試してみてください。
screen -dm sleep 10
複数のコマンドを実行するには、以下を試してみてください。
screen -dm bash -c "sleep 10; myscript.sh"
プログラムが終了すると、スクリーンは(デフォルトでは)そのプログラムを含んでいたウィンドウを終了させることに注意してください。
スクリプトの終了後にセッションを終了させたくない場合は、最後にexec sh
を追加してください。
screen -dm bash -c 'sleep 5; exec sh'
すべてのセッションをリストアップするには、次のようにしてください。
screen -list
関連。Unix画面の起動、コマンドの実行、デタッチ](https://serverfault.com/questions/578608/start-unix-screen-run-command-detach).
sleepy'という名前のバックグラウンドで新しいセッションを開始するため
screen -S sleepy -dm sleep 60
眠っている'セッションを終了するため
screen -S sleepy -X quit
``` 眠っている'セッションを終了するため
0x1&
control c (sig int)を押してプログラムを終了させると、すべてのbashからずっと終了してしまうので、SIGINTをキャッチし、最後のbashからの終了を防ぐためにこれを見つけた。(終了するには exit と入力する必要があります)
screen -dmS "screenNameHere" bash -c "trap 'echo gotsigint' INT; cd /mydir ; my_command_here; bash"
example:
screen -dmS "status_updates" bash -c "trap 'echo gotsigint' INT; cd /opt/status_update ; forever index.js ; bash"
私は起動時にnodejsのプログラムを実行したり、起動時に画面を表示したりするためにcronを使うと便利だと思います。