查看和管理进程
1、使用ps命令监控系统进程
ps
:查看进程状态 (一个瞬间的进程状态,静态
)
语法: ps [options]
参数格式:
UNIX格式:一个"-"开头
BSD格式:没有"-"开头
GNU长格式:两个"-"开头
常用参数:
a # 显示与终端相关的所有进程,包含每个进程的完整路径
u # 显示进程的用户信息
x # 显示与终端无关的所有进程
-a # 显示所有终端下执行的进程
-u # 显示指定用户相关的进程信息
-e # 显示所有进程
-f # 额外显示UUID PPID C与STIME栏位
f # 显示进程树
-H # 显示进程树
-I # 以详细的格式来显示进程的状况
-o # 自定义输出指定字段,以逗号分隔
实例1: ps -ef
# 常用组合,UNIX格式组合 -e -f ,额外显示UID,PPID,C与STIME栏位
[root@centos7 ~]# ps
PID TTY TIME CMD
1525 pts/0 00:00:00 bash
1884 pts/0 00:00:00 ps
[root@centos7 ~]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 10:04 ? 00:00:01 /usr/lib/systemd/systemd --switched-rroot 2 0 0 10:04 ? 00:00:00 [kthreadd]
root 3 2 0 10:04 ? 00:00:00 [ksoftirqd/0]
root 5 2 0 10:04 ? 00:00:00 [kworker/0:0H]
root 7 2 0 10:04 ? 00:00:00 [migration/0]
# UID 进程被该UID所拥有
# PID 进程的标识号,进程ID
# PPID 进程的父进程的标识号
# C CPU使用的资源百分比
# STIME 进程开始的时间
# tty 该进程实在哪个终端机上面运作,若与终端无关,则显示?,tty1-tty6是本机上面的登入者进程,pts/0表示网络连接进主机的进程
# TIME 进程所使用的总的CPU时间
# CMD 正在执行的命令
实例2: ps aux
BSD格式参数,使用a选项和x选项显示所有进程 ,u显示进程的用户信息
[root@centos7 ~]# ps aux # BSD格式参数,使用a选项和x选项显示所有进程 u显示进程的用户信息
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 43680 4052 ? Ss 10:04 0:01 /usr/lib/systemd/systroot 2 0.0 0.0 0 0 ? S 10:04 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 10:04 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 10:04 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S 10:04 0:00 [migration/0]
# USER 该进程所属用户
# PID 该进程的进程号
# %CPU 该进程使用掉的CPU资源百分比
# %MEM 该进程所占用的内存百分比
# VSZ 该进程使用掉的虚拟内存量
# RSS 该进程占用的固定的内存量
# TTY 该进程在那个终端机上面运行的
# STAT
R 正在运行 S 正在中断睡眠中 D 不可中断睡眠
T 正在侦测或者是停止了 Z 已经终止,或者zombie僵死进程,
+ 前台进程 l 多线程进程 N 低优先级进程
< 高优先级进程 s 进程领导者 L 已将页面锁定到内存中
# START 该进程被触发启动的时间
# TIME 该进程实际使用CPU运作的时间 # COMMAND 该进程的实际命令
实例3: ps - l
将目前属于您自己这次登入的 PID 与相关信息列示出来
# UNIX格式参数,使用参数-l以详细的格式显示进程的状况
[root@centos7 ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1525 1419 0 80 0 - 29122 do_wai pts/0 00:00:00 bash
0 R 0 1898 1525 0 80 0 - 38300 - pts/0 00:00:00 ps
# F 代表这个进程的flag,4代表超级用户
# S 代表这个进程的状态(STAT),
# PRI 优先级Priorty的缩写,执行顺讯
# NI NICE值
# ADDR 指出该进程在内存那个部分,如果是个running进程,一般是“-”
# SZ 使用掉的内存大小
# WCHAN 进程是否在运行当中,-表示正在运行
实例4: ps -ef |grep
ps 与grep 常用组合用法,查找特定进程。
实例5:ps -u root
显示指定用户进程
[root@localhost ~]# ps -u zhaojiedi1992 # 查看有效用户为zhaojiedi1992的进程
PID TTY TIME CMD
15368 pts/3 00:00:00 bash
15389 pts/3 00:00:00 vim
15390 pts/3 00:00:00 vim
2、使用pstree命令监控系统进程
树状查看 (可以看出所属子进程)
- linux中,每一个进程都是由其父进程创建的。此命令以可视化方式显示进程,通过显示进程的树状图来展示进程间关系。
主要参数
-h:高亮显示当前的进程及其祖先
-H:高亮显示指定进程及其祖先
-p:显示进程的pid
-s:显示特定进程的直系进程
-u:指定用户
实例1:pstree -p
显示当前所有进程的进程号和进程ID。
实例2:pstree -a
显示所有进程的所有详细信息,遇到相同的进程名可以压缩显示。
3、使用top命令监控系统进程
top:“实时查看” ,按q
退出 (实时动态显示)
-a # 将进程按照使用内存排序
-b # 批处理的模式显示进程信息,输出结果可以传递给其他程序或写入到文件中,配合-n使用,一直打到-n设置的阈值
-c # 显示进程的整个命令路径,而不是只显示命令名称
-d # 指定每两次屏幕信息刷新之间的时间间隔
-H # 指定这个可以显示每个线程的情况,否则就是进程的总的状态
-i # 不显示闲置或者僵死的进程状态
-n # top输出信息更新的次数,完成后将推出top命令
-p # 显示指定的进程信息
键入 top
,显示如下信息
top - 14:27:26 up 4:22, 1 user, load average: 0.08, 0.03, 0.05
Tasks: 96 total, 2 running, 94 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1865284 total, 1460360 free, 96264 used, 308660 buff/cache
KiB Swap: 1048572 total, 1048572 free, 0 used. 1595216 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2029 root 20 0 0 0 0 R 0.3 0.0 0:00.14 kworker/0:1
第一行:任务队列信息,同uptime命令的执行结果
14:27:26 # 当前系统时间
up 4:26 # 系统已经运行了4个半小时
1 user # 当前有1个用户登录系统
load average: 0.08, 0.03, 0.05 # 1分钟,5分钟,15分钟的平均负载情况
第二行:Tasks为任务(进程)。上面的信息显示为
共有96个进程,处于运行状态的有2个,94个在休眠,stoped状态0个,zombie状态有0个
第三行:CPU状态信息
us # 用户空间占用CPU的百分比
sy # 内核空间占用cpu的百分比
ni # 改变优先级的进程占用CPU的百分比
id # 空闲CPU百分比
wa # I/O等待只用CPU的百分比
hi # 硬中断占用CPU的百分比
si # 软中断
st # 虚拟机占用CPU的百分比
第四行:内存状态
total # 物理内存总量
used # 使用中的内存总量
free # 空闲内存总量
buffers # 缓冲的内存量
第五行:swap交换分区信息
total # 交换分区总量
used # 使用的交换区总量
free # 空闲交换区总量
cached # 缓存的内存量
第六行:空行
第七行:给出的各进程(任务)的状态监控
PID # 进程iD
USER # 进程所有者
PR # 进程优先级
NI # nice值,负值表示高优先级,正值表示低优先级
VIRT # 进程使用的虚拟内存总量,单位为KB
RES # 进程使用的,未被换出的物理内存大小,单位KB
SHR # 共享内存大小,单位为kb
S # 进程状态,D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程
%CPU # 上次更新到现在的CPU时间占用百分比
%MEM # 进程使用的物理内存百分比
TIME+ # 进程使用的物理内存百分比
COMMAND # 进程名称
常用操作
例1:设置top命令10秒刷新一次。
命令:top -d 10
例2:显示程序及其完整相关信息
命令:top -c
例3:设定监控信息的更新次数。如设定系统任务信息更新5次后结束top命令,在命令行提示符下输入:
命令:top -n 5
4、结束进程
kill[参数][进程号]
常用参数
-l :信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称。
-a :当处理当前进程时,不限制命令名和进程号的对应关系。
-p :指定kill 命令只打印相关进程的进程号,而不发送任何信号。
-s :指定发送信号。
-u :指定用户。
只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略。 下面是常用的信号:
HUP 1 终端断线
INT 2 中断(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 终止
KILL 9 强制终止
CONT 18 继续(与STOP相反, fg/bg命令)
STOP 19 暂停(同 Ctrl + Z)
实例1:查看信号的编号
实例2:杀死指定进程:这个常用
先用ps查找进程,然后用kill杀掉
命令:kill 3268
例:强制终止进程,向进程3268发送9信号,也就是杀死他
命令:kill –9 3268
说明:这种方法应该尽量少用。
注意:kill结束进程有些关键进程是无法杀死的。比如:
- bash的进程。
- init进程是无法被终止,或者说是不允。
参考
1、https://www.cnblogs.com/shijiaqi1066/p/3836017.html
2、https://www.cnblogs.com/flashfish/p/10750917.html