如何在 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/

GD Star Rating
a WordPress rating system
本文一共 335 个汉字, 你数一下对不对.
如何在 Linux 下 列出最耗资源的进程 (BASH 脚本). (AMP 移动加速版本)
上一篇: 如何在APACHE2服务器上禁止指定IP的访问
下一篇: 禁用服务器上的 root 帐号远程登陆 (SSH 和 FTP 和 MySQL 数据库)

扫描二维码,分享本文到微信朋友圈
d524a8ca452a78c3589d48580feb3082 如何在 Linux 下 列出最耗资源的进程 (BASH 脚本) 技术 折腾 杂乱 程序设计 网站信息与统计

评论