在linux和docker中我们将一个程序运行到后台,之后我们想查看它的运行状态,对于服务器的资源消耗等等
1.linux查看进程
ps aux | grep python
ps aux
:列出所有正在运行的进程。grep python
:过滤出包含python
的进程
2.linux查看进程详细信息
ps -p 22101 -o pid,cmd
如果你知道进程的 PID(例如22101
),可以使用 ps
命令查看该进程的详细信息,
-p 22101
:指定进程 ID。-o pid,cmd
:显示 PID 和命令行。
总结:ps
命令可以用于查看进程的瞬时资源使用情况。结合 aux
选项可以显示所有用户的进程并包括更多详细信息,格式如下:
ps aux | grep <PID>
ps -p <PID> -o pid,vsz,rss,%cpu,%mem,cmd
vsz
:虚拟内存使用量(KB)rss
:常驻内存使用量(KB)%cpu
:CPU 使用百分比%mem
:内存使用百分比cmd
:命令行
3.linux实时查看进程的资源使用情况
top
top
命令是实时显示进程的资源使用情况的常用工具。要查看特定进程的资源使用情况,可以运行 top
命令,然后使用 P
键按照 CPU 使用排序,或者 M
键按照内存使用排序。
如果只想查看某个特定进程的资源使用情况,可以在 top
运行后按下 o
键并输入 PID=<进程ID>
。
4.linux监视进程磁盘io使用情况
sudo iotop -p <PID>
iotop
会显示当前进程的 I/O 读写操作。
5.docker查看当前运行的程序的状态
docker stats
除此之外,ps命令一样可以列出目前正在运行的所有容器以及它们的基本配置,-a则会列出所有包括目前不在运行的容器。
docker ps
docker ps -a
如果像检查docker容器内的进程,先进入docker容器内部,之后再采用linux查询进程的方法。
docker exec -it <container_id> /bin/bash
6.linux了解进程都在干什么
lsof -p <PID>
lsof
命令列出进程打开的文件和网络连接,这可以帮助了解进程的活动情况
strace -p <PID>
strace
可以跟踪进程的系统调用,了解它们在执行什么操作
运用:检查内存泄漏
ps aux --sort=-%mem > mem_usage_1.txt
sleep 60
ps aux --sort=-%mem > mem_usage_2.txt
diff mem_usage_1.txt mem_usage_2.txt
ps
: 定期记录进程的内存使用情况,然后对比不同时间点的使用情况
lsof
: 列出进程打开的文件描述符,定期检查某个进程的打开文件描述符数量,检查是否不断增加,等等
另外的知识点:检查网络连接泄漏
netstat -anp | grep <PID>
netstat
或 ss
: 查看进程的网络连接情况。检查是否有大量的连接未关闭或连接数不断增加