どのようにしたら screen にコマンドを実行させてから切り離すことができますか? 例えば myscript.sh を実行すると、自動的にスクリーンセッションが開始され、コマンドが実行されてから切り離されます
109 darkfeline 2012-07-29
これは簡単なことです
screen -d -m yourcommand
d -d -m デタッチドモードで画面を起動します。これは新しいセッションを作成しますが、それにはアタッチしません。これはシステム起動スクリプトに便利です
155 Alan Curry 2012-07-29
画面内で単一のコマンドを実行してデタッチするには、試してみてください
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の画面を起動し、コマンドを実行し、デタッチを行う
56 kenorb 2012-07-29
sleepyという名前でバックグラウンドで新しいセッションを開始するため
screen -S sleepy -dm sleep 60
眠い」セッションを殺すために
screen -S sleepy -X quit
23 Michal Zmuda 2016-11-06
screen -dmS screen_session_name bash -c 'echo "doing stuff"; exec bash'
5 tkjef 2018-03-14
コントロール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を使うと便利だと思います
to edit cron, execute:
crontab -e
then type
@reboot screen -dmS "screenNameHere" bash -c "trap 'echo gotsigint' INT; cd /mydir ; my_command_here; bash"
1 Shimon Doodkin 2019-04-29
ここでは、画面内のプロセスを実行し、端末から切り離してから再アタッチするまでの手順を説明します
コマンドプロンプトから、
screen
を実行してください。これにより、新しいサブシェルが表示されます希望のプログラムを実行します
キー配列
Ctrl-a Ctrl-d
を使ってスクリーンセッションから切り離す (すべてのscreen
キーバインドはCtrl-a
で始まることに注意)。これで元のシェルに戻り、「[detached]」というメッセージが表示され、スクリーンセッションがまだ実行中であることを示しますそして、
screen -list
を実行することで、利用可能なスクリーンセッションをリストアップすることができますscreen -r
を実行することで、このスクリーンセッションに再アタッチすることができます。再アタッチすると、元の場所に戻ることができ、アタッチされている間に画面に出力された出力を見ることができます。複数のスクリーンセッションがある場合は、screen -r
の引数にtty名(screen -list
で表示される)を指定することで、特定のセッションにアタッチすることができます
0 Vinnie James 2020-09-11