linux进程及进程查看ps命令

本文介绍了Linux系统中进程的概念,包括进程ID、进程组、会话等,并详细讲解了如何使用PS命令来查看和管理这些进程。同时,文章还提供了批量杀进程和查看进程资源占用的具体方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址为: linux进程及进程查看ps命令

进程

进程

程序的执行实例就是进程,系统为进程分配一个唯一的数字标识符,就是进程ID(process ID)。

进程组

每个进程除了有一进程ID外,还属于一个进程组,进程组是一个或者多个进程的集合。每个进程组有一个唯一的进程组ID。

一般重定向会产生一个进程组,先执行两个重定向,然后通过ps,可以查看有两个进程组id,即2125和2177

shuanghu@shuanghu:tmp$ tail -f word.txt|grep test &
shuanghu@shuanghu:tmp$ tail -f a.log | grep adfs &
shuanghu@shuanghu:tmp$ ps -O pgid
PID PGID S TTY TIME COMMAND
2098 2098 S pts/0 00:00:00 bash
2125 2125 S pts/0 00:00:00 tail -f word.txt
2126 2125 S pts/0 00:00:00 grep --color=auto test
2177 2177 S pts/0 00:00:00 tail -f a.log
2178 2177 S pts/0 00:00:00 grep --color=auto adfs
2202 2202 R pts/0 00:00:00 ps -O pgid

会话

会话(session)是一个或多个进程组的集合;创建会话的进程,是新会话的会话首进程(session leader);会话首进程的进程组ID是会话ID

一个会话可以有一个控制终端(controlling terminal).通常是终端设备(在终端登录情况下)或伪终端设备(在网络登录情况下)
建立与控制终端连接的会话首进程被称为控制进程(controlling process)
一个会话中的几个进程组可被分成一个前台进程组(foreground process group)以及一个或多个后台进程组(backgroup process group)

进程用户ID

每个进程有三个user ID: RUID,EUID,SUID

RUID

RUID(Real User ID)在用户登录系统时,会从口令文件中获取一个用户ID,这个UID被称为RUID
RGID(Real Group ID)在用户登录系统时,会从口令文件中获取一个组ID,这个GID被称为RGUID

EUID

EUID(Effective Group ID) 和 EGID(Effective Group ID)
EUID和EGID一般是用于用户访问文件权限控制的。
通常RUID=EUID,RGID=EGID。

SUID(Saved User ID)

保存设置用户ID,作为effective user ID的副本,在执行exec调用时后能重新恢复原来的effectiv user ID

进程时间

进程时间,也称为CPU时间,用以度量进程使用的CPU资源,当度量一个进程的执行时间时,UNIX系统为一个进程维护了3个进程时间值:
1. 时钟时间指进程运行的总时间;
2. 用户CPU时间指进程执行用户指令所用的时间;
3. 系统CPU时间指进程执行内核程序所用时间,比如执行read或write的时间

在linux中,可以使用time命令进行查看

进程查看命令(ps命令)

ps 命令是用于查看系统进程信息。

默认不带参数的,只显示运行在当前控制台下的属于当前用户的进程。

shuanghu@shuanghu:~$ ps
PID TTY TIME CMD
2519 pts/9 00:00:00 bash
2531 pts/9 00:00:00 ps

参数简介

Linux下的GNU ps命令拥有非常多的参数。简直就是一个大杂烩。Linux下的GNU ps命令,按照参数的风格,ps命令支持三种不同风格的命令行参数:

  1. Unix风格的参数,前面加单破折线;例如 ps -ef
  2. BSD风格的参数,前面不加破折线;例如 ps axu
  3. GNU风格的长参数,前面加双破折线; 例如 ps –forest

三种风格的参数,有一些相似的,但也有些看似相同却结果不同的。例如ps aux与ps -aux 的含义是不同的。
ps aux 表示 打印基于用户的格式显示的所有进程
ps -aux 表示用户x的所有进程,如用户x不存在,则给出警告,然后打印内容和ps aux相同

常用参数

unix风格GNU风格BSD风格含义
-Aax显示所有进程
-eax显示所有进程
-a显示除守护进程和无终端进程外的所有进程
-d显示所有进程,除会话首进程(session leaders)
-N–deselect显示除满足特殊条件的所有进程
-p pidlist–pidpid显示pid在pidlist里的进程,pidlist表示pid数组,多个用逗号分隔,如-p 123,124
-C cmdlist通过执行命令名称查找进程,显示执行命令在cmdlist里的进程
-G grplist–Group通过进程组ID或进程组名称查找进程,显示进程组ID在grplist里的进程
-g grplist–group通过session或进程组ID在grplist里的进程
-s sesslist–sid通过session ID查找进程,显示session ID在sesslist里的进程
-t ttylist–ttyt通过控制终端id查找进程
-U userlist–UserU通过用户ID(RUID)或名称查找进程
-u userlist–user通过用户ID(EUID)或名称查找进程
-o format–formatO仅显示由format指定的列
-O format显示基本列和由format指定的列
-H显示进程继承树
–sort orderk将输出按指定列进行排序
–forest用层级结构显示出进程和父进程之间的关系
-mm显示进程的线程信息

进程格式化输出

在上面参数中,-O,-o参数都可以控制进程输出列信息。

控制代码列头描述
%cpu%CPUCPU使用信息
%mem%MEM进程内存使用信息
argsCOMMAND带执行参数的进程执行命令
cmdCMD和args一样
commandCOMMAND和args一样
commCOMMAND进程执行命令名称
bsdstartSTART进程开始执行的时间
bsdtimeTIME进程执行时间
pidPID进程PID
ppidPPID父进程PID
pgidPGID进程组ID
euidEUIDEUID
egidEGID有效用户组ID(egid)
gidGID用户组ID

进程状态

unix风格进程状态
状态名称含义
0正运行
R可以运行,等待运行
S在休眠
Z僵化,进程已结束,但父进程已不存在,没有响应
T停止
BSD 风格的进程状态
状态名称含义
<进程运行在高优先级上
N进程运行在低优先级上
L进程有页面锁定在内存中
s进程是个控制进程
l进程是多线程
+进程运行在前端

常用用法

批量杀进程

批量杀进程的方法,先用ps命令列出进程的id及其他相关信息,如果列出进程依旧过多,可以使用grep命令进行过滤,然后通过awk拿到pid,再通过kill命令杀掉进程。

例如:下面的命令可以杀掉所有的python进程

ps aux|grep python |grep -v grep  | awk '{ print $2 }' |xargs kill -9

查看topN进程

  1. 查看topN最占CPU的进程

使用ps的–sort命令按%CPU进行排序,再使用head命令就可以了.
例:查看最占CPU前10的进程

ps aux --sort -%cpu|head -n 10
  1. 查看topN最占内存的进程
ps -A -o pid,%mem,cmd --sort -%mem|head -n 10
  1. 查看topN虚拟内存使用最多的进程
ps -A -o pid,vsz,cmd --sort -vsz|head -n 10

转载请注明本文地址: linux进程及进程查看ps命令
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值