系统进程
什么是进程
进程就是系统未完成并且正在进行的工作
查看进程
1.图形查看
gnome-system-monitor
2.进程查看命令
ps -A | #所有进程 |
---|---|
ps -a | #在当前环境中运行的进程,不包含环境信息 |
ps -u | #显示进程用户信息 |
ps a | #在当前用户环境中运行的进程 |
ps x | #列出系统中所有运行包含tty输出设备 |
ps f | #显示进程的父子关系 |
ps e | #显示进程的详细信息(系统资源的调用) |
- ps -A #所有进程
- ps -a #在当前环境中运行的进程,不包含环境信息
- ps -u #显示进程用户信息
- ps a #在当前用户环境中运行的进程
- ps x #列出系统中所有运行包含tty输出设备
- ps f #显示进程的父子关系
- ps e #显示进程的详细信息(系统资源的调用)
##ps常用组合
ps aux | #显示系统中所有进程并显示进程用户 |
---|---|
ps ef | #显示进程详细信息并显示进程父子关系 |
ps ax | #显示当前系统中的所有进程 |
pstree | #显示当前系统的进程树 |
- ps aux #显示系统中所有进程并显示进程用户
- ps ef #显示进程详细信息并显示进程父子关系
- ps ax #显示当前系统中的所有进程
- pstree #显示当前系统的进程树
##显示进程指定信息
ps -o xxx | #显示进程的指定信息 |
---|---|
ps -o comm | #进程名称 |
ps -o user | #进程所有人 |
ps -o group | #进程所有组 |
ps -o %cpu | #进程cpu使用率 |
ps -o %mem | #进程内存使用率 |
ps -o pid | #进程id |
ps -o nice | #进程优先级 |
- ps -o xxx #显示进程的指定信息
- ps -o comm #进程名称
- ps -o user #进程所有人
- ps -o group #进程所有组
- ps -o %cpu #进程cpu使用率
- ps -o %mem #进程内存使用率
- ps -o pid #进程id
- ps -o nice #进程优先级,进程的优先级范围-20~19 ,优先级数字越小,进程优先级越高
##进程排序
- ps --sort=+%cpu|-%cpu #+加号可加可不加默认从低到高排列
- ps --sort=+%men|-%men
##测试
抓取系统中内存使用量排在前五的进程的pid
首先我们可以通过指令
ps ax --sort=-%mem -o pid
查看系统中所有进程pid并按内存使用量由高到低排列
然后通过指令
head -n 6 | tail -n 5 或sed -n 2,6p
抓取前五行
或
##stat中显示的信息
可通过ps -o stat 查看
#此处为了便于stat中所有显示的信息的展示进程firefox与gedit的优先级已经被手动修改
S | 进程状态 |
---|---|
I | 内存中有锁存空间 |
N | 优先级低 |
< | 优先级高 |
+ | 前台运行 |
s | 顶级进程 |
3.进程优先级
(1)进程的优先级范围
-20~19 优先级数字越小进程优先级越高
(2)优先级查看
ps -o nice #常和comm,pid一同使用
(3)指定某个优先级开启进程
nice -n 优先级数字 进程名称
nice -n -5 vim & #指定vim进程启动时优先级为-5
注意:"&"表示进程开启后打入后台,如果不加“&“符号 命令行就会被占用
(4)改变进程优先级
renice -n 优先级数字 +进程pid #指定已经启动进程优先级
renice -n 10 3529 #更改进程3529的优先级为10
4.环境中进程的前后台调用
-
jobs #查看被打入环境后台的进程
注意:
“+“ 默认级
“ -“ 次默认级
无符号的没有优先级 -
ctrl+z ##将占用终端的进程暂停并打入后台
此时我们再打开gedit窗口
发现gedit已经被暂停,无法对其进行操作 -
fg ##把后台进程调回前台,直接执行会默认执行带“+“的程序
当想指定后台某进程时可以用
fg jobnumber 将指定进程调出
fg 1 #将后台进程序号为1的进程调回前台
注意:jobnumber时通过jobs命令查到的后台的进程的序号(不是pid) -
bg ##把后台暂停的进程运行,直接执行会默认执行带“+“的程序
bg jobnumber #将指定进程运行
bg 3 #将后台进程序号为3的进程运行
command & ##让命令直接在后台运行
5.进程信号
(1)常用信号等级 (信号等级共有30个,以下只列出常用的,可通过man 7 signal 查看信号详细信息)
1 | 进程重新加载配置 |
---|---|
2 | 删除进程在内存中的数据,对shell相当于ctrl+c 对系统中有锁存空间的(gedit)相当于关闭该进程 |
3 | 删除鼠标在内存中的数据 快捷键:ctrl+\ 应用:看视频时全屏鼠标消失 |
9 | 强行结束单个进程(不能被阻塞) |
15 | 正常关闭进程 (可能会被阻塞) |
18 | 运行暂停的进程 |
19 | 暂停某个进程 (不能被阻塞) |
20 | 把进程暂停并打入后台(可以被阻塞) |
- kill -信号 进程pid
- killall -信号 进程名字
- pkill -u student(username) -信号 #对某用户所有进程
6.进程的动态监控
top
1 | 显示cpu 每个核的负载 |
---|---|
s | 调整刷新频率 |
c | CPU负载排序 |
m | 内存使用量排序 |
h | 查看帮助 |
u | 查看指定用户进程 |
k | 对指定进程发起信号 |
q | 退出 |
- 1:显示cpu 每个核的负载
- s:调整刷新频率为1s
- c:CPU负载排序
- m:内存使用量排序
- u:查看kiosk用户进程
- k:对进程15361执行信号9
7.控制服务
(1)什么是服务
定义:系统中运行的对于系统本身没有意义,但是对客户主机有重大意义的程序叫做服务性软件简称服务,服务是一类进程。
(2)用什么控制服务
系统初始化进程可以对服务进行相应的控制
(3)当前系统初始化进程是什么
systemd ##系统初始化进程
pstree ##显示系统中的进程树
(4)进程控制命令
ssh------->sshd
client server
systemctl | #服务控制 |
---|---|
systemctl status sshd | #查看服务 |
systemctl start sshd | #开启服务 |
systemctl stop sshd | #关闭服务 |
systemctl restart sshd | #重启服务 |
systemctl reload sshd | #重现加载服务配置 |
systemctl enable sshd | #设定服务开机启动 |
systemctl disable sshd | #设定服务开机不启动 |
systemctl list-units | #列出已经开启服务当前状态 |
systemctl list-unit-files | #列出所有服务开机启动的状态disable(开机不启动的),enable(开机启动),static(静态的),maskd(冻结的) |
systemctl mask sshd | #冻结sshd服务 |
systemctl unmask sshd | #解锁sshd服务 |
systemctl list-dependencies | #列出服务器的倚赖(倚赖:需要另一个服务是开启的) |
systemctl set-default multi-user.target | #设定系统启动级别为多用户模式(无图形) |
systemctl set-default graphical.target | #设定系统启动级别为图形模式 |
- systemctl status sshd #查看服务
- systemctl stop sshd #关闭服务
- systemctl start sshd #开启服务
- systemctl disable sshd #设定服务开机不启动
- systemctl enable sshd #设定服务开机启动
- systemctl list-units #列出已经开启服务当前状态
- systemctl list-unit-files #所有服务开机启动的状态 disable(开机不自启),enable(开机自启),static(静态的),maskd(冻结的)
- systemctl mask sshd #冻结sshd服务
- systemctl unmask sshd #解锁sshd服务
- systemctl list-dependencies #列出服务器的倚赖