top监控CPU、内存、磁盘脚本

CPU、内存使用率:

top -n 1 -b | grep -E '^[[:alpha:]]' > $(date+%Y-%m-%d-%H)_cpu_mem.txt

 

进程占用内存(降序):

top -n 1 -b | grep -v -E '^[[:alpha:]]|^$|COMMAND' | awk '{print $9 "\t" $10"\t" $11 "\t\t" $12}' | sort -k2nr > $(date+%Y-%m-%d-%H)_process_mem.txt

 

进程占用CPU率(降序):

top -n 1 -b | grep -v -E '^[[:alpha:]]|^$|COMMAND' | awk '{print $9 "\t" $10"\t" $11 "\t\t" $12}' | sort -k1nr > $(date+%Y-%m-%d-%H)_process_cpu.txt

 

进程数量:

ps -ef> $(date +%Y-%m-%d-%H)_process.txt


 

磁盘使用率:

df -Th> $(date +%Y-%m-%d-%H)_disk.txt


监控脚本文件: install_monitor.sh

#!/bin/sh
basefile=$(cd "$( dirname "$0")" && pwd)
chmod +x $(basefile)/print_top.sh
echo ${basefile}
echo "*****************settings crontab start*****************"
  echo "*/1 * * * * . /etc/profile;/bin/sh" ${basefile}"/print_top.sh" >>/var/spool/cron/root

  echo "*****************settings crontab end *****************"
  echo " top monitor is  running ,please show  print_top.txt  at /opt/opzoonface/logs "
  systemctl restart crond.service

监控脚本文件: print_top.sh

#!/bin/sh
echo $(date +%Y-%m-%d\ %T)  ':' >> print_cpu_mem.txt
top -n 1 -b | grep -E '^[[:alpha:]]' >> print_cpu_mem.txt
echo $(date +%Y-%m-%d\ %T) ':' >> print_process_mem.txt
top -n 1 -b | grep -v -E '^[[:alpha:]]|^$|COMMAND' | awk '{print $9 "\t" $10"\t" $11 "\t\t" $12}' | sort -k2nr >> print_process_mem.txt
echo $(date +%Y-%m-%d\ %T) ':' >> print_process_cpu.txt

top -n 1 -b | grep -v -E '^[[:alpha:]]|^$|COMMAND' | awk '{print $9 "\t" $10"\t" $11 "\t\t" $12}' | sort -k1nr >> print_process_cpu.txt


简洁版print_top.sh

#!/bin/sh
echo $(date +%Y-%m-%d\ %T)  ':' >> /opt/opzoonface/logs/print_top.txt
#top -n 1 -b | grep -E '^[[:alpha:]]' >> print_cpu_mem.txt
#echo $(date +%Y-%m-%d\ %T) ':' >> print_process_mem.txt
top -n 1 -b | head -n 20 >> /opt/opzoonface/logs/print_top.txt
#echo $(date +%Y-%m-%d\ %T) ':' >> print_process_cpu.txt
#top -n 1 -b | grep -v -E '^[[:alpha:]]|^$|COMMAND' | awk '{print $9 "\t" $10"\t" $11 "\t\t" $12}' | sort -k1nr >> print_process_cpu.txt

~~~输出:  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

2018-03-07 17:13:01 :
top - 17:13:01 up 7 days, 23:49,  3 users,  load average: 0.00, 0.01, 0.05
Tasks: 132 total,   1 running, 129 sleeping,   0 stopped,   2 zombie
%Cpu(s):  0.5 us,  0.2 sy,  0.0 ni, 99.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 20397000 total, 15010072 free,  4761636 used,   625292 buff/cache
KiB Swap:  5242876 total,  5242876 free,        0 used. 15305304 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
  731 root      20   0  437304   7524   5956 S   6.7  0.0   0:09.16 NetworkMan+
20715 root      20   0  129888   1596   1200 R   6.7  0.0   0:00.01 top
    1 root      20   0  141724   7960   2712 S   0.0  0.0   0:37.17 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.83 kthreadd
    3 root      20   0       0      0      0 S   0.0  0.0   1:14.47 ksoftirqd/0
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:+
    7 root      rt   0       0      0      0 S   0.0  0.0   0:35.79 migration/0
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh
    9 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/0
   10 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcuob/1
   11 root      20   0       0      0      0 S   0.0  0.0   6:04.03 rcu_sched
   12 root      20   0       0      0      0 S   0.0  0.0   5:21.78 rcuos/0

   13 root      20   0       0      0      0 S   0.0  0.0   5:47.83 rcuos/1



