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