swapを使用しているプロセスをシェルスクリプトで調べる
下記の以前の投稿でpsコマンドでswapで使用しているプロセスを確認しましたが、もう少し見やすくするにはシェルスクリプトを使用するのが便利です。
smemを利用してSWAPを使用しているプロセスを確認する
smemのサービスを導入してもいいけど、頻繁に使わないので自分はシェルスクリプトを利用して確認しました。
以下はsmemを利用したやり方ですが、動作未検証です
# EPELが未有効の場合は有効化してインストール sudo dnf install -y epel-release sudo dnf install -y smem # SWAP使用量の多い順(人間が見やすい単位)で表示 sudo smem -s swap -r -k | head -n 15
シェルスクリプトを利用してSWAPを使用しているプロセスを確認する
コードは以下になります
1.シェルスクリプトを作成します。rootで実施するかコード内にsudoを付与する必要があります
# vim get_swap.sh
2.下記のコードで作成します
#!/bin/bash
# 各プロセスのSWAP使用量を集計して上位10件を表示するスクリプト
echo "PID SWAP使用量 プロセス名"
echo "----------------------------------------"
for status_file in /proc/[0-9]*/status; do
# ファイルが存在しない・読み込めない場合はスキップ
[ -r "$status_file" ] || continue
# PID、プロセス名、SWAP量を抽出
pid=$(basename $(dirname "$status_file"))
name=$(awk '/^Name:/ {print $2}' "$status_file")
swap=$(awk '/^VmSwap:/ {print $2}' "$status_file")
# SWAPを使用しているプロセスのみ出力用に一時保持
if [ -n "$swap" ] && [ "$swap" -gt 0 ]; then
printf "%-6s %8d kB %s\n" "$pid" "$swap" "$name"
fi
done | sort -k2 -n -r | head -n 10
3.保存してから実行権限を付与して実行します
# 実行権限を付与 # chmod +x get_swap.sh # シェルスクリプトを実行 # ./get_swap.sh PID SWAP使用量 プロセス名 ---------------------------------------- 905 350100 kB mysqld 439772 71800 kB php 710583 46800 kB php 1524568 35004 kB php 1442156 32056 kB php 1488118 31720 kB php 785780 31592 kB php 1367052 31568 kB php 622 31012 kB systemd-journal 1291681 30936 kB php

