小赖子的英国生活和资讯

如何在 Linux 下 列出最耗资源的进程 (BASH 脚本)

阅读 桌面完整版

大部分VPS或者虚拟主机服务器什么的都是基于 Linux 系统 (其它操作系统像 Windows 不太适合做服务器, 一则是价钱贵,二是不稳定) Linux 系统主要是命令行界面,多任务多用户系统.强大的地方在于如果配置好的话,完全可以拔掉显示器键盘鼠标等,只接电源放几个月甚至几年都不会出问题.

这篇贴子介绍了备份数据(库)的一种思路.这篇帖子则介绍如何在发现有问题的访问后就禁止掉该IP.有一个非常好的办法就是经常监控比较耗资源(CPU或内存)的进程,及时发现问题.

我们可以在LINUX下创建一个脚本,含有以下内容,并且 chmod +x 后可以直接在命令行下运行.

1
2
3
4
5
#!/bin/bash
#helloacm.com
echo "-------`date`--------"
echo "\t\t%MEM\t%CPU"
ps ax -o comm,%mem,%cpu | sort -nk3 | tail -n 5
#!/bin/bash
#helloacm.com
echo "-------`date`--------"
echo "\t\t%MEM\t%CPU"
ps ax -o comm,%mem,%cpu | sort -nk3 | tail -n 5

以上几行代码则显示了当前最耗资源(CPU和内存)的5个进程.显示大概是这样:

1
2
3
4
5
6
7
-------Thu Nov 13 00:12:44 UTC 2014--------
                %MEM    %CPU
apache2          3.6  7.4
mysqld          13.4  7.7
apache2          4.5 10.3
apache2          3.2 11.7
apache2          4.4 12.2
-------Thu Nov 13 00:12:44 UTC 2014--------
                %MEM    %CPU
apache2          3.6  7.4
mysqld          13.4  7.7
apache2          4.5 10.3
apache2          3.2 11.7
apache2          4.4 12.2

那么就可以把上面的脚本放到 crontab 中定期执行并存档.如果想实时监控,则可以稍微改一下,加个无限循环,按 Ctrl – C 退出.每隔 10 秒收集一次信息.

1
2
3
4
5
6
7
8
9
10
#!/bin/bash
# helloacm.com
 
while true
do
    echo "-------`date`--------"
    echo "\t\t%MEM\t%CPU"
    ps ax -o comm,%mem,%cpu | sort -nk3 | tail -n 5
    sleep 10
done
#!/bin/bash
# helloacm.com

while true
do
    echo "-------`date`--------"
    echo "\t\t%MEM\t%CPU"
    ps ax -o comm,%mem,%cpu | sort -nk3 | tail -n 5
    sleep 10
done

英文同步: https://helloacm.com/how-to-monitor-cpu-and-memory-for-high-usage-process-on-linux-system-over-time/

强烈推荐

微信公众号: 小赖子的英国生活和资讯 JustYYUK

阅读 桌面完整版
Exit mobile version