#!/bin/sh
if [ $# -ne 1 ]; then
echo "Please input hostname"
exit 1;
fi
echo "lsof agent start !"
JPS=`jps | grep Bootstrap | awk '{print $1}'`
PID_FILE="lsof_agent_$1.pid"
if [ $JPS ]; then
touch $PID_FILE
while :
do
if [ -f $PID_FILE ]; then
LOG_FILE=`date "+%Y%m%d"`_lsof_agent_$1.log
LSOF=`lsof | grep $JPS | wc -l`;
LSOF_ALL=`lsof | wc -l`;
echo `date "+%Y%m%d %H%M%S"` $LSOF $LSOF_ALL >> $LOG_FILE;
sleep 2;
else
exit 1;
fi
done
else
echo "not found JPS...";
fi
※シェルスクリプトの名前は「lsof_agent.sh」としてます
■概要
開いているすべてのファイル数とJVM上で動作しているtomcatが開いているファイル数を監視し続けます
「日付_lsof_agent_hostname.log」というファイルにlsofの結果を出力し続けます
ログファイルは日付をまたぐと自動でローテートしてくれます
実行すると「lsof_agent_hostname.pid」というファイルができるのて停止する場合にはこのファイルを削除します
■使い方
./lsof_agent.sh hostname &
lsofの結果をgrepしているだけではあるので必要に応じてgrepする項目を変更していただければと思います
ちなみにlsofは基本的にroot権限がないと実行できないので、rootで実行してください
わろたw
返信削除