一天一个shell命令 linux好管家-进程-ps命令详解
小知识(以ps为例):
查看命令路径 which ps
命令帮助 ps --help
命令完全手册: man ps
说明
ps全称是:process status (进程状态),他就是提供进程信息的。
ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。
附知识说明
我们经常见到shell命令有三种类型的参数,最初我还琢磨 单划线和双划线有什么特殊的含义,原来是一个版本演变留下的问题。
linux系统中常见的3种命令行参数(以ps为例):
unix类型的参数,前面有一短划线 如:ps -e
bsd类型的参数,前面没有短划线 如:ps a
gnu长参数,前面有双划线 如:ps --deselect
所以,ps –a 和 ps a查询结果会不同
常见实例
$ps
如图:
解释:默认情况,ps命令只显示属于当前用户并正在当前终端中运行的进程。默认ps的话,只运行了bash 和 ps
$ps –ef
如图:
解释:
uid 拥有进程的用户
pid 进程的id
ppid 父进程pid
c 进程存续期的处理利用率
stime 进程启动时的系统时间
tty 进程所属的终端
time 运行进程累计cpu时间
cmd 启动进程的名称
帮助文档
这回我用的是redhat的--help, 得到ps的help被分为五类:
simple selection 简易选项
********* simple selection *********
-a all processes 所有线程
-n negate selection 忽略选择
-a all w/ tty except session leaders 显示一个终端的所有进程,除了会话引线
-d all except session leaders 显示所有进程,但省略所有的会话引线(utility)
-e all processes
t all processes on this terminal
a all w/ tty, including other users
g obsolete -- do not use
r only running processes
x processes w/o controlling ttys
selection by list 列表选项
********* selection by list *********
-c by command name
-g by real group id (supports names)
-u by real user id (supports names)
-g by session or by effective group name
-p by process id
-s processes in the sessions given
-t by tty
-u by effective user id (supports names)
u processes for specified users
t by tty
output format 输出格式化
*********** output format **********
-o,o user-defined 可以输入自己的参数
-f full
-j,j job control
s signal
-o,o preloaded
-o v virtual memory
-l,l long
u user-oriented
-f extra full
x registers
long options 长操作类型
*********** long options ***********
--group --user --pid --cols --ppid
--group --user --sid --rows --info
--cumulative --format --deselect
--sort --tty --forest --version
--heading --no-heading --context
misc options 其他选项
********* misc options *********
-v,v show version l list format codes f ascii art forest
-m,m,-l,-t,h threads s children in sum -y change -l format
-m,z security data c true command name -c scheduling class
-w,w wide output n numeric wchan,uid -h process hierarchy
实例(来自man ps)
1. 查看系统每个进程的标准参数(to see every process on the system using standard syntax)
$ps -e
$ps -ef
$ps -ef
$ps –ely
2. 查看系统每个进程的bsd(系统名)参数(to see every process on the system using bsd syntax)
$ps ax
$ps axu
3. 打印进程树(to print a process tree)
$ps -ejh
$ps axjf
4. 打印线程的有关信息
$ps -elf
$ps axms
5. 获取安全信息
$ps -eo euser,ruser,suser,fuser,f,comm,label
$ps axz
$ps –em
6. 要查看每个进程运行在用户根目录(真实的和有效的id)格式
$ps -u root -u root u
7. 查看用户自定义的格式(to see every process with a user-defined format)
$ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
$ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
$ps -eopid,tt,user,fname,tmout,f,wchan
8. 仅仅打印系统日志的进程id(print only the process ids of syslogd)
$ps -c syslogd -o pid=
9. 仅仅打印pid=42的name(print only the name of pid 42)
$ps -p 42 -o comm=
10. 实用 以(7)为例,按照自定义格式看cpu信息
$ps -eo comm,pcpu | head
附: -0的参数目录
参数 | 描述 |
pcpu | cpu占用率 |
pid | 进程id |
ppid | 父进程id |
pmem | 内存使用率 |
comm | 可执行文件 |
cmd | 简单命令(simple command) |
user | 启动进程的用户 |
nice | 优先级(niceness) |
time | 累计的cpu时间 |
etime | 进程启动后累计时间 |
tty | 当前终端进程 |
euid | 有效用户id |
stat | 进程状态 |
ps语法
ps(选项)
ps选项
-a:显示所有终端机下执行的程序,除了阶段作业领导者之外。
a:显示现行终端机下的所有程序,包括其他用户的程序。
-a:显示所有程序。
-c:显示cls和pri栏位。
c:列出程序时,显示每个程序真正的指令名称,而不包含路径,选项或常驻服务的标示。
-c<指令名称>:指定执行指令的名称,并列出该指令的程序的状况。
-d:显示所有程序,但不包括阶段作业领导者的程序。
-e:此选项的效果和指定"a"选项相同。
e:列出程序时,显示每个程序所使用的环境变量。
-f:显示uid,ppip,c与stime栏位。
f:用ascii字符显示树状结构,表达程序间的相互关系。
-g<群组名称>:此选项的效果和指定"-g"选项相同,当亦能使用阶段作业领导者的名称来指定。
g:显示现行终端机下的所有程序,包括群组领导者的程序。
-g<群组识别码>:列出属于该群组的程序的状况,也可使用群组名称来指定。
h:不显示标题列。
-h:显示树状结构,表示程序间的相互关系。
-j或j:采用工作控制的格式显示程序状况。
-l或l:采用详细的格式来显示程序状况。
l:列出栏位的相关信息。
-m或m:显示所有的执行绪。
n:以数字来表示user和wchan栏位。
-n:显示所有的程序,除了执行ps指令终端机下的程序之外。
-p<程序识别码>:指定程序识别码,并列出该程序的状况。
p<程序识别码>:此选项的效果和指定"-p"选项相同,只在列表格式方面稍有差异。
r:只列出现行终端机正在执行中的程序。
-s<阶段作业>:指定阶段作业的程序识别码,并列出隶属该阶段作业的程序的状况。
s:采用程序信号的格式显示程序状况。
s:列出程序时,包括已中断的子程序资料。
-t<终端机编号>:指定终端机编号,并列出属于该终端机的程序的状况。
t<终端机编号>:此选项的效果和指定"-t"选项相同,只在列表格式方面稍有差异。
-t:显示现行终端机下的所有程序。
-u<用户识别码>:此选项的效果和指定"-u"选项相同。
u:以用户为主的格式来显示程序状况。
-u<用户识别码>:列出属于该用户的程序的状况,也可使用用户名称来指定。
u<用户名称>:列出属于该用户的程序的状况。
v:采用虚拟内存的格式显示程序状况。
-v或v:显示版本信息。
-w或w:采用宽阔的格式来显示程序状况。
x:显示所有程序,不以终端机来区分。
x:采用旧式的linux i386登陆格式显示程序状况。
-y:配合选项"-l"使用时,不显示f(flag)栏位,并以rss栏位取代addr栏位 。
-<程序识别码>:此选项的效果和指定"p"选项相同。
--cols<每列字符数>:设置每列的最大字符数。
--columns<每列字符数>:此选项的效果和指定"--cols"选项相同。
--cumulative:此选项的效果和指定"s"选项相同。
--deselect:此选项的效果和指定"-n"选项相同。
--forest:此选项的效果和指定"f"选项相同。
--headers:重复显示标题列。
--help:在线帮助。
--info:显示排错信息。
--lines<显示列数>:设置显示画面的列数。
--no-headers:此选项的效果和指定"h"选项相同,只在列表格式方面稍有差异。
--group<群组名称>:此选项的效果和指定"-g"选项相同。
--group<群组识别码>:此选项的效果和指定"-g"选项相同。
--pid<程序识别码>:此选项的效果和指定"-p"选项相同。
--rows<显示列数>:此选项的效果和指定"--lines"选项相同。
--sid<阶段作业>:此选项的效果和指定"-s"选项相同。
--tty<终端机编号>:此选项的效果和指定"-t"选项相同。
--user<用户名称>:此选项的效果和指定"-u"选项相同。
--user<用户识别码>:此选项的效果和指定"-u"选项相同。
--version:此选项的效果和指定"-v"选项相同。
--widty<每列字符数>:此选项的效果和指定"-cols"选项相同。
由于ps命令能够支持的系统类型相当的多,所以选项多的离谱!
推荐阅读
-
一天一个shell命令 linux好管家-磁盘-du命令详解
-
一天一个shell命令 linux好管家-进程-ps命令详解
-
一天一个shell命令 linux文本操作系列-tree命令详解
-
一天一个shell命令 linux文本内容操作系列-cut命令详解
-
一天一个shell命令 linux文本内容操作系列-grep命令详解
-
一天一个shell命令 linux文本操作系列-tac,rev命令详解
-
一天一个shell命令 linux文本内容操作系列-awk命令详解
-
一天一个shell命令 linux文本操作系列-wc命令详解
-
一天一个shell命令 linux好管家--磁盘--df命令详解
-
一天一个shell命令 linux文本操作系列-head,tail命令详解