システム内のすべてのプロセスに関する情報を取得したいと思います。ps
プロセスを除外それ自体。
つまり、次のようになります。
ps --no-headers --pid 1111 -N
どこ1111
プロセスID今ps
コマンドを実行してください。
私は次のことを試しました
ps --no-headers --ppid $$ -N
しかし、これはいいえps
以下の「サブプロセス」で実行されている場合:
IFS=' ' read pctd proc <<<$(/bin/ps --no-headers --ppid $$ -No pcpu,pid,comm --sort=+pcpu | tail -n 1)
最後のコマンドは、CPU使用率、プロセスID、および「最新」の最も多くのCPUを使用したプロセス名を取得しようとします。
IFS=' ' read pctd proc <<<$(/bin/ps --no-headers -eo pcpu,pid,comm --sort=+pcpu | tail -1)
最近までうまくいきました。しかし、Ubuntu 23.04(またはカーネル6.x)にアップデートしてps
起動時々CPUを100%使用していることを示します。。
現在、次は回避策のようです(ただし安全ではありません)。
IFS=' ' read pctd proc <<<$(/bin/ps --no-headers -eo pcpu,pid,comm --sort=+pcpu | grep -v \ ps | tail -1)
ベストアンサー1
ps
私を除く:
sh -c 'exec ps --no-headers --pid "$$" -N'
sh
独自のPIDをに変更して$$
から自分をに置き換えますps
。 PIDは変更されません。これがexec
うまくいく方法です。このメソッドはps
独自のPIDをオプションパラメータとして受け取ります--pid
。
この方法は除外されます。これ ps
ps
他のプロセス(存在する場合)は適用されません。