sudoで実行されている一部のプロセスを終了し、フルネームで一致させ、生のコマンド呼び出しの数を数える必要があります。
各プロセスにはコマンド自体とコマンドsudo
自体の2つのプロセスがありますが、この問題を解決できます。
$ sudo -b perf record sleep 100
$ pgrep -fa '/perf record'
2245700 /usr/lib/linux-tools/.../perf record sleep 100
問題は、私が呼び出すときに自分自身をsudo pkill
見つけて殺して計算することです。
$ sudo pkill -ef '/perf record' | wc -l
2
この場合、pkillに自分自身を含めないようにする簡単な方法はありますか?
私は許可されたpidファイルを試しましたが、pgrep / pkillドキュメントが見つからないため、デフォルトのフォーマットでは機能しないようです。
$ pgrep -f '/perf record' | tee /tmp/pids
$ sudo pkill -F /tmp/pids
killed (pid 2249211)
最初の人だけが殺されるからです。文書には次のように記載されています。
-F, --pidfile file
Read PID's from file. This option is perhaps more useful for pkill than pgrep.
しかし、その意味はあいまいですPID's
。
ベストアンサー1
努力する:
sudo pkill -ef '/[p]erf record' | wc -l
以下は、1文字だけを含む文字クラスを使用するヒントですp
。
正規表現で を探していますが、/perf
コマンドsudo pkill
ラインにはありますが、/[p]erf
一致しません。
このアプローチは、次のコマンドで数十年間使用されてきました。ps aux | awk '/[f]oo/ {print $1}'