swapを使用しているプロセスをシェルスクリプトで調べる

下記の以前の投稿でpsコマンドでswapで使用しているプロセスを確認しましたが、もう少し見やすくするにはシェルスクリプトを使用するのが便利です。

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

\ 最新情報をチェック /

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です