查看进程的命令有哪些?
pidof pgrep pstree ps top
等等。
pidof
命令用于查找指定名称的进程的进程号。这个命令无法模糊搜索,所以在使用的时候一定要知道准确的进程名字1
2# pidof chrome
31965 22019 22659 22641 22161 22120pgrep
命令以名称为依据从运行进程队列中查找进程,并显示查找到的进程id。这个命令不仅可以模糊搜索,还可以通过1
2# pgrep -o chr -l
22019 chrome-o
参数找到起始进程,-l
打印名字。pstree
命令将所有行程以树状图显示。接下来我们详细讲一下ps和top命令。1
2
3
4
5
6
7
8
9
10
11
12# pstree 22019
chrome─┬─2*[cat]
├─chrome─┬─chrome
│ └─7*[{chrome}]
├─chrome───8*[{chrome}]
├─chrome-sandbox───chrome─┬─chrome─┬─7*[chrome───10*[{chrome}]]
│ │ ├─chrome───9*[{chrome}]
│ │ ├─chrome───12*[{chrome}]
│ │ ├─2*[chrome───11*[{chrome}]]
│ │ └─chrome───13*[{chrome}]
│ └─chrome-sandbox───nacl_helper
└─27*[{chrome}]
常用命令之ps
ps命令用来列出系统中当前运行的那些进程。
ps命令参数众多,这里只讲两种搭配用法:
1.ps aux
1 | # ps aux |
- %CPU
%CPU = cputime/realtime*100
,这个值不可能达到100%。
cputime:进程生命周期中使用cpu的时间。
realtime:进程生命周期。 - %MEM
进程占用物理内存的百分比 - VSZ
进程占用虚拟内存的量,单位KB - RSS
进程占用物理内存的量,单位KB - TTY
该进程是在哪个终端机上面运作,若与终端机无关,则显示’?’,另外,tty1-tty6是本机上面的登入者程序,若为pts/0等等的,则表示为由网络连接进主机的程序。
守护进程因为脱离session,所以这一栏显示’?’。 - STAT
该程序目前的状态,主要的状态有:1
2
3
4
5
6
7
8
9
10
11
12
13D 不可中断睡眠(通常是在IO操作)收到信号不唤醒和不可运行,进程必须等待直到有中断发生
R 正在运行或可运行(在运行队列排队中)
S 可中断睡眠(休眠中,受阻,在等待某个条件的形成或接受到信号)
T 已停止的,进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行
W 正在换页(2.6.内核之前有效)
X 死进程(未开启)
Z 僵尸进程,进程已终止,但进程描述符存在,直到父进程调用wait()系统调用后释放
< 高优先级(not nice to other users)
N 低优先级(nice to other users)
L 有页被锁定在内存(实时和定制的IO)
s 首进程
l 多线程(使用CLONE_THREAD,像NPTL的pthreads的那样)
+ 在前台进程组 - START
进程的启动时间 - TIME
累计使用cpu的时间,格式:hh:mm:ss - COMMAND
所执行的指令
2.ps alx
1 | # ps alx |
- PPID
父进程的pid - PRI
进程的优先级。数字越大意味着优先级越低。
PRI是内核动态调整的,我们使用者也无权去干涉。 - NI
进程的NICE值,数值大,表示较少占用CPU时间。
nice值可调整的范围为-20至19。PRI(new)=PRI(old)+nice
- WCHAN
正在等待的进程资源。
常用命令之top
top命令用于实时显示进程的动态。
1 | # top |
top命令展示的信息特别多,这边简单讲几个我觉得重要的:
load average
一段时间(1分钟、5分钟、15分钟)内CPU平均负载。
在top命令中按’1’可以看几个CPU分别的情况,一般load average的值 / CPU个数 > 1
说明已经超负荷了。Tasks
警惕zombie僵尸进程,虽然不占用资源,但占pid。%Cpu(s)
1
2
3
4
5us 用户空间占用CPU百分比
sy 内核空间占用CPU百分比
ni 用户进程空间内改变过优先级的进程占用CPU百分比
id 空闲CPU百分比
wa 等待I/O的CPU时间百分比这里要注意wa,如果系统卡,wa高,说明I/O可能出现了拥塞。
SHR
共享内存大小,单位kb。详细可了解shmget()函数。%CPU
注意这边的%CPU与ps命令中的完全不同。
top是从上次更新以来,进程占总CPU时间的百分比。
一般几秒钟一刷,可以认为是即时的。值最高为CPU核数x100%。
所以我们平时定位问题需要的是这个值。COMMAND
这里如果需要显示全需要加’-c’参数。
总结
以上是我们在用户态查看进程信息的常用命令。