我正在尝试创建一个脚本,允许我监视CPU利用率、内存利用率、I/O利用率和网络利用率。目前,我有一个脚本,应该在linux上运行必要的命令。希望在最后,我能够每15分钟运行一次,然后使用特定的信息来分析数据。以下是脚本:
#!/bin/sh
########################################################
OUTPUT="ServerPerf`date '+%d%m%y'`.out"
(
echo "=================================================="
echo " Script Starting Time : `date` "
echo "================================================="
echo " Disk I/O Status "
echo "================================================="
echo
iostat
echo
echo "================================================="
echo "##################################################"
echo " NETWORK TCP PARAMETERS STATUS "
echo "##################################################"
echo
echo
netstat -sp tcp
echo
echo " Processes List "
echo
ps -elf
echo
echo " END "
echo
echo "##################################################"
echo "##################################################"
echo " NETWORK CONNECTION PARAMETER "
echo "##################################################"
echo
echo
netstat -an
echo
echo
echo "##################################################"
echo " NETWORK TRAFFIC STATUS ON INTERFACES "
echo "##################################################"
echo
echo
netstat -i
echo
echo
echo "##################################################"
echo " SERVER MEMORY/CPU Utilization Report "
echo "##################################################"
echo
top -d1 -n 5
echo "=================================================="
echo " VMSTAT INFO "
echo "=================================================="
echo
vmstat 5 5
echo
echo "=================================================="
echo " Script Ending Time : `date` "
echo
echo "=================================================="
) >> $OUTPUT现在,我想从创建的这些文件中获取有用的数据。有几个类别可以将数据分类:
Percentage
我试图使用这些命令来生成这5个文件,并且似乎遇到了困难。
grep "load avg" /home/test/logs/ServerPerf180610.out | awk '{ print $6 }' | awk -F, '{ print $1 }' > load_avg.txt
grep "CPU states" /home/test/logs/ServerPerf180610.out | awk '{ print $3 }' | awk -F% '{ print $1 }' > cpu_idle.txt
grep "CPU states" /home/test/logs/ServerPerf180610.out | awk '{ print $7 }' | awk -F% '{ print $1 }' > cpu_kernel.txt
grep "Memory" /home/test/logs/ServerPerf180610.out | awk '{ print $5 }' | awk -FG '{ print $1 }' > memory_util.txt
grep "Memory" /home/test/logs/ServerPerf180610.out | awk '{ print $11 }' | awk -FG '{ print $1 }' > swap_util.txt当这些命令运行时,输出文件就是空的。有人知道我为什么不能生成这些文件吗?
我真的很感激你的帮助。
谢谢你,亚伦
UDPATE:下面是输出文件的副本:http://www.queencitytech.com/ServerPerfRepo180610.out
发布于 2010-06-18 19:41:44
也许这是一个错误,但您正在搜索的文件和您正在创建的文件是不同的。
也就是说,DAY-MONTH-YEAR,行表示OUTPUT=...,而grep行则表示MONTH-DAY-YEAR
编辑:好的,您发布了输出文件。其中有各种特殊的字符,来自top命令。您能将批处理(top -d1 -n1 -b) arg添加到top以隐藏它吗?
另一个编辑:您的grep命令似乎是特定于案例的。这是故意的吗?结果没有匹配的几个grep过滤器。尝试将忽略情况(grep -i)添加到命令中。此外,您正在搜索"load“,但是输出显示"load”,所以您永远不会找到它。
https://stackoverflow.com/questions/3072542
复制相似问题