一共两个脚本
monitor.sh
#!/bin/bash
log=/var/log/`date '+%Y-%m-%d'`.monitor.log
while [[ ture ]]; do
bash `pwd`/excute.sh >> ${log}
sleep 10
done
excute.sh
#!/bin/bash
disk=sda
ethn=ens192
function ltime() {
echo -e "\n"
echo -e "time:\t\t"`date '+%Y/%m/%d-%k:%M:%S'`
}
function mem() {
#mem
echo -e "mem_use:\t"`free -m | awk 'NR==2{print $3"MB"}'`
}
function cpu() {
#CPU
total=`vmstat 1 5|awk '{x+=$13;y+=$14}END{print x+y}'`
average=$(echo "scale=2;$total/5"|bc)
echo -e "cpu_use:\t$average%"
}
function disk_io() {
#IO
echo -e "disk_io:\t"`iostat | awk 'BEGIN{disk="'"$disk"'"}{if ($1==disk) print $1" tps:"$2" kB_read/s:"$3" kB_wrtn/s:"$4;}'`
}
function network() {
RX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}')
TX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}')
sleep 1
RX_next=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}')
TX_next=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}')
RX=$((${RX_next}-${RX_pre}))
TX=$((${TX_next}-${TX_pre}))
if [[ $RX -lt 1024 ]];then
RX="${RX}B/s"
elif [[ $RX -gt 1048576 ]];then
RX=$(echo $RX | awk '{print $1/1048576 "MB/s"}')
else
RX=$(echo $RX | awk '{print $1/1024 "KB/s"}')
fi
if [[ $TX -lt 1024 ]];then
TX="${TX}B/s"
elif [[ $TX -gt 1048576 ]];then
TX=$(echo $TX | awk '{print $1/1048576 "MB/s"}')
else
TX=$(echo $TX | awk '{print $1/1024 "KB/s"}')
fi
echo -e "network:\t$ethn \t RX:$RX TX:$TX "
}
ltime
mem
cpu
disk_io
network