##################################################

常用io命令:  iotop   iostat -x 1

### 回答1: 一个简单的 Linux 监控 CPU内存脚本如下: ``` #!/bin/bash # Get current date and time DATE=$(date +"%Y-%m-%d %H:%M:%S") # Get CPU usage CPU=$(top -bn1 | grep load | awk '{printf "%.2f%%\t\t\n", $(NF-2)}') # Get memory usage MEM=$(free -m | awk 'NR==2{printf "%.2f%%\t\t", $3*100/$2 }') # Get disk usage DISK=$(df -h | awk '$NF=="/"{printf "%s\t\t", $5}') # Output the result echo -e "$DATE\t$CPU\t$MEM\t$DISK" ``` 这个脚本将会输出当前时间,CPU使用率,内存使用率和磁盘使用率。 你可以根据需要添加或删除监控项目。 ### 回答2: 在Linux系统中,可以通过编写Shell脚本来实现监控CPU内存等关键参数。下面简单介绍一下如何编写这些脚本: 1. 监控CPU使用率 实现方法:使用Linux系统自带的命令top,结合grep、awk等命令进行数据处理和提取。具体步骤如下: 首先,使用top命令进行CPU使用率监控,使用如下命令: top -b -n 1 | grep "Cpu(s)" | awk '{print $2}' 这条命令实现了对CPU使用率的监控,其中-b参数表示在batch模式下运行,-n 1参数表示只取一次数据,grep "Cpu(s)"表示只取行中包含Cpu(s)的数据,awk '{print $2}'表示只输出第二列数据,也就是CPU使用率。 2. 监控内存使用情况 实现方法:使用Linux系统自带的命令free,结合grep、awk等命令进行数据处理和提取。具体步骤如下: 首先,使用free命令进行内存使用情况监控,使用如下命令: free | grep Mem | awk '{print $3/$2*100.0}' 这条命令实现了对内存使用率的监控,其中grep Mem表示只取含有Mem的行数据,awk '{print $3/$2*100.0}'表示输出内存使用率。 3. 监控磁盘空间 实现方法:使用Linux系统自带的命令df,结合grep、awk等命令进行数据处理和提取。具体步骤如下: 首先,使用df命令进行磁盘空间监控,使用如下命令: df | grep "/dev/" | awk '{print $5}' | sed 's/%//g' 这条命令实现了对磁盘空间使用率的监控,其中grep "/dev/"表示只取/dev/开头的行数据,awk '{print $5}'表示输出第五列数据,也就是使用率,最后使用sed 's/%//g'命令删除百分号。 综上所述,编写Linux系统监控CPU内存等关键参数的脚本非常简单,只需要熟悉Linux系统命令的基本语法,就可以完成脚本的编写和调试。对于需要长期运行的脚本,可以使用Linux系统自带的定时任务工具crontab来实现定时监控。 ### 回答3: 要想在Linux系统中监控CPU内存等系统资源的使用情况,我们可以编写脚本自动化完成这一过程。 对于CPU使用情况的监控,我们可以使用命令行工具top或者htop来实现。这两个工具可以实时显示进程的CPU使用情况、内存使用情况、进程数量等信息。我们可以通过grep命令筛选出我们需要的信息,并将其重定向到日志文件中。另外,我们还可以使用sar命令来定时收集系统信息,并将其写入日志文件中。 对于内存使用情况的监控,我们可以使用free命令来查看系统内存使用情况,也可以使用vmstat命令来监控内存使用情况和交换分区的情况。我们同样可以使用sar命令来定时收集系统信息,并将其写入日志文件中。 此外,我们还可以使用一些第三方监控工具来监控系统资源的使用情况,如Zabbix、Nagios、Monit等。这些工具一般都有可视化界面,可以对系统性能进行更全面、更方便的监控。 在编写脚本时,我们需要确定监控间隔时间、输出日志文件名、监控指标等参数,并且要保证脚本的可重复性和稳定性。另外,我们还需要将脚本添加到系统定时任务中,以达到定时监控的效果。 总的来说,Linux下的系统资源监控是非常重要的,可以帮助我们及时发现问题并进行处理。编写脚本是一种自动化的方法,可以让我们更加高效地完成这一任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值