ps, top, pstree

时间:2023-03-08 17:15:21
ps, top, pstree

ps

查看当前终端所启动的进程, 不加选项只查看当前终端的进程

PID			TTY		TIME 		CMD
2398 pts/1 00:00:00 bash
3625 pts/1 00:00:00 ps
#PID : Process ID,是进程的唯一标识, 虽然是int 但是从0开始使用, OS使用延迟重用算法来分配进程的编号, 从而保证任意时刻进程号都是唯一的(对OS来说是唯一的,eg: 连续执行两次同一个a.out,也是两个进程,有PID1.PID2, 所以一定不能把刚刚使用过的PID号PID1给新的进程,否则OS就不知道是之前的没关还是新的刚创建)
#TTY :终端的次要装置号码,tetetype, 用来表示终端类型
#TIME :消耗cpu的时间
#CMD :命令,即进程名

ps aux

查看所有进程,ps aux是BSD syntax,ps -aux是standard syntax, 但二者的意义完全不同=>$man ps

$ps aux | more		#输出的太多, 把$ps aux执行的结果交给$more, =>回车翻一行,空格翻一页, q退出
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 3740 2156 ? Ss 08:28 0:00 /sbin/init
root 2 0.0 0.0 0 0 ? S 08:28 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 08:28 0:00 [ksoftirqd/0]
--More-- #USER :用户
#%CPU :占用CPU百分比
#%MEM :占用MEM百分比
#VSZ :虚拟内存大小
#RSS :物理内存大小
#STAT :进程的状态信息
S :休眠状态(为了减轻CPU压力)
s :进程的领导者, 拥有子进程,树型的根节点
Z :僵尸进程, 进程已经结束, 但是资源没有回收
R :正在运行的进程
O :可以运行的进程
T :挂起状态的进程
< :优先级比较高的进程
> :优先级比较低的进程
#START :进程的启动时间

ps -ef

以全格式的方式显示所有进程(every)查看当前终端所启动的进程, 不加选项只查看当前终端的进程

PID			TTY	       TIME 	    CMD
2398 pts/1 00:00:00 bash
3625 pts/1 00:00:00 ps
#PID : Process ID,是进程的唯一标识, 虽然是int 但是从0开始使用, OS使用延迟重用算法来分配进程的编号, 从而保证任意时刻进程号都是唯一的(对OS来说是唯一的,eg: 连续执行两次同一个a.out,也是两个进程,有PID1.PID2, 所以一定不能把刚刚使用过的PID号PID1给新的进程,否则OS就不知道是之前的没关还是新的刚创建)
#TTY :终端的次要装置号码,tetetype, 用来表示终端类型
#TIME :消耗cpu的时间
#CMD :命令,即进程名

ps aux

查看所有进程,ps aux是BSD syntax,ps -aux是standard syntax, 但二者的意义完全不同=>$man ps

$ps aux | more		#输出的太多, 把$ps aux执行的结果交给$more, =>回车翻一行,空格翻一页, q退出
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 3740 2156 ? Ss 08:28 0:00 /sbin/init
root 2 0.0 0.0 0 0 ? S 08:28 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 08:28 0:00 [ksoftirqd/0]
--More-- #USER :用户
#%CPU :占用CPU百分比
#%MEM :占用MEM百分比
#VSZ :虚拟内存大小
#RSS :物理内存大小
#STAT :进程的状态信息
S :休眠状态(为了减轻CPU压力)
s :进程的领导者, 拥有子进程,树型的根节点
Z :僵尸进程, 进程已经结束, 但是资源没有回收
R :正在运行的进程
O :可以运行的进程
T :挂起状态的进程
< :优先级比较高的进程
> :优先级比较低的进程
#START :进程的启动时间

ps -ef

以全格式的方式显示所有进程(every)

F	S	UID		PID		PPID	C	PRI	NI	ADDR	SZ	WCHAN		TTY	TIME		CMD
4 S 0 1 0 0 80 0 - 935 poll_s ? 00:00:00 init
1 S 0 2 0 0 80 0 - 0 kthrea ? 00:00:00 kthreadd
#PPID :父进程的编号(IMPORTANT)
#C :占用CPU百分比
#STIME :启动时间
F	S	UID		PID		PPID	C	PRI	NI	ADDR	SZ	WCHAN		TTY	TIME		CMD
4 S 0 1 0 0 80 0 - 935 poll_s ? 00:00:00 init
1 S 0 2 0 0 80 0 - 0 kthrea ? 00:00:00 kthreadd
#PPID :父进程的编号(IMPORTANT)
#C :占用CPU百分比
#STIME :启动时间

ps -axj

显示系统的守护进程

$ps -axj
Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
0 1 1 1 ? -1 Ss 0 0:01 /sbin/init
0 2 0 0 ? -1 S 0 0:00 [kthreadd]
2 3 0 0 ? -1 S 0 0:02 [ksoftirqd/0]
2 5 0 0 ? -1 S 0 0:02 [kworker/u:0]
2 6 0 0 ? -1 S 0 0:00 [migration/0]
2 7 0 0 ? -1 S 0 0:01 [watchdog/0]
2 8 0 0 ? -1 S 0 0:00 [migration/1]
2 10 0 0 ? -1 S 0 0:02 [ksoftirqd/1]

top

$top [-dbnp] #动态查看进程的变化

-d 数字 #后面可以接刷新的,默认是5秒。

-b #以批次的方式执行top,还有更多的参数可以使用。

#通常会搭配数据流重定向来将批处理的结果输出成文件

-n #与-b 搭配,意义是,需要进行几次top的输出结果

-p pid #指定某些个PID来进行查看监测

Note:在top执行过程当中可以使用的按键命令

: 显示在top当中可以输入的按键命令

P: 以CPU的使用资源排序显示

M: 以内存的使用资源排序显示

N: 以PID顺序排序

T: 由该进程使用的CPU时间累积(TIME+)排序

k: 给予某个PID一个信号 (signal)

r: 给予某个PID重新制定一个nice值

q: 离开top的按键

pstree

stree [-A|U] [-up]

A #各进程树之间的连接以ASCII字符来连接

U #各进程树之间的连接以utf8码的字符来连接,在某些终端端口写可能会有错误

u #同时列出每个进程的所属帐号名称

-p #同时列出每个进程的PID

$pstree -A
init-+-NetworkManager-+-dnsmasq
| `-2*[{NetworkManager}]
|-accounts-daemon---{accounts-daemon}
|-irqbalance
|-lightdm-+-Xorg---2*[{Xorg}]
| |-lightdm-+-gnome-session-+-bluetooth-apple---2*[{bluetooth-apple}]
| | | |-deja-dup-monito---2*[{deja-dup-monito}]
$pstree -U
init─┬─NetworkManager─┬─dnsmasq
│ └─2*[{NetworkManager}]
├─accounts-daemon───{accounts-daemon}
├─acpid
├─atd
├─avahi-daemon───avahi-daemon
├─bluetoothd
├─colord───2*[{colord}]
├─gnome-terminal─┬─bash───pstree
│ ├─gnome-pty-helpe
│ └─3*[{gnome-terminal}]
├─goa-daemon───{goa-daemon}
├─gsd-locate-poin───2*[{gsd-locate-poin}]