定时将内存使用前十的进程名称写入日子

统计使用内存和cpu前十的进程

top 命令ps 命令

查看进程信息,其中包含了cpu使用率和内存使用率

root@hcss-ecs-c2b8:/var/test# top -n1
top - 00:20:46 up 19 days, 8 min,  2 users,  load average: 0.00, 0.00, 0.00
Tasks: 161 total,   1 running, 160 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  3.2 sy,  0.0 ni, 96.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   1783.4 total,    104.7 free,    359.0 used,   1319.7 buff/cache
MiB Swap:   1025.0 total,    878.3 free,    146.7 used.   1213.4 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                           
      1 root      20   0  167968  10276   5920 S   0.0   0.6   0:36.62 systemd                           
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.07 kthreadd                          
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp                            
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp                        
      5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 slub_flushwq                      
      6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 netns                             
      8 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-events_highpri       
     10 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq                      
     11 root      20   0       0      0      0 S   0.0   0.0   0:00.00 rcu_tasks_rude_                   
     12 root      20   0       0      0      0 S   0.0   0.0   0:00.00 rcu_tasks_trace                   
     13 root      20   0       0      0      0 S   0.0   0.0   0:03.58 ksoftirqd/0                       
     14 root      20   0       0      0      0 I   0.0   0.0   0:44.69 rcu_sched                         
     15 root      rt   0       0      0      0 S   0.0   0.0   0:04.10 migration/0                       
     16 root     -51   0       0      0      0 S   0.0   0.0   0:00.00 idle_inject/0                     
     18 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/0                           
     19 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/1                           
     20 root     -51   0       0      0      0 S   0.0   0.0   0:00.00 idle_inject/1                     
     21 root      rt   0       0      0      0 S   0.0   0.0   0:03.78 migration/1                       
     22 root      20   0       0      0      0 S   0.0   0.0   0:02.84 ksoftirqd/1                       
     24 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/1:0H-events_highpri       
     25 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kdevtmpfs                         
     26 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 inet_frag_wq                      
     27 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kauditd                           
     28 root      20   0       0      0      0 S   0.0   0.0   0:00.74 khungtaskd                        
     29 root      20   0       0      0      0 S   0.0   0.0   0:00.00 oom_reaper                        
     30 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 writeback                         
     31 root      20   0       0      0      0 S   0.0   0.0   0:36.59 kcompactd0                        
     32 root      25   5       0      0      0 S   0.0   0.0   0:00.00 ksmd                              
     33 root      39  19       0      0      0 S   0.0   0.0   0:13.34 khugepaged                        
     80 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kintegrityd                       
     81 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kblockd                           
     82 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 blkcg_punt_bio                    
root@hcss-ecs-c2b8:/var/test# 
root@hcss-ecs-c2b8:/var/test# ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.5 167968 10276 ?        Ss   Sep20   0:36 /lib/systemd/systemd noibrs --system --
root           2  0.0  0.0      0     0 ?        S    Sep20   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   Sep20   0:00 [rcu_gp]
root           4  0.0  0.0      0     0 ?        I<   Sep20   0:00 [rcu_par_gp]
root           5  0.0  0.0      0     0 ?        I<   Sep20   0:00 [slub_flushwq]
root           6  0.0  0.0      0     0 ?        I<   Sep20   0:00 [netns]
root           8  0.0  0.0      0     0 ?        I<   Sep20   0:00 [kworker/0:0H-events_highpri]
root          10  0.0  0.0      0     0 ?        I<   Sep20   0:00 [mm_percpu_wq]
root          11  0.0  0.0      0     0 ?        S    Sep20   0:00 [rcu_tasks_rude_]
root          12  0.0  0.0      0     0 ?        S    Sep20   0:00 [rcu_tasks_trace]
root          13  0.0  0.0      0     0 ?        S    Sep20   0:03 [ksoftirqd/0]
root          14  0.0  0.0      0     0 ?        I    Sep20   0:44 [rcu_sched]
root          15  0.0  0.0      0     0 ?        S    Sep20   0:04 [migration/0]
root          16  0.0  0.0      0     0 ?        S    Sep20   0:00 [idle_inject/0]
root          18  0.0  0.0      0     0 ?        S    Sep20   0:00 [cpuhp/0]
root          19  0.0  0.0      0     0 ?        S    Sep20   0:00 [cpuhp/1]
root          20  0.0  0.0      0     0 ?        S    Sep20   0:00 [idle_inject/1]
root          21  0.0  0.0      0     0 ?        S    Sep20   0:03 [migration/1]
root          22  0.0  0.0      0     0 ?        S    Sep20   0:02 [ksoftirqd/1]
root          24  0.0  0.0      0     0 ?        I<   Sep20   0:00 [kworker/1:0H-events_highpri]
root          25  0.0  0.0      0     0 ?        S    Sep20   0:00 [kdevtmpfs]
root          26  0.0  0.0      0     0 ?        I<   Sep20   0:00 [inet_frag_wq]

