Linuxで.shファイルを実行すると、バックグラウンドで何が起こっているのかをどうやって確認できますか? [閉鎖]

Linuxで.shファイルを実行すると、バックグラウンドで何が起こっているのかをどうやって確認できますか? [閉鎖]

私は一つの方法を知っています./filename.sh > log.txt。ただし、を使用してファイルを実行すると、ログファイルにはコンソールに表示される内容が含まれます./filename.sh

バックグラウンドプロセスはログファイルには表示されません。 「バックグラウンドプロセス」とは、コンパイラが各行を評価する方法を意味します(「デバッグ」が適切な単語のようです)。

このバックグラウンドプロセスをログファイルにどのように配置できますか?

答え1

あなたのコメントに基づいて:

.shファイルを実行するときにbashがシェルスクリプトの各行をどのように実行するかを知りたいです。

bashを使用している場合、探しているものは次のとおりです。

bash -x ./filename.sh

または

bash -x ./filename.sh > log.txt

または、以下を追加できます。

set -x

コンテンツfilename.sh

答え2

スクリプトの上部(Shebangの後ろ)に次の行を追加します。

exec >/path/to/log.txt

スクリプトのSTDOUTをにリダイレクトします/path/to/log.txt

STDOUTとSTDERRの両方をリダイレクトしたい場合:

exec >/path/to/log.txt 2>&1

または単にSTDERR:

exec 2>/path/to/log.txt

ログファイルには、スクリプトがフォアグラウンドにあるかバックグラウンドにあるかに関係なく、STDOUT(および/またはSTDERR)があります。

関連情報