在实际工作环境中,一些linux服务器会部署大量服务,有些服务是部署在服务器本身,有些服务是部署在docker容器linux查看cpu占用,当某个进程因为某些原因开始占用大量内存或CPU时,通过top命令查看占用内存、CPU过高的进程,在用ps -ef|grep 进程号,查看具体哪个进程时,无法识别这个进程是宿主机运行的,还是daocker'容器运行的。

今天给大家介绍一种可以排查进程是容器运行,还是宿主机运行的方法。

一、 查看占用内存或CPU较高的进程

我们除了top命令以外,还可以用以下命令查看占用cpu和内存前十的进程

ps aux|head -1;ps aux|sort -rn -k +3|head     #查看占用CPU前十的进程
ps aux|head -1;ps aux|sort -rn -k +4|head     #查看占用内存前十的进程

head 默认获取10行,可以在后面加-n 控制显示数量,如获取三行

linux查看cpu占用_linux cpu占用过高怎么办_linux内核占用cpu高

ps aux|head -1;ps aux|sort -rn -k +3|head -3

我们先用top命令查看一下,发现第一个是java进程,占用内存较高,我们需要对它做一些限制。

二、通过进程号查看进程运行在哪个容器

通过ps加参数的命令来获取linux查看cpu占用

ps -e -o pid,cmd,comm,cgroup | grep 21905 #查看进程在哪个容器内运行

ps:21905是我们查出来一个占用内存较高进程的pid

linux cpu占用过高怎么办_linux内核占用cpu高_linux查看cpu占用

通过这条命令可以发现这个进程是运行在9ea1fc99d7fb这个容器里的。在用docker ps|grep 容器id查看容器的具体信息。

docker ps|grep 9ea1fc99d7fb     #可以查看这个容器的具体信息

linux cpu占用过高怎么办_linux内核占用cpu高_linux查看cpu占用

知道了进程运行在哪个容器,就简单多了,通过docker命令进入到容器中,对进程做一些限制就可以了。

docker exec -it 9ea1fc99d7fb /bin/bash #进入到容器

———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: wxii2p22