top -n -b 1 > xxx打印一次的结果放入xxx文件中

tail -n +8 xxx获取第八行开始的文本在使用awk对每一行文本进行计算和打印

root@hcss-ecs-c2b8:/var/test# top -b -n 1 > xxx
root@hcss-ecs-c2b8:/var/test# tail -n +8 xxx | awk '{array[$NF]+=$6}END{for (i in array) print i,array[i]}'
kworker/u4:1-flush-252:0 0
rsyslogd 2416
kmpath_rdacd 0
rcu_sched 0
khungtaskd 0
top 3828
ext4-rsv-conver 0
kthreadd 0
kcompactd0 0
unattended-upgr 3216
kmpath_handlerd 0
kdevtmpfs 0
edac-poller 0
kswapd0 0
oom_reaper 0
udisksd 6456
uniagent 21504
java 23004
cron 2456
BT-Panel 37740
vfio-irqfd-clea 0
ModemManager 5000
idle_inject/0 0
idle_inject/1 0
hostwatch 8752
rcu_gp 0
vim 10792
kaluad 0
ksoftirqd/0 0
wrapper 1168
ksoftirqd/1 0
dockerd 31328
cryptd 0
kworker/1:1H-kblockd 0
kthrotld 0
md 0
ksmd 0
systemd-resolve 2924
systemd 19456
kworker/0:3-events 0
jbd2/vda1-8 0
atd 2012
acpi_thermal_pm 0
BT-Task 24008
chronyd 2044
kworker/0:1-events 0
ipv6_addrconf 0
charger_manager 0
irqbalance 2776
migration/0 0
systemd-udevd 4352
migration/1 0
hostguard 23268
kstrp 0
mm_percpu_wq 0
kworker/u5:0 0
kworker/0:0H-events_highpri 0
slub_flushwq 0
netns 0
uuidd 2524
sshd 57304
watchdogd 0
scsi_eh_0 0
kauditd 0
kworker/u4:0-events_power_efficie+ 0

sort -k 2 -n -r | head -10根据第二列的数字进行倒序,支取10个

root@hcss-ecs-c2b8:/var/test# tail -n +8 xxx | awk '{array[$NF]+=$6}END{for (i in array) print i,array[i]}' | sort -k 2 -n -r |head -10
apache2 398552
systemd-journal 93652
BT-Panel 37740
containerserver 31752
dockerd 31328
multipathd 27360
sshd 26856
snapd 24644
BT-Task 24008
hostguard 23268
root@hcss-ecs-c2b8:/var/test# 

最后我们将这些命令写入shell脚本文件中

root@hcss-ecs-c2b8:/var/test# vim memory_use.sh

#!/bin/bash

memory() {
  #1.收集任务管理器进程信息
  temp_file=`mktemp  memory.XXX`
  top -b -n 1 > "$temp_file"

  #2.按进程统计内存使用大小
  tail -n +8 "$temp_file" | awk '{array[$NF]+=$6}END{for (i in array) print array[i],i}' | sort -k 2 -n -r |head -10
}

memory
~
~
~
:wq

root@hcss-ecs-c2b8:/var/test# ./memory_use.sh
93668 systemd-journal
9024 containerd-shim
8752 hostwatch
6456 udisksd
6184 NetworkManager
5824 packagekitd
5604 nginx
5000 ModemManager
4888 systemd-logind
4772 dbus-daemon
root@hcss-ecs-c2b8:/var/test# 

每当我们执行这个脚本的时候我们就能获取当前使用内存前十的进程的名称

我们可以将次脚本每次输出的结果追加放入一个日志文件中,且使用定时任务重定时打印系统内存使用情况,方便排查服务器问题

root@hcss-ecs-c2b8:/var/test# ./memory_use.sh
root@hcss-ecs-c2b8:/var/test# cat memory_use_log.txt 
93800 systemd-journal
9152 containerd-shim
8752 hostwatch
6456 udisksd
6184 NetworkManager
5824 packagekitd
5604 nginx
5000 ModemManager
4888 systemd-logind
4772 dbus-daemon
root@hcss-ecs-c2b8:/var/test# ./memory_use.sh
root@hcss-ecs-c2b8:/var/test# cat memory_use_log.txt 
93800 systemd-journal
9152 containerd-shim
8752 hostwatch
6456 udisksd
6184 NetworkManager
5824 packagekitd
5604 nginx
5000 ModemManager
4888 systemd-logind
4772 dbus-daemon
93804 systemd-journal
9120 containerd-shim
8752 hostwatch
6456 udisksd
6184 NetworkManager
5824 packagekitd
5604 nginx
5000 ModemManager
4888 systemd-logind
4772 dbus-daemon

*/1 * * * * /var/test/memory_use.sh这里我们将脚本设置文每分钟执行一次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值