どのプロセスを追跡してはいけませんか?

どのプロセスを追跡してはいけませんか?

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用システムなどのシステム全体の監査システム(例とガイダンスを参照)ここまたはここ)がより適切かもしれません。

関連情報