スクリプト生成から完全な追跡は可能ですか?どのように?

スクリプト生成から完全な追跡は可能ですか?どのように?

straceが書き込むファイルをキャプチャするために、straceをプログラムにリンクしたいとしましょう。既存のPIDが必要です。 straceを接続すると、その頃はスクリプトがファイルを作成した可能性があり、私はそのファイルを見逃すでしょう。古典的なレース条件。今私がやっていることは、完全なトレースをsleep 1得るために以前にコマンドを実行する以外に何もしないオリジナルスクリプトを実行する別のプログラムを作成することです。これは悪いと思います。多数のスクリプトを実行すると、パフォーマンスの問題が発生する可能性があります。しかし、既存のPIDがなければstraceをリンクすることはできません。または?

答え1

straceスクリプトを実行すると、元のスクリプトを起動するラッパーに置き換えます。これには次のものが含まれます。

mv yourscript /somewhere/else/yourscript

それyourscriptから

#!/bin/sh
OUTPUT_TO=`mktemp /tmp/yourscript.$$.XXXXXXXXXX` || exit 1
exec strace -o $OUTPUT_TO ... /somewhere/else/yourscript "$@"

必要な...他のパラメータはどこにありますか?strace

あるいは、sysdigプロセスIDやラッパースクリプトなしでファイル名またはユーザー名で追跡できます。

sysdig -p '%fd.name' proc.name contains yourscript

関連情報