ps
と同じユーティリティtop
は、複数のプロセスを同時に表示するのに適しています。ただし、単一のプロセスに対して複数のフィールドを確認するのは不便で、使用には適していませんgrep
。たとえば、
$ ps -o pid,ppid,tname,bsdstart,start_time,start,bsdtime,etime,etimes,c=LIFE%,%cpu,cputime,rss,%mem,stat,class,nice=NICE,thcount,args -p $(pgrep syncthing)
PID PPID TTY START START STARTED TIME ELAPSED ELAPSED LIFE% %CPU TIME RSS %MEM STAT CLS NICE THCNT COMMAND
20149 1836 ? 19:24 19:24 19:24:58 0:24 01:54:12 6852 0 0.3 00:00:24 38428 0.2 Ssl IDL - 13 /usr/bin/syncthing -no-browser -no-restart -logflags=0
持っている/proc/$PID/status
:
$ cat /proc/$(pgrep syncthing)/status | head
Name: syncthing
Umask: 0022
State: S (sleeping)
Tgid: 20149
Ngid: 0
Pid: 20149
PPid: 1836
TracerPid: 0
Uid: 1000 1000 1000 1000
Gid: 1000 1000 1000 1000
しかし、ここには次のような便利なフィールドがありません。
- CPU使用量
- CPU時間
- 常駐メモリサイズ/常駐セットサイズ
- メモリ比
- メモリ不足スコア
- 経過時間
- 優先順位が良い
- 入出力優先順位
私が望む出力は次のとおりです。
Name: syncthing
Process ID: 20149
Parent process ID: 1836
Full command: /usr/bin/syncthing
User: exampleuser
UID: 1000
State: Sleeping (S)
CPU priority: 19 (low)
I/O scheduling class: 2 (best-effort)
I/O priority level: 7 (low)
Start date (ISO): 2020-06-15T21:21:53-04:00
Start date (UTC): Tue Jun 16 01:21:53 UTC 2020
Process age: 01:54:12
Cumulative CPU time: 00:00:24
Cumulative user CPU time: 00:00:24
Cumulative system CPU time: 00:00:24
Out of memory score: 2
Out of memory adjustment factor: 0
Number of threads: 13
Number of child processes: 0
たとえば/proc/$PID/stat
、/proc/$PID/statm
。
そのようなユーティリティは存在しますか?
注:この質問は次の質問とは異なります。 プロセス別の詳細な分析 なぜなら、私は一定期間のパフォーマンス分析や監視を探すのではなく、上記の特定の形式の特定の分野のプロセス情報のスナップショットを探しているからです。
ベストアンサー1
はい、そのようなユーティリティです存在する。私は一つを書いた。 nosh Toolkit バージョン 1.41 が出てくると利用できます。
フィールドは(3)エンコード形式でエクスポートされるため、vis
スペースからフィールドを分離するツールを使用して機械的に解析できます。たとえば、出力を取得して誤っawk
て他のフィールドの項目と一致せずに通常のフィールド一致を実行できますawk
(ps
通常のプログラムの出力を渡すことが知られています)。grep
それからそれを渡して、unvis
人間が読める形式を取得します。
最近私が自分のプロセスを見つけた方法は次のとおりです。たとえば、次のようになります。
システム制御ps -A -o "pid、args、stime、tree、tty、uid" |マウサー awk -F$'\t' '{ if ($6==1001) printf "%8u %4u %s %s [%s] %s\\n",$1,$6,$3,$4,$5,$2 } '| 国連ワイス 少ない-S
履歴で前のコマンドを修正し、フィールドuid
とフィールド番号6の一致を追加しました。これはフィールドとして認識されないps
という点で通常のコマンドとは異なります。args
ここで(3)エンコーディングはvis
これを保証します。
stat
これはLinuxから多くを取得します。 (このツールはLinuxベースのオペレーティングシステムとFreeBSDで動作します。)互換性シムを使用している場合は、ここに示されているとを介して列を-o
選択できます。-O
出力は、実際には単一のタブで区切られた正確で機械的な分析が可能なフラットファイルテーブルです。実際に所望の形に変形が可能である。ミラーこのような:
%システム制御ps -A -o "pid、args、stime、uid" |マウサー awk '$4==1001 || NR = = 1 '| mlr --oxtab --ipprint --ifs '\t' --ops ': '猫 国連ワイス ヘッダー-n 10 PID: 4140 コマンド: -zsh 再生時間: 2020-06-16 08:39:05 ユーザーID:1001 PID: 4554 コマンド: sh /tmp/PCDM-session.sD4542 再生時間: 2020-06-16 08:39:19 ユーザーID:1001 %
両方のフィールドのスペースに注意してください。まで処理中はエンコードされたままですunvis
。
取得したツール安定して- マシンが処理できるプロセスのリストが存在します。それらは(実際には)標準ps
コマンドではありませんtop
。
追加読書
vis
。NetBSDライブラリ機能マニュアル。 2017年4月22日。unvis
。 FreeBSD 共通コマンドマニュアル。 2010年11月27日。- ジョナサン・ドボイン・ポラード(2020)。
ps
。スナックガイド。ソフトウェア。 - ジョナサン・ドボイン・ポラード(2020)。
list-process-table
。スナックガイド。ソフトウェア。