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 命令快速入门

### Linux 进程管理常用命令及用法 #### 使用 `top` 查看系统资源占用情况 `top` 命令用于实时显示系统的整体性能状况,包括 CPU 内存的使用率以及各个进程的状态。通过这个命令可以监控哪些进程占用了较多的系统资源,从而做出相应的优化措施[^1]。 ```bash $ top ``` #### 利用 `ps` 显示当前活动进程的信息 `ps` 是另一个重要的查看进程状态的工具,它能够提供关于正在运行的任务的具体详情,比如 PID(Process ID)、USER、STAT(状态)等字段。对于排查问题非常有用。 ```bash $ ps aux | grep process_name ``` #### 结合 `pgrep` `pkill` 定位并结束特定名称的服务或应用 当需要快速定位某个服务对应的多个实例时,可借助于 `pgrep` 来获取这些实例的 PIDs;而如果要一次性停止所有符合条件的程序,则可以直接调用 `pkill` 实现自动化操作[^2]。 ```bash # 获取名为 'example' 的进程ID列表 $ pgrep example # 终止所有名为 'example' 的进程 $ pkill example ``` #### 手动发送信号给单个目标进程——`kill` 尽管有上述批量处理的方式,在某些情况下可能更倾向于精确控制某一个具体的进程行为。这时就可以采用带有参数形式的 `kill` 指令来向选定的目标传递不同的信号量完成诸如重启、挂起等功能。 ```bash # 发送 SIGTERM (默认) 至PID为12345的进程 $ kill 12345 # 强制终止该进程(SIGKILL) $ kill -9 12345 ``` #### 将任务放到后台继续工作或将已暂停的任务恢复至前台/后台 有时候希望启动的应用能在不影响其他交互的同时持续运作下去,那么可以在指令后面加上 `&` 符号让其立即进入后台模式;而对于那些已经被中断但仍存在于队列中的作业来说,可以通过组合键 Ctrl+Z 让它们暂时搁置起来再利用 fg/bg 调整位置[^3]。 ```bash # 启动新进程并将之置于后台 $ command & # 把当前终端上的活跃进程转到后台暂停执行 (Ctrl + Z) # 返回最近一次被放置在后台的工作到前台 $ fg %job_number # 放入后台继续执行而不影响其它输入输出流 $ bg %job_number ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yale曼陀罗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值