strace
私は名前で「現在のユーザーのプロセスセットを取得する」小さな関数を作成しました。
function pstrace() {
local pattern="$1";
shift;
prefixDashP $(pgrep -U $(whoami) $pattern) | xargs strace -o /dev/stdout $@;
}
function prefixDashP() {
local new_args=();
for arg; do
new_args+=( '-p' );
new_args+=( "$arg" );
done;
for arg in "${new_args[@]}"; do
echo "$arg";
done;
}
# Usage: pstrace pattern1 pattern2 ...
問題は、誤って多すぎるモードを指定した場合、監視すべきでないプロセスを監視しようとし、システムが停止することです。
常に除外できるプロセスのリストはありますか?
答え1
処理された出力に関連する進捗状況を追跡できませんstrace
。これは、少なくとも端末エミュレータでstraceを実行していることを意味します。システム全体が停止するとは思わない。ルートとして実行しstrace
てXサーバーを追跡しない限り、速度が遅くなるため、別の端末に切り替えてstraceプロセスを終了できる必要があります。
strace 出力をファイルに送信することは危険性が低く、おそらくより便利です。less
起動後に起動するstrace
か、誤って追跡した場合は、ターミナルエミュレータを終了してください。
多くのプロセスを追跡したい場合は、間違ったツールを使用している可能性があります。 Linux用システムなどのシステム全体の監査システム(例とガイダンスを参照)ここまたはここ)がより適切かもしれません。