Linux监控
一、常用命令介绍
1.ps
ps命令主要可以做以下三种事情:
1)让系统报告详细的信息
在使用ps命令时,如果不采用任何的可选项,则其显示的信息是非常有限的,而且往往只显示当前用户所运行的程序。如下图:
当系统管理员需要知道应用程序更加详细的运行信息时,如想要知道这个应用程序内存、CPU的占用率情况时,就需要加入一些可选项。如系统管理员需要查看其它用户所执行的应用程序时,就需要在这个命令后面采用可选项-al,如此的话,系统会列出系统中所有用户运行的所有程序。如下图:
如果想知道某个程序CPU与内存的使用情况,而不是简单的显示其CPU的使用时间,那么就需要在这个命令后面加入参数-l,即ps -l命令可以让系统显示出应用程序的详细运行信息。如下图:
F 代表中国程序的旗标(flag),4代表使用者为super user;
S 代表中国程序的状态(STAT);
PID 就是这个程序的ID,后面的PPID则是父程序的ID;
C CPU使用的资源百分比;
PRI Priority(优先执行序)的缩写;
NI Nice值;
ADDR kernel function,指出该程序在内存的哪个部分。如果是running的程序,则显示“-”;
SZ 使用掉的内存大小;
WCHAN 目前这个程序是否正在运行当中,“-”表示正在运作;
TTY 登入这的终端机位置;
TIME 使用掉的CPU时间;
CMD 所下达的指令内容。
一般来说,系统管理员关心的只是程序的PID、内存与CPU的使用率、命令的名字、用户采用的终端等等,其他的信息对于系统管理员来说价值不是很大。
2)查看后台运行的程序
默认情况下,ps命令只显示前台运行的程序,而不会显示后台运行的程序。但是并非所有 程序都是在前台运行。正常情况下,隐藏在后台运行的程序数量要比前台运行的程序多的多。如随着系统启动而启动的系统自带程序,其运行的方式就是后台运行的。而且有时候,系统出现问题往往是由于后台程序所造成的。如常见的木马等程序都是在后台所运行的。所以系统管理员相对来说,更加想要知道在后台运行着哪些程序。
在不同版本的Linux操作系统中,要显示后台进程采用的可选项是不同的。采用ps aux命令可以显示出所有的应用程序(包括前台和后台的)。参数与可选项的差异主要是在前面有没有这个“-”符号。如果带有这个符号的就表示这是一个可选项。如果不带的,就表示这是一个参数。如果不知道要显示全部进程该使用哪个可选项时,可以利用ps --help来查看系统帮助。
3)对程序列表进行排序
可以使用--sort参数进行排序。如ps-A --sort cmd,标识显示系统所有的应用程序,并根据程序命令来进行排序。在Linux操作系统参数中,参数大小写不同往往代表着不同的含义。如上面这个命令,大写字母A表示所有的应用程序,而小写字母a则表示“all w/ tty except session leaders”。意思是用来过滤不同终端登录账户所运行的应用程序。
[root@linux ~]# ps aux
USER 改进程属于哪个使用者账号的;
PID 进程号;
%CPU 进程使用掉的CPU资源百分比;
%MEN 进程所占用的物理内存百分比;
VSZ 进程使用掉的虚拟内存量(Kbytes)
RRS 进程占用的固定的内存量(Kbytes)
TTY 该进程是在哪个终端机上面运作,若与终端机无关,则显示?,tty1-6是本机上面的登入者程序,若为pts/0等的则表示是由网络连接进主机的程序。
STAT 该程序目前的状态:
R 正在运作或者是可被运作的;
S 该程序正在睡眠当中(可说是idle状态),但可被某些讯号(signal)唤醒;
T 该程序目前正在侦测或者是停止了;
Z 该程序应该已经终止,但是其父程序却无法正常的终止他,造成zombie(僵尸)程序的状态;
I 空闲Idle;
D 不可中断Uninterruptible sleep(usually IO)收到信号不唤醒和不可运行,进程必须等待直到有中断发生;
T 终止Terminate进程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号后停止运行;
P 等待交换页
W 无驻留页 has no resident pages 没有足够的记忆体分页可分配
X 死掉的进程
< 高优先级进程,高优先序的进程
N 低优先级进程,低优先序的进程
L 内存锁页Lock,有记忆体分页分配并缩在记忆体内
s 进程的领导者(在它之下有子进程)
I 多进程的(使用CLONE_THREAD,类似NPTL pthreads)
+ 位于后台的进程组
[root@linux ~]# ps -lA
[root@linux ~]# ps axjf
选项/参数:
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
-A 显示所有进程(等价于-e)(utility)
-a 显示一个终端的所有进程,除了会话引线
-N 忽略选择。
-d 显示所有进程,但省略所有的会话引线(utility)
-x 显示没有控制终端的进程,同时显示各个命令的具体路径。dx不可合用。(utility)
-p pid 进程使用cpu的时间
-u uid or username 选择有效的用户id或者是用户名
-g gid or groupname 显示组的所有进程。
U username 显示该用户下的所有进程,且显示各个命令的详细路径。如:ps U zhang;(utility)
-f 全部列出,通常和其他选项联用。如:ps -fa or ps -fx and so on.
-l 长格式(有F,wchan,C 等字段)
-j 作业格式
-o 用户自定义格式。
v 以虚拟存储器格式显示
s 以信号格式显示
-m 显示所有的线程
-H 显示进程的层次(和其它的命令合用,如:ps -Ha)(utility)
e 命令之后显示环境(如:ps -d e; ps -a e)(utility)
h 不显示第一行
l 长格式输出;
u 按用户名和启动时间的顺序来显示进程;
j 用任务格式来显示进程;
f 用树形格式来显示进程;
a 显示所有用户的所有进程(包括其它用户);
x 显示无控制终端的进程;
r 显示运行中的进程;
ww 避免详细参数被截断
ps命令常用用法(方便查看系统进程)
1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。
2)ps -A 显示所有进程。
3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
4)ps -e 此参数的效果和指定"A"参数相同。
5)ps e 列出程序时,显示每个程序所使用的环境变量。
6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
7)ps -H 显示树状结构,表示程序间的相互关系。
8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
9)ps s 采用程序信号的格式显示程序状况。
10)ps S 列出程序时,包括已中断的子程序资料。
11)ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
12)ps u 以用户为主的格式来显示程序状况。
13)ps x 显示所有程序,不以终端机来区分。
14)最常用的方法是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!