追加読書

追加読書

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て他のフィールドの項目と一致せずに通常のフィールド一致を実行できますawkps通常のプログラムの出力を渡すことが知られています)。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

追加読書

  • visNetBSDライブラリ機能マニュアル。 2017年4月22日。
  • unvisFreeBSD 共通コマンドマニュアル。 2010年11月27日。
  • ジョナサン・ドボイン・ポラード(2020)。psスナックガイド。ソフトウェア。
  • ジョナサン・ドボイン・ポラード(2020)。list-process-tableスナックガイド。ソフトウェア。

おすすめ記事