実行するとtop
こんな画面が出ますが、
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
654 root 20 0 25.5g 147780 70084 S 3.7 0.9 72:08.69 Xorg
1687 me 20 0 9165008 1.4g 268488 S 1.3 8.9 163:06.01 qutebrowser
316 root -51 0 0 0 0 S 0.7 0.0 1:09.86 irq/51-DELL095A:00
683 me 20 0 810360 58212 41792 S 0.7 0.4 12:35.61 picom
702 me 20 0 246876 18032 14616 S 0.7 0.1 26:04.86 i3bar
827 me 20 0 665528 16316 9980 S 0.7 0.1 32:41.79 conky
2874827 me 20 0 6008688 209960 123060 S 0.7 1.3 0:10.84 QtWebEngineProc
675 me 20 0 175796 24656 15216 S 0.3 0.2 0:14.27 i3
771 me 9 -11 1022184 21952 12056 S 0.3 0.1 82:23.43 pulseaudio
しかし、プログラムはインタラクティブなので、時間が経つにつれて画面が変わることがわかります(時間の経過とともに情報が変わるので大丈夫です)。しかも、top | grep whatever
決して戻れないようです。
その状態のスナップショットをテキスト処理ユーティリティに送信するにはどうすればよいですか?
コメントではselectを提案しますtop -b -n 1
が、それを別のプログラムにパイプすると(または単純化のために> some-file
)一種のヘッダもあることがわかります。
top - 21:35:47 up 5 days, 7:24, 1 user, load average: 0.16, 0.41, 0.37
Tasks: 243 total, 1 running, 241 sleeping, 1 stopped, 0 zombie
%Cpu(s): 2.3 us, 3.1 sy, 0.0 ni, 93.8 id, 0.0 wa, 0.0 hi, 0.8 si, 0.0 st
MiB Mem : 15787.2 total, 1840.9 free, 5693.1 used, 8253.3 buff/cache
MiB Swap: 16384.0 total, 16375.2 free, 8.8 used. 6256.7 avail Mem
実行中のすべてのプロセスのきちんとした表形式のレポートがあれば、それはすべてです。
以外のユーティリティを使用する必要がありますかtop
?
たぶんps -e
私が追求する必要がありますか?
このソリューションを使用するシナリオは、デバッガのPIDセレクタを使用することです。ユーザーはプロセス名を作成し、PIDセレクターはその名前に基づいて実行されているプロセスのリストをフィルタリングしてから、ユーザーが希望するプロセスを選択します。対応するPIDは、デバッガを接続するために使用されます。
答え1
ps -o
書式設定されたフィールド名の出力に大きな成功を収めました。 Linuxのマニュアルページでは、最初に出力指定子に何度も言及しましたps(1)
。
まず、この部分を簡単に紹介すると、次のようになりますEXAMPLES
。
カスタム形式を使用して各プロセスを表示するには、次の手順を実行します。
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
ps axo stat, euid, ruid, tty, tpgid, sess, pgrp, ppid, pid, pcpu, comm ps -Ao pid,tt,user,fname,tmout,f,wchan
マニュアルページのこのセクションには、OUTPUT FORMAT CONTROL
このオプションの詳細が含まれています。
-o
カスタム形式を指定します。形式は、個々の出力列を指定する方法を提供する空白またはカンマ区切りリストの形式の単一パラメータです。確認されたキーワードは次のとおりです。標準書式指定子以下のセクション。タイトルの名前を変更できます(ps -o pid,ruser=実際のユーザー -o comm=コマンド) 予想通りでした。すべての列ヘッダーが空の場合(ps -o pid= -o通信=) するとヘッダ行は出力されません。
例:
最近では、監視目的でプロセスの常駐セットサイズ(RAM使用量)を取得する簡単な方法でこれを使用しました。
ps -eo pid=,rss=,comm=
出力例:
3874689 9104 sshd
3875080 8788 sshd
交換品は次comm=
のとおりですargs=
。
3874689 9104 sshd: userone [priv]
3875080 8788 sshd: usertwo [priv]
つまり、args
より一貫性のある引数を使用してコマンド名を生成しますps
。
STANDARD FORMAT SPECIFIERS
説明に引用されているセクションを含む、これらのオプションのマニュアルページをよく読むことをお勧めします-o
。明確にするために、上記の説明全体を再現しなかった。また、これを試して、区切り文字を含む出力形式を理解していることを確認するのも良い考えです。
その他の用途:
私は、、だけでなく、ps -o
指定子を一緒に使用しました。プロセスの機能をリストしたいのですが、スクリプト/コードから解析するためのより簡単な出力が必要な場合に便利です。%cpu
%mem
etime
etimes
bsdstart
lstart
ps
答え2
最後にps -e
。