将一下内容保存到一个文件中,赋予可执行权限。运行即可。如果想将输出内容,你可以用管道符号和tee命令结合,将监控信息输出到一个文件日志中。
#!/bin/sh
##########
myName=$0
cmd=$1
mypid=$$
myPath=`echo ${myName} | sed "s/getcpu.sh//g"`
myoutputpath="${myPath}opbill/"
mypid_file="${myoutputpath}.mypid"
mytmp_file="${myoutputpath}.tmpMyCmd"
mynetstat_file="${myoutputpath}.netstat"
###########
. ${myPath}/common.sh
. ${myPath}/config.ini
##########
userName=$userName
cmdKeys=`echo "${MYCOMMAND}" | sed "s/ /__/g"`
cmdKeys=`echo "${cmdKeys}" | sed "s/||/ /g"`
filterKey="grep |getcpu.sh|vi |tail |mycmd.sh"
############
if [ -d ${myoutputpath} ]; then
echo "${myoutputpath} exist"
else
mkdir -p $myoutputpath
echo "mkdir $myoutputpath"
fi
##########
if [ "aaa${cmd}" = "aaastop" ]; then
tmpPid=`cat ${mypid_file}`
echo "$tmpPid"
tmpUser=`whoami`
upids=`ps -o pid,ppid -u $tmpUser |${gv} "PID" |grep "${tmpPid}" |awk '{print $1}'`
for upid in $upids
do
echo "${upid} killed!"
kill -9 $upid
done
exit
fi
#############
if [ -f ${mypid_file} ]; then
tmpPid=`cat ${mypid_file}`
line=`${pp} $tmpPid | grep $myName `
if [ "aaa$line" = "aaa" ]; then
echo "$mypid" > ${mypid_file}
else
echo "Another $myName is runing !!"
exit
fi
else
echo "$mypid" > ${mypid_file}
chmod 777 ${mypid_file}
fi
#############
if [ "aaa$cmdKeys" = "aaa" ]; then
echo "cmdKey is Null!!"
exit
fi
#######################################################
###############################################################
GetFormatHeadLine
for cmdKey in $cmdKeys
do
echo "${headLine}" >> $myoutputpath/${userName}_${cmdKey}.txt
done
${sar} >> ${myoutputpath}/system.txt &
#echo "${headLine}"
while [ true ]
do
#netstat -utnp > ${mynetstat_file}
lsof -anPi >${mynetstat_file}
for cmdKey in $cmdKeys
do
key=`echo "${cmdKey}" | sed "s/__/ /g"`
# upids=`${pu} $userName | ${gv} "${filterKey}" | grep -i "${key}" |awk '{print $1}'`
upids=`${pu} $LOGNAME | ${gv} "${filterKey}" | grep -i "${key}" |awk '{print $1}'`
if [ "aaa$upids" = "aaa" ]; then
echo "Cannot Find pid!cmdKey is [$cmdKey]"
else
for upid in $upids
do
GetPidInfo $upid
echo "${valueLine}" >> $myoutputpath/${userName}_${cmdKey}.txt
done
fi
done
#echo "okok"
sleep 5
done