> strace w 2>&1 | grep urandom
read(4, "/usr/bin/grep\0urandom\0", 2047) = 22
>
「w」にランダムが必要なのはなぜですか?この状況を避ける方法は?
修正する:
> strace w 2>&1 | awk '/urandom/'
read(4, "awk\0/urandom/\0", 2047) = 14
>
それでは、フィルタリングはランダムに関連していますか?
> strace who 2>&1 | grep urandom
>
では、なぜ「誰」が影響を受けないのですか?
ベストアンサー1
勝つ現在のコンピュータのユーザーに関する情報を表示します。そして彼らのプロセス
ユーザーのプロセスを表示するためにコンピュータで実行されているすべてのプロセスを通過します。これを試してみましょう:
$ strace -o w.trace w | grep whatever
トレースで次の行を見つけます(Linuxシステムで)。
open("/proc/8286/cmdline", O_RDONLY) = 4
read(4, "grep\0whatever\0", 2047) = 14
すべてのプロセス(表示されていない)をw
明示的に参照して表示できるコマンドラインを表示します。/proc
それはgrep
それと平行なものを発見し、それがまさにstrace
それがすることです。パイプは同時に2つのプロセスを開始する以外には関係ありません。いくつかの点では、grep自体を見るのと似ていますps | grep
。
who
他のほとんどのコマンドはプロセスに関する情報を必要とせず、プロセスを見つけられないため、追跡時に同じ情報を見ることはできません。