回答:
これは簡単です:
screen -d -m yourcommand
screen yourcommand
なしでやってみて、それが最初にどうなるか見てみましょう。-d
-m
zombie
画面のオプションを有効にすることで変更できます。を入れzombie xy
てください~/.screenrc
。また、あるセッションzombie xy
で別のファイルを挿入して使用するだけで有効にすることもできます-c file
が、何らかの理由で試してみても動作しません。または単に使用するsh -c 'yourcommand;while :;do sleep 9999; done'
画面で単一のコマンドを実行してデタッチするには、次を試してください。
screen -dm sleep 10
複数のコマンドを実行するには、次を試してください:
screen -dm bash -c "sleep 10; myscript.sh"
プログラムが終了すると、screenは(デフォルトで)それを含むウィンドウを強制終了することに注意してください。
スクリプトの終了後にセッションが強制終了されないようにするにexec sh
は、最後に追加します。例:
screen -dm bash -c 'sleep 5; exec sh'
すべてのセッションをリストするには、次を試してください。
screen -list
-S sessionname
:を追加しますscreen -dmS MyLongRunningScript bash -c "..."
。
「sleepy」という名前でバックグラウンドで新しいセッションを開始するには
screen -S sleepy -dm sleep 60
「眠い」セッションを殺すために
screen -S sleepy -X quit
screen -S sleepy -dm "cd myfolder;sleep 60"
ですか?
コントロール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"
cronを使用して、起動時にnodejsプログラムを実行すると便利です。起動時に画面を実行します。cronには、特別なイベントの構文@reboot eventがあります
to edit cron, execute:
crontab -e
then type
@reboot screen -dmS "screenNameHere" bash -c "trap 'echo gotsigint' INT; cd /mydir ; my_command_here; bash"