GNU/Linux >> Linux の 問題 >  >> Linux

スワップを使用しているプロセスを知るにはどうすればよいですか?

より簡潔な回答を表示するために、cyberciti.biz コマンドを改善:

(echo "COMM PID SWAP"; for file in /proc/*/status ; do awk '/^Pid|VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | grep kB | grep -wv "0 kB" | sort -k 3 -n -r) | column -t

出力例:

COMM             PID    SWAP  
dockerd          662    2736  kB
skypeforlinux    26865  1320  kB
NetworkManager   303    1112  kB
slim             392    1028  kB
redis-server     350    204   kB

ここから:

<ブロック引用>

[a] /proc/meminfo - このファイルは、システムのメモリ使用量に関する統計を報告します。これは free によって使用され、システム上の空きメモリと使用済みメモリ (物理メモリとスワップの両方) の量、およびカーネルによって使用される共有メモリとバッファの量を報告します。無料の vmstat やその他のツールを使用して、同じ情報を見つけることもできます。

[b]/proc/${PID}/smaps、/proc/${PID}/status、および /proc/${PID}/stat :これらのファイルを使用して、PID を使用して各プロセスで使用されるメモリ、ページ、およびスワップに関する情報を検索します。

[c] smem - このコマンド (python スクリプト) は、比例的に分割された共有メモリでメモリ使用量を報告します。

また、何がスワップを使用しているかを調べるも参照できます

#!/bin/bash
# Get current swap usage for all running processes
# Erik Ljungstrom 27/05/2011
SUM=0
OVERALL=0
for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` ; do
PID=`echo $DIR | cut -d / -f 3`
PROGNAME=`ps -p $PID -o comm --no-headers`
for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'`
do
let SUM=$SUM+$SWAP
done
echo "PID=$PID - Swap used: $SUM - ($PROGNAME )"
let OVERALL=$OVERALL+$SUM
SUM=0

done
echo "Overall swap used: $OVERALL"

Linux
  1. ファイルを作成しているプロセスを特定する方法は??

  2. Pidのないプロセスを特定する方法は?

  3. Linux でディスクに書き込みを行っているプロセスを特定する方法

  1. Linux でスワップ領域を使用しているプロセスを見つける方法は?

  2. どのプロセスが自分のプロセスにシグナルを送信したかをLinuxで確認するにはどうすればよいですか

  3. パーティションがマウントされているかアンマウントされているかを知るにはどうすればよいですか?

  1. Uefiを使用して起動しているかどうかを確認するにはどうすればよいですか?

  2. SWAPに行くのを防ぐには?

  3. Linux で UDP トラフィックを生成しているプロセスを特定するにはどうすればよいですか?