1.什么是进程
- 程序:通常为二进制程序,放置在存储媒介中(如硬盘、光盘、软盘、磁带等),以物理文件的形式存在
- 进程:程序被触发后,执行者的权限与属性、程序的代码与所需数据等都会被加载到内存中,操作系统给予这个内存中的单元一个标示符,可以说进程就是一个正在运行中的程序
- 简单来说,进程就是系统未完成并且正在运行的工作,即资源分配的最小单元
- 线程之间的资源可以进行互相调配,进程不行
2.进程的状态
- R(Running):该程序正在运行中
- S(Sleep):该程序目前正在睡眠状态(idle),但可以被唤醒
- D:不可被唤醒的睡眠状态,通常进程可能在等待I/O的情况
- T:停止状态(stop),可能在工作控制(背景暂停)或除错(traced)状态
- Z(Zombie):僵尸状态,程序已经终止但却无法被移除至内存外
3.查看进程
1.图形方式查看
gnome-system-monitor #调用进程信息
end process :结束进程
kill process :强制结束进程
%cpu :数字越大,优先级越低
2.进程查看命令
ps -a | 当前环境的所有进程,不包括环境的信息 |
---|---|
ps -A | 系统所有的进程 |
ps -u | 显示进程用户信息 |
ps a | 显示当前环境中运行的进程,包含环境信息 |
ps x | 列出系统中所有运行包含tty输出设备,即所有包含终端的进程 |
ps e | 显示进程的环境信息(系统资源的调用) |
ps f | 显示进程存储关系,即父子关系 |
[kiosk@foundation79 ~]$ ps a
PID TTY STAT TIME COMMAND
1638 tty1 Ssl+ 12:13 /usr/bin/Xorg :0 -background none -noreset -audit 4 -verbose -au
2460 pts/0 Ss 0:00 bash
2602 pts/0 Sl 1:24 virt-viewer desktop
2612 pts/0 S 0:00 dbus-launch --autolaunch=38e91cfd96134677bd95ffea05859349 --bina
12165 pts/0 R+ 0:00 ps a
[kiosk@foundation79 ~]$ ps e
PID TTY STAT TIME COMMAND
2460 pts/0 Ss 0:00 bash SESSION_MANAGER=local/unix:@/tmp/.ICE-unix/1773,unix/unix:/
12169 pts/0 R+ 0:00 ps e XDG_VTNR=1 SSH_AGENT_PID=1943 XDG_SESSION_ID=1 HOSTNAME=fou
[kiosk@foundation79 ~]$ ps f
PID TTY STAT TIME COMMAND
2460 pts/0 Ss 0:00 bash
12174 pts/0 R+ 0:00 \_ ps f
[kiosk@foundation79 ~]$ ps -u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
kiosk 2460 0.0 0.0 116420 3092 pts/0 Ss Oct10 0:00 bash
kiosk 12207 0.0 0.0 151056 1832 pts/0 R+ 06:20 0:00 ps -u
- ps常用组合
ps aux | 显示系统中所有进程并显示进程用户 |
---|---|
ps ef | 显示进程详细信息并显示进程父子关系 |
ps ax | 显示当前系统中的所有进程 |
pstree | 显示当前系统的进程树,其中systemd是初始化进程 |
[kiosk@foundation79 ~]$ ps ef
PID TTY STAT TIME COMMAND
2460 pts/0 Ss 0:00 bash SESSION_MANAGER=local/unix:@/tmp/.ICE-unix/1773,unix/unix:/
12228 pts/0 R+ 0:00 \_ ps ef XDG_VTNR=1 SSH_AGENT_PID=1943 XDG_SESSION_ID=1 HOSTNAM
- 显示进程指定信息
ps -o xxx | 显示进程的指定信息 |
---|---|
ps -o comm | 进程名称 |
ps -o user | 进程所有人 |
ps -o group | 进程所有组 |
ps -o %cpu | 进程cpu使用率 |
ps -o %mem | 进程内存使用率 |
ps -o pid | 进程pid |
ps -o nice | 进程优先级 |
[kiosk@foundation79 ~]$ ps
PID TTY TIME CMD
12300 pts/0 00:00:00 bash
12346 pts/0 00:00:00 ps
[kiosk@foundation79 ~]$ ps -o comm
COMMAND
bash
ps
[kiosk@foundation79 ~]$ ps -o comm,pid
COMMAND PID
bash 12300
ps 12360
[kiosk@foundation79 ~]$ ps -o comm,pid,%cpu
COMMAND PID %CPU
bash 12300 0.0
ps 12365 0.0
[kiosk@foundation79 ~]$ ps -o comm,pid,%cpu,%mem
COMMAND PID %CPU %MEM
bash 12300 0.0 0.0
ps 12369 0.0 0.0
[kiosk@foundation79 ~]$ ps -o comm,pid,%cpu,%mem,user
COMMAND PID %CPU %MEM USER
bash 12300 0.0 0.0 kiosk
ps 12383 0.0 0.0 kiosk
[kiosk@foundation79 ~]$ ps -o comm,pid,%cpu,%mem,user,group
COMMAND PID %CPU %MEM USER GROUP
bash 12300 0.0 0.0 kiosk kiosk
ps 12392 0.0 0.0 kiosk kiosk
[kiosk@foundation79 ~]$ ps -o comm,pid,%cpu,%mem,user,group,nice
COMMAND PID %CPU %MEM USER GROUP NI
bash 12300 0.0 0.0 kiosk kiosk 0
ps 12396 0.0 0.0 kiosk kiosk 0
- 进程排序
ps ax --sort= +%cpu / -%cpu # - %cpu为降序排列
ps ax --sort= +%mem / -%mem
[kiosk@foundation79 ~]$ ps --sort=-%cpu
PID TTY TIME CMD
12300 pts/0 00:00:00 bash
12453 pts/0 00:00:00 ps
[kiosk@foundation79 ~]$ ps --sort=-%cpu -o %cpu,comm
%CPU COMMAND
0.0 bash
0.0 ps
- stat中显示的信息
S | 进程状态 |
---|---|
l | 内存中有锁定空间 |
N | 优先级低 |
< | 优先级高 |
+ | 前台运行 |
s | 顶级进程 |
3.进程优先级
1.进程的优先级范围:-20~19
2.优先级查看:ps ax -o pid , nice , comm
3.调整进程的优先级
- 图形调整进程的优先级,直接在进程的图形界面里面调整数字即可。大数字:表示优先级低,小数字(可以是负数):表示优先级高
- 命令设定进程优先级:renice -n 优先级数字 进程pid,先开启进程后再改变
4.指定某个优先级开启进程
- nice -n 优先级数字 进程名称
- nice -n -5 vim &#开启vim并指定程序优先级为-5
5.改变进程优先级
- renice -n 优先级数字 进程pid
- renice -n -5 1806 #改变1806进程的优先级为-5
4.环境中进程的前后台调用
jobs | 查看被打入环境后台的程序 |
---|---|
按ctrl+z | 把占用终端的进程打入后台 |
fg jobsnum | 把后台进程调回前台 |
bg jobsnum | 把后台暂停的进程运行 |
comm & | 让命令直接在后台运行 |
注意:
- 输入jobs会出现jobsnum
- +是输fg/bg时会默认执行的
5.进程信号
常用信号等级:
1 | 进程重新加载配置 |
---|---|
2 | 删除进程在内存中的数据 |
3 | 删除鼠标在内存中的数据 |
9 | 强行结束单个进程(不能被阻塞) |
15 | 正常关闭进程(可能会被阻塞) |
18 | 运行暂停的进程 |
19 | 暂停某个进程(不能被阻塞) |
20 | 把进程打入后台,相当于ctrl+c |
man 7 signal | 查看信号详细信息 |
另:
kill -信号 进程pid | 结束这个信号,精准处理 |
---|---|
killall -信号 进程名字 | 可批量结束 |
pkill -u studnt -信号 | 结束所有普通用户student,对用户进程进行处理 |
6.进程的动态监控top
l | 显示cpu每个核的负载 |
---|---|
s | 调整刷新频率 |
c | cpu负载排序 |
m | 内存使用量排序 |
h | 查看帮助 |
u | 查看指定用户进程 |
k | 对指定用户发起信号 |
q | 退出 |