linux如何查看程序运行在什么磁盘里

2025年03月02日 阅读 (54)

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

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

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

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

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

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

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

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

linux如何查看程序运行在什么磁盘里(1)

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

通过ps加参数的命令来获取。

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

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

linux如何查看程序运行在什么磁盘里(2)

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

docker ps|grep 9ea1fc99d7fb     #可以查看这个容器的具体信息
linux如何查看程序运行在什么磁盘里(3)

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

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

郑重声明:玄微运势的内容来自于对中国传统文化的解读,对于未来的预测仅供参考。