psコマンドの出力とその列名を印刷するには?

psコマンドの出力とその列名を印刷するには?

RHEL 7.6のCLIでは、psコマンドは多くの出力列を表示します。私はそれらのいくつかが何を意味するのかを推測することができますが、すべて知っています。 psコマンドの結果とその列名を表示できますか?

答え1

まず、列名を表示してからコマンドを実行します。

$ ps | head -n1; ps | grep localhost

PID TTY           TIME CMD
14270 ttys001    0:00.04 ssh example@localhost

編集者:Aクリーナーソリューション(提案者@jeremy-borden):

$ ps | grep -E 'localhost|PID'

答え2

psの列ヘッダーは、コマンドの実行時に最初に印刷されるものです。ヘッダーが何であるかを見たい場合は、psをheadにパイプするなどの簡単な操作を実行して確認できます。これは列ps | head -n1ヘッダーのみを表示します。

ps出力(かなり長い可能性があります)からヘッダーを表示するには、コマンドpsawk

おそらく、この問題(または一般的に)を処理するより賢い方法がありますawk。しかし、私がすることは次のとおりです... psの例を使用しますが、ps -efすべてに適用できると思います。

ps -ef | awk '{if(NR==1){HEADER=$0} if(NR%10 == 1){print "\n"HEADER}{print $0}}'

awkステートメントは最初に最初の行にあることを確認し、そうであれば変数をその行の値に設定しますHEADER。この値は次のとおりです。if(NR==1){HEADER=$0}

しかし、おそらくヘッダーを頻繁に印刷したいので、次の部分はレコード番号(この場合は行)が10で割られていることを確認し、そうであれば新しい行を印刷することです(分割して読みやすいようにします)。タイトル行。ヘッダーをより頻繁に印刷するには 10 をより小さい数字に変更し、ヘッダーをより頻繁に印刷するには 10 をより大きな数字に変更できます。if(NR%10 ==1){print "\n"HEADER}

awk ステートメントの最後の部分は、awk のある行を印刷します。これはps:の一般的な出力です{print $0}

関連情報