监控Linux系统的内存和CPU,并使用excel表格绘制曲线

#!/bin/bash
#基于同事的脚本,做了一下修改
#目的:nmon只能对系统整体监控,不能针对单个进程。
#使用方法:将监控结果粘贴到excel中进行处理,就可以利用曲线看内存与CPU的走势。
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
if [ -z "$5" ];then
  echo "please enter really data"
  echo "sample"
  echo "./scriptname PsName PSport Per Count Path"
  echo "./cpu.sh kbaseserver 6516 10 6 ./foldername"
 else
  Filename=$0 #脚本名
  PsName=$1 #程序名
  PSport=$2 #端口号
  Per=$3  #间隔的秒数
  Count=$4 #记录次数
  Path=$5  #记录文件夹
     mkdir ${Path:2} #创建记录文件夹,我这里并没有对文件夹存在做判断,自己感觉无伤大雅。字符串位置从0开始的;也可以用basename
  kernel=`cat /proc/cpuinfo | grep processor | wc -l` #取系统的内核数
  Date=`date +%y%m%d_%H%M%S` #取系统时间
  PID=`ps -ef |grep $PsName |grep $PSport |grep -v grep|grep -v $Filename|awk '{print $2}'` #取进程号
  echo $PID
  echo "begin"
  echo "------------------------"
    for ((i=1;i<=$4;i++))
     do  
      if [ "-$PID" == "-" ];then
        echo "NO $i The $PsName does not exist." >>$Path/log_$Date.txt #若进程不在,报错在日志里
       else
        echo "NO $i" >>$Path/log_$Date.txt
        VmRSS=`cat /proc/$PID/status |grep -e VmRSS|awk '{print $2}'` #从进程文件中取内存
        VmRSS=$(expr "($VmRSS/1024)"|bc) #将内存换算成M
        echo $VmRSS >> $Path/VmRSS_$Date.txt 
        #为什么不正着数,前边存在多个空格的问题,所以反着数
        CPU=`top -n 1 -p $PID|tail -2|head -1|awk '{print $(NF-4)}'` #从进程文件中取CPU
        CPU=$(expr "scale=2;($CPU/$kernel)"|bc) #换算成单个内核的CPU
        echo  $CPU >> $Path/CPU_$Date.txt
        sleep  $Per #间隔时间
        j=$(($j+1)) #记录总数
      fi  
     done 
    if [ "$j" == "$Count" ] ;then #如果记录总数与实际总数相同,则程序正常
     echo "normal operation" >>$Path/log_$Date.txt
     echo "end"
    fi 
fi 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要合并多个CSV文件为一个Excel文件并绘制曲线,可以使用Python的Pandas和Matplotlib库来实现。 首先,需要安装所需的库。可以使用以下命令来安装它们: ```python pip install pandas matplotlib ``` 然后,导入所需的库: ```python import pandas as pd import matplotlib.pyplot as plt ``` 接下来,读取多个CSV文件并合并它们: ```python # 读取CSV文件 df1 = pd.read_csv('file1.csv') df2 = pd.read_csv('file2.csv') df3 = pd.read_csv('file3.csv') # 合并数据 merged_df = pd.concat([df1, df2, df3]) ``` 接着,将合并的数据写入Excel文件: ```python # 将合并的数据写入Excel文件 merged_df.to_excel('merged_data.xlsx', index=False) ``` 最后,使用Matplotlib来绘制曲线: ```python # 绘制曲线 plt.plot(merged_df['x'], merged_df['y']) plt.xlabel('X轴标签') plt.ylabel('Y轴标签') plt.title('曲线图') plt.show() ``` 以上就是使用Python合并多个CSV文件为一个Excel文件并绘制曲线的方法。根据实际情况,你可能需要调整代码以适应你的数据格式和要求。 ### 回答2: Python可以使用pandas库来合并多个csv文件为excel,并使用matplotlib库来绘制曲线。 首先,需要安装pandas和matplotlib库。使用以下命令进行安装: ``` pip install pandas pip install matplotlib ``` 接下来,使用pandas库的read_csv函数来读取多个csv文件,并将它们合并为一个DataFrame对象。可以使用glob库来获取所有csv文件的文件路径,然后进行循环读取和合并。 下面是一个示例代码片段: ```python import pandas as pd import glob # 获取所有csv文件的文件路径 csv_files = glob.glob('*.csv') # 创建一个空的DataFrame对象 combined_data = pd.DataFrame() # 循环读取并合并csv文件 for csv_file in csv_files: # 读取csv文件,并将其添加到combined_data中 data = pd.read_csv(csv_file) combined_data = combined_data.append(data, ignore_index=True) # 将合并后的数据保存为excel文件 combined_data.to_excel('combined_data.xlsx', index=False) ``` 接下来,使用matplotlib库来创建图表并绘制曲线。可以使用pandas库的plot函数来绘制曲线。 下面是一个示例代码片段: ```python import pandas as pd import matplotlib.pyplot as plt # 从合并后的Excel文件读取数据 combined_data = pd.read_excel('combined_data.xlsx') # 绘制曲线图 plt.plot(combined_data['x'], combined_data['y']) plt.xlabel('x轴') plt.ylabel('y轴') plt.title('曲线图') plt.show() ``` 以上代码将合并多个csv文件为一个excel文件,并绘制曲线图。可以根据实际需要对代码进行调整和扩展。 ### 回答3: 要将多个CSV文件合并为Excel文件,并绘制曲线,可以使用Python编程语言来完成。 首先,我们需要导入所需的库,如pandas和matplotlib。Pandas库提供了强大的数据操作和处理工具,而matplotlib库用于绘制曲线。 接下来,我们可以使用pandas的read_csv函数来逐个读取CSV文件,并将其存储为数据帧对象。然后,我们可以使用pandas的concat函数来将这些数据帧对象合并为一个大的数据帧对象。 合并完成后,我们可以使用pandas的to_excel函数将数据帧对象保存为Excel文件。在此过程中,我们可以指定要保存的文件路径和文件名。 最后,我们可以使用matplotlib来绘制曲线。通过从Excel文件中读取数据并将其转换为pandas数据帧对象,我们可以使用pandas提供的plot函数来绘制曲线。我们可以根据需要调整曲线的样式和格式,并通过使用matplotlib的相关函数来添加标题、横坐标和纵坐标标签等。 完成以上步骤后,我们就能够合并多个CSV文件为一个Excel文件,并在绘图中显示曲线。 总之,使用Python中的pandas库和matplotlib库,我们可以轻松地实现将多个CSV文件合并为Excel文件,并绘制曲线的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值