Linux中的如何对当前进程进行查看和监控——ps命令和pgrep命令

推荐一个Linux命令的查询手册:Linux命令大全(手册)

PID进程号

PID进程号的命名规则:

每一个进程ID以一个十进制数表示,通过一个分割字符串和下一个ID分开,默认的分割字符串是一个新行。对于每个属性选项,用户可以在命令行上指定一个以逗号分割的可能值的集合。

ps命令

Linux中要对当前进程进行查看和监控可以使用ps命令Process Status),它是最基本同时也是非常强大的进程查看命令。

ps命令——核心功能:

ps命令——用来列出系统中当前运行的那些进程。 具体而言:

可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等。

ps命令——静态的显示进程信息(即:执行ps命令的那个时刻的那些进程);如果想要动态的显示进程信息,就可以使用top命令

ps命令——语法说明:

如果直接用ps命令,会显示所有进程的状态,通常结合grep命令查看某进程的状态。

ps aux命令——输出格式,如下图所示:

# ps aux 命令的输出格式
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

在这里插入图片描述

参数说明:

  • USER: 行程拥有者
  • PID: 进程的ID
  • %CPU: 占用的 CPU 使用率
  • %MEM: 占用的记忆体使用率
  • VSZ: 占用的虚拟记忆体大小
  • RSS: 占用的记忆体大小
  • TTY: 终端的次要装置号码 (minor device number of tty)
  • STAT: 该行程的状态,linux的进程有5种状态:
  • D 不可中断 uninterruptible sleep (usually IO)
  • R 运行 runnable (on run queue)
  • S 中断 sleeping
  • T 停止 traced or stopped
  • Z 僵死 a defunct (”zombie”) process
    \quad
    注: 其它状态还包括W(无驻留页), <(高优先级进程), N(低优先级进程), L(内存锁页).
  • START: 行程开始时间
  • TIME: 执行的时间
  • COMMAND: 所执行的指令

常见Linux语法使用:

ps a    # 显示现行终端机下的所有程序,包括其他用户的程序。
ps -A   # 显示所有程序。 
ps c    # 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。 
ps -e   # 此参数的效果和指定"A"参数相同。 
ps e    # 列出程序时,显示每个程序所使用的环境变量。 
ps f    # 用ASCII字符显示树状结构,表达程序间的相互关系。 
ps -H   # 显示树状结构,表示程序间的相互关系。 
ps -N   # 显示所有的程序,除了执行ps指令终端机下的程序之外。 
ps s    # 采用程序信号的格式显示程序状况。 
ps S    # 列出程序时,包括已中断的子程序资料。 
ps -t   # 指定终端机编号,并列出属于该终端机的程序的状况。 
ps u    # 以用户为主的格式来显示程序状况。 
ps x    # 显示所有程序,不以终端机来区分。

备注: ps——显示当前状态处于running的进程,grep——表示在这些处于running的进程里搜索,而ps aux——则是显示所有进程和其状态

最常用的方法是ps -aux命令,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。

典型范例:

1、检查指定的shell脚本是否在运行,并输出对应的pid进程号

ps aux | grep "aa.sh"   # 假设输出PID为1203

2、杀死指定pid号的进程

kill -s 9 pid   # pid表示要杀死的PID进程号,例如:12301

终止进程—kill 命令用于终止进程
例如: kill -9 [PID] \quad \quad # -9 表示强迫进程立即停止

参考链接:linux命令ps aux|grep xxx详解

pgrep命令

pgrep命令——匹配其程序名,找到匹配的进程id。即:通过程序的名字来查询进程的工具,一般是用来判断程序是否正在运行。

pgrep命令——语法说明:

pgrep(选项)(参数)

参数说明:

  • (选项)——常见的使用参数:
选项 描述
-o 仅显示找到的最小(起始)进程号;
-n 仅显示找到的最大(结束)进程号;
-l 显示进程名称;
-P 指定父进程号;
-g 指定进程组;
-t 指定开启进程的终端;
-u 指定进程的有效用户ID。
  • (参数)——常见的使用参数:

进程名称:指定要查找的进程名称,同时也支持类似grep命令中的匹配模式。

典型范例:

# 以查找运行的shell进程为例:
pgrep -lo sh    # 显示最小进程号的一个shell进程
pgrep -ln sh    # 显示最大进程号的一个shell进程
pgrep -l sh     # 列出所有httpd进程
pgrep sh        # 列出所有httpd进程,并且不显示进程名称
pgrep -f sh     # 匹配出含shell的进程,并输出对应的pid进程号

最常用的方法是pgrep -f name命令,如果需要查找到 pid 之后 kill 掉该进程,还可以使用pkill命令,具体为:pkill -f name。如果是可执行程序的话,可以直接使用 pidof name 命令

参考链接:Linux pgrep命令

LINUX下PS -EF和PS AUX的区别及格式详解

Linux下显示系统进程的ps命令,最常用的有ps -efps aux。这两个到底有什么区别呢?

两者没太大差别,之所以存在不同,要追溯到Unix系统中的两种风格,System V风格BSD 风格ps aux最初用到Unix Style中,而ps -ef被用在System V Style中,两者输出略有不同。现在的大部分Linux系统都是可以同时使用这两种方式的。

ps -ef      # 通过System V Style风格显示进程
ps aux      # 通过Unix Style风格显示进程

参考链接:
LINUX下PS -EF和PS AUX的区别及格式详解

top命令

top 命令用于实时监控系统资源使用状况,包含:进程,cpu,内存等。

top命令——语法说明:

top [选项]
  • [选项]——常见的使用参数:
选项 描述
-b 以批处理模式操作
-c 显示完整的治命令
-d 屏幕刷新间隔时间
-I 忽略失效过程
-s 保密模式
-S 累积模式
-i<时间> 设置刷新间隔时间
-u<用户名> 指定用户名
-p<进程号> 指定进程
-n<次数> 循环显示的次数

top命令中的常用快捷键:
h    显示快捷键帮助
k    终止一个进程
i     开/关忽略闲置和僵死进程
q    退出程序
r     重新安排一个进程的优先级别
S    切换到累计模式
s    更改刷新间隔时间,单位秒
f,F   从当前显示中添加或者删除项目
o,O   改变显示项目的顺序
l     切换显示平均负载和启动时间信息
m    切换显示内存信息
t     切换显示进程和CPU状态信息
c    切换显示命令名称和完整命令行
M    根据内存使用大小排序
P    根据CPU使用率进行排序 (默认排序)
T    根据时间/累计时间进行排序
w    将当前设置写入~/.toprc文件中
1    展开多核cpu显示

参考链接:
Linux top命令的用法详细详解
Linux top 命令快速入门

猜你喜欢

转载自blog.csdn.net/weixin_42782150/article/details/107783263