シェルスクリプトでscreenの代わりにbash disownを使用するときに注意がありますか?

シェルスクリプトでscreenの代わりにbash disownを使用するときに注意がありますか?

起動してログファイルに出力するプロセスがあります。これを開始するスクリプトはGNUで始まり、screen次にtail

プロセスはすぐにログファイルに書き始め、プロンプトに戻る前に設定エラーを見つけるためにこの方法で起動するのを見ることができると便利ですctrl-c。私はこれがtail録音中のプロセスを停止して終了しないことを知っています。

screen私が望むのは、実行中のプロセスが初期化が完了した後にのみアクションを取るシェルスクリプトで2番目の監視プロセスを開始することです。これはすべての開始ログ出力後にのみ発生します。

screen起動スクリプトを繰り返してプロセスが初期化され、操作が実行されるのを待つと、ライブtail出力が失われます。ループ内で待機中にログを監視してその内容を出力しようとすると、ユーザーは初期化がctrl-c完了するのを待つループを中断しない限り、スクリプトを早く終了できません。

監視ファイルとtail -fログファイルをサポートするためにジョブを開始し、ログオフしてもジョブが終了しないことを確認disownできます。

これは簡単な質問に関する多くの情報ですが、より良い選択肢があるかどうかを明確に説明するために、私のユースケースに関連するすべての詳細を含めたいと思いました。

また、注目すべき点は他のものを始めることができますが、screen対話する必要はなく、disownより簡単なオプションのようです。

また、親シェルへの出力を防ぐために、必要に応じて出力をリダイレクトする必要があることも知っています。

スクリプトで実行した後にログアウトして再度ログインしたときに正しくテストされ実行されるサンプルコード:

#!/bin/bash

( sleep 10s; echo 1 > b ) &
disown

ベストアンサー1

おすすめ記事