获取程序占用内存,cpu使用率,服务器ip,程序进程信息并定时生成xml文件

本文介绍如何使用Shell脚本获取服务器的IP地址、程序的CPU和内存使用率,并定时生成XML文件进行监控。脚本通过`ifconfig`命令获取IP,利用`ps`命令检查进程状态,计算CPU和内存使用率,并使用`date`命令获取时间戳。文章还提及了在执行定时任务时可能遇到的权限问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

shell脚本编写

由于工作原因,目前遇到一个问题,要求对程序所在服务器进行实时监控,主要监控程序的CPU利用率,程序的内存占用率。刚开始考虑用代码去写,考虑了下,还得java,再结合linux命令,写起来有点麻烦,于是想到了直接用shell编写一个定时脚本。

需求

**文件编码使用utf-8格式编码。文件产生频率为每5分钟产生一个文件,新产生的文件覆盖上一次产生的文件。文件格式为xml文件,格式样例如下: **
在这里插入图片描述

编写生成各字段要求的值

#!/bin/bash
#author weixg
#xml文件名
fileName="zhywgl_ywgl_waywgl.xml"
#系统程序名(进程名)
procName="FlowServer"
#版本号
procVersion="1.0"
#最近启用时间
procStartTime=`ps -eo lstart,command| grep -v 'grep'| grep -w $procName | awk '{print($1" "$2" "$3" "$4" "$5);}'`
#程序接收流量速率
inputRate="-1"
#程序输出流量速率
outputRate="-1"
#程序接收日志量大小
inputLog="-1"
#程序输出日志量大小
outputLog="-1"
#统计周期,以分钟为单位
duration="5"
#提取本服务器的ip地址信息
IP=`/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"` 
#服务器用户默认root
psUser=root
#查看进程是否存在
pid=`ps -ef | grep -w $procName | grep -v 'grep' | awk '{print $2;}'`
if [ "$pid" != "" ]; then 
   ProcAlive=1
else
   ProcAlive=0
fi
#cpu使用率
ProcCpu=`ps aux |grep -w $procName | grep -v 'grep'| awk '{print($3);}'`
#程序内存使用率
ProcMem=`ps aux |grep -w $procName | grep -v 'grep'| awk '{print($4);}'` 
#时间戳
Timestamp=`date +%s`
		
echo "fileName is $fileName"
echo "procName is $procName"
echo "procVersion is $procVersion"
echo "inputRate is $inputRate"
echo "outputRate is $outputRate"
echo "inputLog is $inputLog"
echo "outputLog is $outputLog"
echo "duration is $duration"
echo "pid is $pid"
echo "ProcAlive is $ProcAlive"
echo "ProcCpu is $ProcCpu"
echo "ProcMem is $ProcMem"
echo "IP is $IP"
echo "procStartTime is $procStartTime"
echo "Timestamp is $Timestamp"

提取本服务器的ip地址信息

IP=/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"
分析下这个命令:
/sbin/ifconfig -a 查询本机ip

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.0.3  netmask 255.255.240.0  broadcast 172.16.15.255
        inet6 fe80::5054:ff:fe68:1c8a  prefixlen 64  scopeid 0x20<link>
        ether 52:54:00:68:1c:8a  txqueuelen 1000  (Ethernet)
        RX packets 13295352  bytes 3943242853 (3.6 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 12367502  bytes 2298562223 (2.1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值