答案1
您可以透過以下命令查看特殊進程使用了多少交換分區:
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
您可以將此腳本設定為運行於啟動所以它每次都會建立日誌。