- 论坛徽章:
- 0
|
以前写的一段收集系统信息的脚本,文件名collectdata,看你能用上不。
格式:collectdata 输出文件名后缀|stop
如果使用“collectdata 输出文件名后缀”会被提示输入vmstat 和 iostat的时间间隔;如果使用“collectdata stop"会结束vmstat和iostat进程。
#!/bin/sh
X=$1
collect_vm ()
{
if [ -f vmstatdata"$X" ]
then
while [ "$chooseio" != yes -a "$chooseio" != y -a "$chooseio" != Y -a "$chooseio" != YES -a "$chooseio" != no -a "$chooseio" != n -a "$chooseio" != N -a "$chooseio" != NO ]
do
echo "File vmstatdata"$X" is already exist,do you want to cover with it(yes or no):\c"
read chooseio
if [ "$chooseio" = yes -o "$chooseio" = y -o "$chooseio" = Y -o "$chooseio" = YES ]
then
while true
do
date >> vmstatdata"$X"
vmstat $INTERVAL_VM 10 >> vmstatdata"$X"
done
fi
if [ "$chooseio" = no -o "$chooseio" = n -o "$chooseio" = N -o "$chooseio" = NO ]
then
echo " You didn't collect data of vmstat command!"
fi
done
else
while true
do
date >> vmstatdata"$X"
vmstat $INTERVAL_VM 10 >> vmstatdata"$X"
done
fi
return
}
collect_io ()
{
if [ -f iostatdata"$X" ]
then
while [ "$chooseio" != yes -a "$chooseio" != y -a "$chooseio" != Y -a "$chooseio" != YES -a "$chooseio" != no -a "$chooseio" != n -a "$chooseio" != N -a "$chooseio" != NO ]
do
echo "File iostatdata"$X" is already exist,do you want to cover with it(yes or no):\c"
read chooseio
if [ "$chooseio" = yes -o "$chooseio" = y -o "$chooseio" = Y -o "$chooseio" = YES ]
then
while true
do
date >> iostatdata"$X"
iostat $INTERVAL_IO 10 >> iostatdata"$X"
done
fi
if [ "$chooseio" = no -o "$chooseio" = n -o "$chooseio" = N -o "$chooseio" = NO ]
then
echo " You didn't collect data of iostat command!"
fi
done
else
while true
do
date >> iostatdata"$X"
iostat $INTERVAL_IO 10 >> iostatdata"$X"
done
fi
return
}
stopproc ()
{
ps -ef | grep collectdata | nawk '{ if ( $9 == "./collectdata" && $10 != "stop" ) print $2 }' > collectdata_pid
i=`nawk 'END{print NR}' collectdata_pid`
while [ $i -ge 1 ]
do
pid=`nawk 'NR=='$i'{print $1}' collectdata_pid`
kill $pid
i=`expr $i - 1`
done
return
}
if [ $X = stop ]
then
stopproc
else
echo "Please input interval of each command:\n"
echo "vmstat:\c"
read INTERVAL_VM
echo "iostat:\c"
read INTERVAL_IO
collect_vm &
collect_io &
fi
exit 0 |
|