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}]