スクリプトを作成しようとしています:
screen
セッションを開始します私はscreen -X program
またはscreen -S somename
オプションと組み合わせてscreen -D
または-d
に続いてprogram
に続いて-m
を組み合わせて、あらゆる種類の組み合わせを試してきました。関連する質問と回答を見つけましたが、何も機能しません。
私が得ることができた最も近いものはこれでした:
screen -S MySessionName -d -m myprogram
これにより、myprogram
を実行して、バックグラウンドで新しいスクリーンセッションが開始されます。 myprogram
が終了する(すぐに)場合を除き、screenセッションは終了しますが、実行し続けたいと思います。
方法1
ここで説明したデモセットアップをマシンで作成しました。あなたが報告した問題にも直面しました。しかし、script
の小さな行を追加すると、私の問題は解決しました。
myprogram
の最後に次の行を追加しました
exec $Shell
スクリプトが終了すると、Bashプロセスはそれ自体を新しい呼び出しに置き換えます。
方法2
または、最初にdetached screen
を開始し、stuff
を使用してその画面にコマンドを送信する次の方法を試すことができます
このためには、デタッチされた画面を開始する必要があります。
screen -dmS MySessionName
そして、その画面にスクリプトを送信します。
screen -S MySessionName -p 0 -X stuff 'myprogram\n'
これもうまくいきました。