この質問はこの質問と重複しません。実行中のプロセスの現在の作業ディレクトリをお探しですか?、なぜなら書き込みディレクトリは、作業ディレクトリと異なる場合があります。
たとえば、my_script.sh
〜/で2つのプロセスを2回(1回)実行して起動します。
では、my_script.sh
timestampというフォルダに出力を記録しました。したがって、作業ディレクトリが同じであっても、両方のプロセスは実際には~/1212_000001/
などの異なるディレクトリに書き込みます~/1212_000003/
。 (最初のプロセスは12月12日00:00:01に開始され、2番目のプロセスは2秒後に開始されました。)
リンクされた質問の解決策は両方のプロセス~/
に対して同じ結果を返すので、私の目的には合いません。
どうすればいいですか?
答え1
スクリプトの作成方法によって異なります。
- 直接リダイレクトする場合(たとえば
my_script.sh > ~/1212_000001/some_file
)を使用できlsof -p <script-pid>
、出力ディレクトリに開かれたファイルが表示されます。 - そうでなければ、' の出力は
ps axjf
スクリプトによって開始された子プロセスの pid 依存関係を表示するので、コマンド引数にただちに情報を提供したり、子プロセスlsof -p <sub-process-pid>
で実行したりできます。
もちろん、この方法は短い時間内にこのようなことが起こると効果はありません。
「strace」コマンドを使用して「open」呼び出しを見つけることもできます。