进程管理类命令
ps:查看当前系统进程状态
1)基本语法
语法 | 说明 |
---|
ps aux | 查看系统中所有进程 |
ps -ef | 可以查看父子进程之间的关系 |
2)选项说明
选项 | 说明 |
---|
a | 列出带有终端的所有用户的进程 |
x | 列出当前用户的所有进程,包括没有终端的进程 |
u | 面相用户友好的显示风格 |
-e | 列出所有进程 |
-u | 列出某个用户关联的所有进程 |
-f | 显示完整格式的进程列表 |
3)ps aux:查看进程CPU、内存占用率
[root@Demo-Server ~]
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 3.1 0.7 128792 7416 ? Ss 21:24 0:02 /usr/lib/systemd/systemd --s
root 2 0.0 0.0 0 0 ? S 21:24 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? R 21:24 0:00 [kworker/0:0]
root 4 0.0 0.0 0 0 ? S< 21:24 0:00 [kworker/0:0H]
root 5 0.0 0.0 0 0 ? S 21:24 0:00 [kworker/u256:0]
root 6 0.1 0.0 0 0 ? S 21:24 0:00 [ksoftirqd/0]
root 7 0.0 0.0 0 0 ? S 21:24 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 21:24 0:00 [rcu_bh]
root 9 1.1 0.0 0 0 ? R 21:24 0:00 [rcu_sched]
root 10 0.0 0.0 0 0 ? S< 21:24 0:00 [lru-add-drain]
root 11 0.0 0.0 0 0 ? S 21:24 0:00 [watchdog/0]
root 13 0.0 0.0 0 0 ? S 21:24 0:00 [kdevtmpfs]
root 14 0.0 0.0 0 0 ? S< 21:24 0:00 [netns]
root 15 0.0 0.0 0 0 ? S 21:24 0:00 [khungtaskd]
root 16 0.0 0.0 0 0 ? S< 21:24 0:00 [writeback]
- USER: 该进程是由哪个用户产生的
- PID: 进程的 ID 号
- %CPU: 该进程占用 CPU 资源的百分比, 占用越高, 进程越耗费资源
- %MEM: 该进程占用物理内存的百分比, 占用越高, 进程越耗费资源
- VSZ: 该进程占用虚拟内存的大小, 单位 KB
- RSS: 该进程占用实际物理内存的大小, 单位 KB
- TTY: 该进程是在哪个终端中运行的。 对于 CentOS 来说, tty1 是图形化终端,tty2-tty6 是本地的字符界面终端。 pts/0-255 代表虚拟终端。
- STAT: 进程状态,常见的状态有:
- R: 运行状态
- S: 睡眠状态
- T: 暂停状态
- Z: 僵尸状态
- s: 包含子进程
- l: 多线程
- +: 前台显示
- START: 该进程的启动时间
- TIME: 该进程占用 CPU 的运算时间, 注意不是系统时间
- COMMAND: 产生此进程的命令名
4)ps -ef:显示父子进程信息
如果想查看进程的 CPU 占用率和内存占用率, 可以使用 ps aux
如果想查看进程的父进程 ID 可以使用 ps ef
[root@Demo-Server ~]
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 21:24 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --s
root 2 0 0 21:24 ? 00:00:00 [kthreadd]
root 3 2 0 21:24 ? 00:00:00 [kworker/0:0]
root 4 2 0 21:24 ? 00:00:00 [kworker/0:0H]
root 5 2 0 21:24 ? 00:00:00 [kworker/u256:0]
root 6 2 0 21:24 ? 00:00:00 [ksoftirqd/0]
root 7 2 0 21:24 ? 00:00:00 [migration/0]
root 8 2 0 21:24 ? 00:00:00 [rcu_bh]
- UID: 用户 ID
- PID: 进程 ID
- PPID: 父进程 ID
- C: CPU 用于计算执行优先级的因子。 数值越大, 表明进程是 CPU 密集型运算,执行优先级会降低; 数值越小, 表明进程是 I/O 密集型运算, 执行优先级会提高
- STIME: 进程启动的时间
- TTY: 完整的终端名称
- TIME: CPU 时间
- CMD: 启动进程所用的命令和参数
5)ps -Lf pid:查看某个进程的所有内核线程
[root@Demo-Server ~]
UID PID PPID LWP C NLWP STIME TTY STAT TIME CMD
root 1 0 1 0 1 21:24 ? Ss 0:02 /usr/lib/systemd/systemd --sw
- UID: 用户 ID
- PID: 进程 ID
- PPID: 父进程 ID
- C: CPU 用于计算执行优先级的因子。 数值越大, 表明进程是 CPU 密集型运算,执行优先级会降低; 数值越小, 表明进程是 I/O 密集型运算, 执行优先级会提高
- STIME: 进程启动的时间
- TTY: 完整的终端名称
- TIME: CPU 时间
- CMD: 启动进程所用的命令和参数
kill:终止进程
1)基本语法
语法 | 说明 |
---|
kill [选项] 进程号 | 通过进程号杀死进程 |
killall 进程名称 | 通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用 |
2)选项
3)案例实操
(1)关闭火狐浏览器
[root@Demo-Server ~]
root 2706 2528 22 21:22 ? 00:00:15 /usr/lib64/firefox/firefox
[root@Demo-Server ~]
(2)通过进程名称杀死进程
[root@Demo-Server ~]
pstree:查看树进程
pstree命令以树状图的方式展现进程之间的派生关系,显示效果比较直观。
1)基本语法
pstree [选项]
2)选项说明
选项 | 说明 |
---|
-p | 显示进程的PID |
-u | 显示进程的所属用户 |
3)案例实操
(1)显示进程pid
查看一个特定的进程
如果您希望pstree仅显示特定进程的父级和子级信息,请使用-s选项。
pstree -s [PID]
如下,6826是一个java的进程,还可以看到这个进程下面的所有线程列表
top:实时监控系统状态
1)语法
top [选项]
2)选项说明
选项 | 说明 |
---|
-d 秒数 | 指定top命令每隔几秒刷新一下结果,默认是3秒在top命令的交互模式当中可以执行命令 |
-i | 使top不显示任何闲置或者僵死进程 |
-p | 通过指定监控进程ID来监控某个进程的状态 |
-c | 显示整个命令行而不只是显示命令名 |
3)操作说明
在top命令结果中可以执行下面操作参与交互
操作 | 功能 |
---|
P | 以CPU使用率排序,默认就是此项 |
M | 以内存的使用率排序 |
N | 以PID排序 |
q | 退出top |
4)查询结果字段解释
(1)第1行信息为任务队列信息
内容 | 说明 |
---|
12:26:46 | 系统当前时间 |
up 1 day, 13:32 | 系统的运行时间,本金以运行1天13小时32分 |
2 users | 当前登录了2个用户 |
load average: 0.00, 0.00, 0.00 | 系统在之前 1 分钟, 5 分钟, 15 分钟的平均负 载。 一般认为小于 1 时, 负载较小。 如果大于 1, 系统已经超出负荷 |
(2)第2行为进程信息
内容 | 说明 |
---|
Tasks: 95 total | 系统中的进程总数 |
1 running | 正在运行的进程数 |
94 sleeping | 睡眠的进程数 |
0 stopped | 正在停止的进程数 |
0 zombie | 僵尸进程。 如果不是 0, 需要手工检查僵尸进程 |
(3)第3行为CPU信息
内容 | 说明 |
---|
us | 用户空间占用的 CPU 百分比 |
sy | 内核空间占用的 CPU 百分比 |
ni | 改变过优先级的用户进程占用的 CPU 百分比 |
id | 空闲 CPU 百分比 |
wa | 等待输入/输出的进程的占用 CPU 百分比 |
hi | 硬中断请求服务占用的 CPU 百分比 |
si | 软中断请求服务占用的 CPU 百分比 |
st | st( Steal time) 虚拟时间百分比。 就是当有虚拟 机时, 虚拟 CPU 等待实际 CPU 的时间百分比。 |
(4)第4行为物理内存信息
内容 | 说明 |
---|
total | 物理内存的总量, 单位 KB |
used | 已经使用的物理内存数量 |
free | 空闲的物理内存总量 |
buffers | 作为缓冲的内存数量 |
(5)第5行为交换分区信息
内容 | 说明 |
---|
Swap: 524280k total | 交换分区(虚拟内存) 的总大小 |
0k used | 已经使用的交换分区的大小 |
524280k free | 空闲交换分区的大小 |
409280k cached | 作为缓存的交换分区的大小 |
(6)进程信息区
统计信息区域的下方显示了各个进程的详细信息,首先来认识一下各列的含义。
- PID 进程id
- PPID 父进程id
- USER Real user name
- UID 进程所有者的用户id
- USER 进程所有者的用户名
- GROUP 进程所有者的组名
- TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?
- PR 优先级
- NI nice值。负值表示高优先级,正值表示低优先级
- P 最后使用的CPU,仅在多CPU环境下有意义
- %CPU 上次更新到现在的CPU时间占用百分比
- TIME 进程使用的CPU时间总计,单位秒
- TIME+ 进程使用的CPU时间总计,单位1/100秒
- %MEM 进程使用的物理内存百分比
- VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
- SWAP 进程使用的虚拟内存中,被换出的大小,单位kb
- RES 进程使用的、未被换出的物理内存大小,单位kb,RES=CODE+DATA
- CODE 可执行代码占用的物理内存大小,单位kb
- DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
- SHR 共享内存大小,单位kb
- nFLT 页面错误次数
- nDRT 最后一次写入到现在,被修改过的页面数。
- S 进程状态。
- D=不可中断的睡眠状态
- R=运行
- S=睡眠
- T=跟踪/停止
- Z=僵尸进程
- COMMAND 命令名/命令行
5)2个案例
(1)显示进程1的状态信息
top -p 进程id
(2)2500 毫秒刷新一次 TOP 内容,总共 5 次,输出内容存放到 performace.txt 文件中
注:要将内容输出到文件中,必须使用 - b,表示批处理选项
top -b -d 2.5 -n 5 > performace.txt
(3)只显示活动中的进程
netstat:显示网络状态和端口占用信息
1) 基本语法
命令 | 说明 |
---|
netstat -anp | grep 进程号 | 查看该进程网络信息 |
netstat –nlp | grep 端口号 | 查看网络端口号占用情况 |
2)选项说明
选项 | 功能 |
---|
-a | 显示所有正在监听(listen) 和未监听的套接字(socket) |
-n | 拒绝显示别名, 能显示数字的全部转化成数字 |
-l | 仅列出在监听的服务状态 |
-p | 表示显示哪个进程在调用 |
3)连接状态详解
- LISTEN: 侦听来自远方的TCP端口的连接请求
- SYN-SENT: 再发送连接请求后等待匹配的连接请求
- SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认
- ESTABLISHED: 代表一个打开的连接
- FIN-WAIT-1: 等待远程TCP连接中断请求,或先前的连接中断请求的确认
- FIN-WAIT-2: 从远程TCP等待连接中断请求
- CLOSE-WAIT: 等待从本地用户发来的连接中断请求
- CLOSING: 等待远程TCP对连接中断的确认
- LAST-ACK: 等待原来的发向远程TCP的连接中断请求的确认
- TIME-WAIT: 等待足够的时间以确保远程TCP接收到连接中断请求的确认
- CLOSED: 没有任何连接状态
4) 案例实操
(1) 通过进程号查看sshd进程的网络信息
[root@Demo-Server ~]
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1618/sshd
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 3639/sshd: root@pts
tcp 0 0 192.168.11.132:22 192.168.11.1:64863 ESTABLISHED 3639/sshd: root@pts
tcp 0 0 192.168.11.132:22 192.168.11.1:64864 ESTABLISHED 3653/sshd: root@not
tcp6 0 0 :::22 :::* LISTEN 1618/sshd
tcp6 0 0 ::1:6010 :::* LISTEN 3639/sshd: root@pts
unix 3 [ ] STREAM CONNECTED 36655 1618/sshd
unix 2 [ ] DGRAM 62051 3639/sshd: root@pts
unix 2 [ ] DGRAM 63080 3653/sshd: root@not
(2) 查看22端口号是否被占用
[root@Demo-Server ~]
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 2398/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1618/sshd
tcp6 0 0 :::22 :::* LISTEN 1618/sshd