私は、スクリーンセッションで実行されているスクリプトの開始と停止を伴うメンテナンスルーチンの自動化に取り組んでいます。私のアプローチは、画面セッションを終了してから再起動し、画面にアタッチする必要なく画面を作成し、コマンドを渡す機能を使用してスクリプト内からコマンドを実行することです。
しかし、私はこれに苦労しています。を使用して添付せずに画面を正しく作成できますscreen -d -m -S screen_name
。ただし、以下に基づいてコマンドを実行する場合:
screen -S screen_name-X stuff "command 1"'echo -ne '\015''"command 2"'echo -ne '\015''
echo -ne '\ 015'は一重引用符ではなくバッククォートでラップされます。使用するコマンドがディレクトリに移動し、そこにあるスクリプトを実行しているときに、ユーザーがEnterキーを押すのをシミュレートするためです。このコマンドは機能しますが、作成された画面が接続されている場合のみです。画面を作成し、画面内でコマンドを実行するプロセスを自動化しようとしているので、スクリプト内でアタッチおよびデタッチする必要はありません。画面内で実行し、結果に応じて編集する必要があるコマンドを含むシェルスクリプトを作成することをお勧めします。
画面を作成し、1つのコマンドで画面内でコマンドを実行する方法はありますか、または作成後、コマンドの実行前に画面にアタッチする必要はありませんか?
前もって感謝します。
**更新-シェルスクリプト内で実行する必要があるコマンドを配置する提案を試みたが、画面を正常に作成し、画面内からコマンドを実行できましたが、スクリプトの実行が停止すると動作する画面も閉じます。このスクリプトはロギングスクリプトであり、sys adminの知識または開発しようとしているスクリプトによってのみ停止する必要があるため、これは問題ではありませんが、画面が次のようになるように画面をセットアップすることが望ましいでしょう。スクリプトが停止しても消えません。この動作を達成することは可能ですか?**
.screenrc
は、lineを含むspecial を使用しzombie kr
て、完成したウィンドウを開いたままにし、を押しk
てwinodwを閉じるかr
、ウィンドウでコマンドを再度実行できます。これはデフォルトの.screenrcにあります。