私はGNUスクリーンに強制的に「仮想」ターミナルを作成させ、それに接続せずに、内部でスクリプトを実行し、スクリプトが終了したらセッションを終了しないようにしています。
以下を含む多くの組み合わせを試しました。
screen -dmS udplistener /share/Sys/autorun/start_udp_listeners.sh
または
screen -S udplistener -X /share/Sys/autorun/start_udp_listeners.sh
どれも機能しませんでした。スクリプトを実行せずにセッションを取得するか、スクリプトを実行しますが、セッションが終了するとセッションが終了するか、「画面セッションが見つかりません」というエラーが表示されます。
基本的に私がやろうとしているのは、PHPで書かれたUDPリスナーを実行し、無限ループで動作させることです(リスニングを中断しないでください)。はい- &
最後にPHPスクリプトを実行して、PHP CLIをデーモンとして強制的に実行できました。問題は、サーバーと呼ばれるジャンクを使用していることです(QNAP-決してこのジャンクを購入することはありません!)。これはこれを無視しているようです。SSHセッションをログオフするとすぐに、スクリプトが停止します。
だからscreen
唯一の選択肢のようです。しかし、実行されたコマンドまたはスクリプトが終了するとセッションが終了するのはなぜですか?
編集:私もインターネットで見つかった例を試しました:
screen -dmS name
screen -S name -p windowname -X stuff 'mc
'
不足なし!それに取り付けた後(screen -R name
)ミッドナイトコマンダーが実行されていないことがわかります。作者の例によると、そうなるでしょう。
screen
は閉じないようにしますか?ところで:私はまだその考えを理解していません!を呼び出すとscreen -dmS name
、切り離されたウィンドウを作成します。しかし、自動的に閉じられるわけではありません!しかし、その切り離された画面で何かを実行したい場合、実行が完了すると終了します。どうして?ここにはロジックがありません。ウィンドウに何もしないようにすることはできますが、ウィンドウに何かをしてから何もしないようにすることはできませんか?
&
最後に)実行されますが、バグのあるサーバー(QNAP)により、セッションが終了すると終了します(通常のLinuxでは実行しないでください&
)。だから、私はstart_udp_listeners.sh
終了後に何もするつもりはなく、セッションが終了するのを防ぐ方法だけを探しています。そうでない限り、私のPHPリスナーはうまく機能しています。
screen
、1つのウィンドウを作成して1つのコマンドを実行します。コマンドが終了すると、ウィンドウが閉じscreen
て何もすることがないため、終了します。