0%

进程管理命令

进程管理命令

查看进程命令

ps命令

显示系统上运行的进程列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 查看系统中所有正在运行的系统
ps aux

# 获取占用内存资源最多的10个进程,可以使用如下命令组合:
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head
# 获取占用CPU资源最多的10个进程,可以使用如下命令组合:
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head



------------
a 显示所有用户的所有进程,除了会话引线
u 显示进程的归属用户及内存的使用情况,按照用户名和启动时间顺序显示
x 显示没有控制终端的进程
-e 显示系统中所有的进程
-f 显示进程间关系
-H 显示树状结构
-r 显示当前终端的程序
-T 显示当前终端的所有程序
-p 根据进程ID显示对应的信息
-A 简明查看系统启动的所有进程
aux 显示所有用户所有进程的详细信息


ps -ef


显示的内容

ps命令结果

  • USER 哪个用户产生的
  • PID 进程的ID号
  • %CPU 该进程占用CPU资源的百分比
  • %MEM 该进程占用物理内存的百分比
  • VSZ 该进程占用虚拟内存的大小,单位KB
  • RSS 该进程占用实际物理内存的大小,单位KB
  • TTY 该进程是在哪个终端中运行的。tty1-tty7代表本地控制台终端,tty1-tty6是本地字符界面终端,tty7是图形终端。pts/0-255代表虚拟终端,一般是远程连接的终端,第一个远程连接占用的是pts/0终端,依次递增,?表示由内核直接启动的,是系统进程
  • STAT 进程状态。
    • D表示不可唤醒的睡眠状态,通常用于I/O情况
    • R表示进程正在进行
    • S表示进程在睡眠状态,可被唤醒
    • T表示停止状态,可能是在后台暂停或进程在出错状态
    • W表示内存交互状态
    • X表示死掉的进程
    • Z表示僵尸进程。进程已经终止,但是部分程序还在内存当中
    • <表示高优先级
    • N表示低优先级
    • L表示被锁入内存
    • s表示饱汉子进程
    • l表示多线程
    • +表示位于后台
  • START 该进程的启动时间
  • TIME 该进程占用CPU的运算时间
  • COMMAND 产生此进程的命令

top命令

实时对系统处理器状态进行监控

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
top -p  1298

-------
选项
-p 只查看某个PID
-b 分屏显示输出信息,结合-n可以把数据可以写入文件
-n 刷新几次
-d 指定刷新间隔
-i 不显示闲置的进程信息
-c 显示进程的整个命令路径





------
交互选项
P 按照CPU排序,默认
M 按照内存使用率排序
N 按照PID排序
T 按照时间、累计时间排序
k 终止一个进程,提示用户输入一个需要终止进程的pid
i 忽略闲置进程
s 改变top刷新间隔
o 改变输出信息中显示项目的顺序。按小写的a~z键可以将相应的列向右移动,按大写的A~Z键可以将相应的列向左移动。回车确认
c 显示完整命令行
q 退出top命令

默认情况下,top是按照进程来显示CPU消耗情况的,按 SHIFT+H 可以按照线程来查看CPU的消耗情况

显示的内容

top命令结果

第一行是任务队列信息,返回信息与uptime类似,系统当前时间、系统运行了多长时间、有多少用户正在使用该系统、系统每隔1分钟、5分钟、15分钟的平均负载

第二行是进程统计信息,分别为总数、正在运行的数量、睡眠的数量、停止的数量、僵尸数

第三行 %Cpu一行中展示的是cpu的使用情况

  • us (User time)表示用户进程占用的时间
  • sy (System time)表示系统进程占用的时间 us+sy一般合理值是在60-85%,超过85则会影响吞吐量
  • ni (Nice time)表示系统花费在调整进程优先级上的时间
  • id (Idle time)一般大于40,表示CPU空闲时间,id经常小于40,表示cpu的负荷很重
  • wa (Waiting time)一般应小于25%,表示用于等待IO完成的CPU时间,超过25%的wa的值可以表示子系统可能没有被正确平衡,也可能是磁盘密集工作负载的结果,系统的磁盘或其它I/o可能有问题,可以通过iostat/SAR –C命令进一步分解分析
  • hi (Hardirq time)表示处理硬件中断的CPU时间
  • si (Softirq time)表示处理软件中断的CPU时间
  • st (Steal time)表示当前CPU被强制(involuntary wait )等待另外虚拟的CPU处理完毕时花费的时间,此时 hypervisor 在为另一个虚拟处理器服务

最下边一栏是进程信息区

  • PR 进程优先级
  • VIRT 进程使用的虚拟内存总量。VIRT=SWAP+RES
  • RES 进程使用的、未被换出的物理内存大小。RES=CODE+DATA
  • SHR 共享内存大小
  • S 进程状态,D表示不可中断的睡眠状态,R表示运行状态,S表示睡眠状态,T表示跟踪/停止,Z表示僵死进程

如果想查看每个CPU的利用率,可以按1来查看每个cpu核的利用率了

pstree命令

可以查看到依赖关系

1
2
3
4
5
6
7
8
9
10
11
pstree -aup

-a 显示每个程序的完整指令,包括路径,参数
-c 不使用精简标示法
-G 使用VT100终端机的列绘图字符
-h 列出树状图时,特别标明现在执行的程序
-H 程序识别码 此参数的效果与-h参数类似,但特别标注指定的程序
-l 采用长列格式显示树状图
-n 用程序识别码排序
-p 显示程序识别码
-u 显示用户名称

pgrep命令

查找当前运行的进程,并列出匹配的pid

1
2
pgrep mysql
22055

pmap命令

显示进程调用的各种库分别占用内存的情况,可以看到所有内存地址的详细信息,而且还显示了启动进程的命令

1
2
# 通过进程id来查找
pmap -d 133872

mpstat命令

显示多处理器系统的CPU使用率,这些信息存放在/proc/stat文件中

mpstat命令结果

杀死进程命令

1
2
3
4
5
6
7
8
9
10
11
#强制关闭指定进程
kill -9 pid

# 关闭指定进程
kill pid

# 关闭服务的所有进程
killall 服务名

# 强制关闭服务的所有进程
killall -9 服务名

pidstat命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
指令
# -w 进程的上下文切换
# -d 进程IO
# -r 进程内存使用
# -u 进程cpu使用



# cswch/s 是让步式上下文切换
pidstat -w

UID PID cswch/s nvcswch/s Command

# 5s一次监控进程pid为2213
pidstat -w -I -p 2213 5

# 监控进程pid的ip的io
pidstat -d -p 2213
UID PID kB_rd/s kB_wr/s kB_ccwr/s Command

进程内存文件

linux中,在/proc/{pid}目录下存储指定进程的相关信息,其中/proc/{PID}/smaps 文件中记录着当前进程所对应的内存映像信息,可以通过该信息查询指定进程的swap使用情况

1
cat /proc/15812/smaps | grep Swap

欢迎关注我的其它发布渠道