psの出力アライメントは機能しません。

psの出力アライメントは機能しません。

出力をソートしたいです。次のコマンドベースpcpu

ps -p 29492 -L -o pid,tid,psr,pcpu

私は以下を試しました:

ps -p 29492 -L -o pid,tid,psr,pcpu --sort=pcpu

しかし、これはうまくいかないようです。この問題をどのように解決できますか?

答え1

実装時のps順序は、スレッドではなくプロセスにのみ適用される可能性が高いです。fancy_spew()存在するprocpsdisplay.c)。私が知っている限り、スレッドをソートするには出力を後処理する必要があります。

ps -p 29492 -L -o pid,tid,psr,pcpu | sort -n -k4,4

ただし、出力でヘッダー行が混乱します。ヘッダー行を保持するには、それを取り出して別々に印刷できます。

ps -p 29492 -L -o pid,tid,psr,pcpu | sed -e1\!b -e'w /dev/fd/2' -ed | sort -n -k4,4

すべての出力セレクタに空のヘッダー値を指定して、ヘッダー行を単純に削除することもできます。

ps -p 29492 -L -o pid=,tid=,psr=,pcpu= | sort -n -k4,4

-rこれらすべての場合にパラメータを追加して順序を変更できますsort。ソート順序はまたLC_NUMERICはの影響を受ける可能性がありますLC_ALL。設定はLC_ALL=C小数点を使用して値を正しくソートします.

関連情報