답변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
그리고 이 스크립트가 다음에서 실행되도록 설정할 수 있습니다.시작그래서 매번 로그를 생성합니다.