私は一つの方法を知っています./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)があります。