一 概念
要对进程进行检测和控制,首先需要了解当前进程的状况,也就是需要查看当前进程,而ps命令就是最基本的同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行中的状态、进程是否结束、进程是否有僵尸进程、哪些进程占用了过多的资源等等,总之大半部分信息可以通过执行命令得到,ps最常用的还是用于监控后台进程的工作情况,因为后台进程不和鼠标和键盘这种标准输入/出进行通信的。
Linux中的ps命令是Process Status的缩写,ps命令用来列出系统中当前运行的那些进程,ps命令列出的是当前那些进程的快照'静态'。
二 进程简介
1.什么是进程
进程由'程序产生',是'正在运行的程序',由自己的生命周期和状态,'一个进程对应着一个程序'
2.进程的特点
'独立性':每一个进程都要自己的'私立空间',不被允许时,用户进程'无法访问其他进程'的地址空间
'动态性':系统中正在活动的指令集合
'并发性':多个进程可以在'单个处理器上'并发执行
三 命令简介
命令参数:
a 显示'所有进程' -->'常用'
-a 显示'同一终端下'的所有程序
-A 显示所有进程
c 显示进程的'真实名称(command)'
-N 反向选择
-e 等于'-A'
e 显示'环境变量'
f 显示'程序间的关系' --> 可以使用进程树 --> 'pstree'
-H 显示树状结构
r 显示当前终端的进程
T 显示当前终端的所有程序
u 指定'用户的'所有进程 -->'常用'
f 显示'全部的字段' -->'常用'
-au 显示较详细的资讯
-aux 显示所有'包含其他使用者'的行程 --> '常用'
-C<命令> 列出'指定命令的状况'
--lines<行数> 每页显示的行数
--width<字符数> 每页显示的字符数
--help 显示帮助信息
--version 显示'版本显示'
四 常用组合命令
ps -ef
ps -aux
-e 是显示'所有进程'
-o 是'定制'显示'信息的格式'
-e和-A的'意思是一样的',即显示有关其他用户进程的信息,包括那些没有控制终端的进程。
-f显示'用户id,进程id,父进程id,最近CPU使用情况',进程开始时间等等。
需求1:按内存使用进行降序排列
ps -eo rss,pmem,pcpu,vsize,args | sort -k 1 -r -n | less
-k 1 :按第一个参数'rss进行排'
-r:逆序 -->'ps默认是升序'
-n:numeric,按'数字来排序'
--- '其它方式' ---
格式:
--sort=[+|-] key
从SORT KEYS段中选一个多字母键.'+'字符是'可选地',因为默认地方向就是'按数字升序'或者'词典顺序'
按'内存升序'排列:ps aux --sort=rss
按'CPU降序'排列:ps aux --sort=-%cpu
排序中运用的值是ps运用地内部值,并非仅用于某些输出格式的伪值
c cmd 可执行地简单名称
C cmdline '完整命令行' --> '常用'
f flags 长模式标志
g pgrp 进程地组ID
G tpgid 控制tty进程组ID
j cutime 累计用户时间
J cstime 累计系统时间
k utime 用户时间
K stime 系统时间
m min_flt 次要页错误地数量
M maj_flt 重点页错误地数量
n cmin_flt 累计次要页错误
N cmaj_flt 累计重点页错误
o session 对话ID
p pid '进程ID'
P ppid '父进程ID' -->'大写' --> '常用'
r rss '驻留大小'
R resident 驻留页
s size 内存大小(千字节)
S share 共享页地数量
t tty tty次要设备号
T start_time 进程启动地时间
U uid 'UID' -->'常用'
u user '用户名' -->'常用'
v vsize 总地虚拟内存数量(字节)
y priority 内核调度优先级
五 关于线程
六 进程树