功能需求
1、列出所有进程的信息(启动用户、进场ID、占用CPU、占用内存、状态、执行命令)
2、排序
3、输出结果
#! /bin/sh
# 查询占用CPU的进程
dateString=$(date +"%Y-%m-%d_%H:%M:%S")
resultFile="result_track-cpu_${dateString}.txt"
processCount=3
echo "结果文件: $resultFile"
heads[1]='User(用户)'
heads[2]='PID(进程)'
heads[3]='%CPU(占用CPU)'
heads[4]='%MEM(占用内存)'
heads[8]='STAT(状态)'
heads[11]='COMMAND(命令)'
getLinePart() {
local line=$1
local serialNumber=$2
if [ $serialNumber -eq 11 ]
then
echo $line | awk '{for (i=11;i<=NF;i++) prin $i;}' | xargs
else
echo $line | awk "{print \$$[$serialNumber]}"
fi
}
ps -aux | sort -k3nr | head -n $processCount | while read line
do
cpuPart=`getLinePart "$line" 3`
if [ $cpuPart == '0.0' ]
then
break
fi
processSerialNumber = $((processSerialNumber + 1))
echo "进程: $processSerialNumber" >> $resultFile
echo "${line}">>$resultFile
for headSerialNumber in ${!heads[@]}
do
title=${heads[$headSerialNumber]}
part=`getLinePart "$line" $headSerialNumber`
echo "${title}: $part" >> $resultFile
done
echo "" >> $resultFile
done
echo "结果文件: $resultFile"