2012-07-29 02:04:52 +0000 2012-07-29 02:04:52 +0000
82
82

画面内でコマンドを実行して離脱するには?

どのようにしたら screen にコマンドを実行させてから切り離すことができますか? 例えば myscript.sh を実行すると、自動的にスクリーンセッションが開始され、コマンドが実行されてから切り離されます。

回答 (5)

120
120
120
2012-07-29 02:20:11 +0000

これは簡単ですね。

screen -d -m yourcommand
49
49
49
2012-07-29 02:10:53 +0000

スクリーンとデタッチで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).

16
16
16
2016-11-06 08:03:26 +0000

sleepy'という名前のバックグラウンドで新しいセッションを開始するため

screen -S sleepy -dm sleep 60

眠っている'セッションを終了するため

screen -S sleepy -X quit
``` 眠っている'セッションを終了するため 

0x1&
3
3
3
2018-03-14 05:40:50 +0000
screen -dmS screen_session_name bash -c 'echo "doing stuff"; exec bash'
0
0
0
2019-04-29 09:38:39 +0000

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を使うと便利だと思います。