答え1
次のコマンドで、特別なプロセスが swap パーティションをどれだけ使用しているかを確認できます。
cat /proc/"PID"/status | grep "^VmSwap"
PID
次のコマンドで見つけることができます:
ps -A | grep "Application_name"
ただし、どのプロセスがスワップ パーティションを使用しているかを確認したい場合は、次のスクリプトを使用できます。
#!/bin/bash
for i in /proc/*/status ; do
vmswap=$(cat $i | grep "^VmSwap")
echo "$vmswap" | grep -qv ' 0 kB'
if [ $? == 0 ] && [ "$vmswap" != "" ] ; then
echo "$i : $vmswap"
fi
done
次に、スクリプトによって返される PID からアプリケーション名を見つけることができます。
アップデート: このスクリプトを変更して、10 秒ごとにログ ファイルを作成するようにしました (時間は変更できます)。そのファイルでは、このスクリプトを実行した瞬間から現在までの多くのプロセスを確認できます。
#!/bin/bash
counter=1
touch ~/swap_process_usage.log
while true ; do
echo -e "************************************\nSwap's process in count $counter " >> ~/swap_process_usage.log
for i in /proc/*/status ; do
vmswap=$(cat $i | grep "^VmSwap")
echo "$vmswap" | grep -qv ' 0 kB'
if [ $? == 0 ] && [ "$vmswap" != "" ] ; then
pid=$(echo "$i" | tr -d /proc/ | tr -d status)
proc_name=$(ps -p $pid -o comm=)
echo "$proc_name : $pid : $vmswap" >> ~/swap_process_usage.log
fi
done
sleep 10s
counter=$((counter+1))
done
このスクリプトを次のように実行するように設定できます。起動するそのため、毎回ログが作成されます。