スクリーンセッション内でスクリプトからアプリケーションを起動したいと思います。
スクリプトがなければ、画面を起動し、crtl-acでN個のウィンドウを開き、各ウィンドウでプログラムを実行します。
私は次を試しました
screen -d -m -S test
screen -S test -X exec tail -f /var/log/messages
screen -S test -X screen
screen -S test -X exec tail -f /var/log/xinetd.log
しかし、セッションテールをアタッチすると実行されません。直後にセッションを接続し、別の端末からscreen -d -m -S startup
実行するscreen -S startup -X exec tail -f /var/log/messages
と機能します。
私は何か見落としてますか ?
AlexDの回答後に編集します。
半分動作するソリューションは
screen -d -m -S test tail -f /var/log/messages
screen -S test -X screen tail -f /var/log/xinetd.log
スクリーンコマンド(-Xの後のコマンド)をチェーンコマンドで実行すると、execが動作しない可能性があります。これは、おそらく、execは、現在のウィンドウが定義されることを期待しているためです。このヒントをくれたAlexDに感謝します。
しかし、奇妙な副作用があります。プログラムが停止すると(スクリーンセッションを接続してテールをcrtl-cするか、テールを殺すと)、スクリーンウィンドウが閉じます。
したがって、動作はCrtl-A cと同じではなく、コマンドを実行
します。別の副作用は、2つのコマンドをチェーンできないことです。
screen
常にそれはツールの正常な機能です:)あなたが実行..so場合-とコマンドが終了を発表しましたされたときに終了しscreen top
、あなたが終了したときにtop
、screen
あまりにも、終了します