Linux系统中的进程管理
文章目录
一、系统进程管理
1、进程的含义
2、查看系统的进程
2.1 图形模式
2.2 命令模式
2.3 常用ps组合
2.4显示进程指定信息
2.5 进程排序
2.6 stat显示的信息含义
3、进程的优先级
3.1改变进程的优先级
4、进程的前后台调用
4.1 前后台调用的常用命令
5、kill控制进程
5.1 常用信号等级
5.2 kill的用法
6、进程的动态监控
6.1 动态监控命令
6.2 top监控
7、控制服务
7.1 进程控制命令
一、系统进程管理
1、进程的含义
- 程序正在运行的状态为进程 ,也就是cpu未完成的工作,程序并不是进程
前台运行 | 占CPU、内存资源,运行可见
后台运行 | 不争抢CPU、内存资源,系统资源闲置时运行,运行不可见,只显示运行结果
后台暂停 | 运行无条件,暂时停止后台进程
2、查看系统的进程
2.1 图形模式
gnome - system - monitor | 图形界面查看进程
2.2 命令模式
命令 | 含义 |
---|---|
ps | 自己所在的shell里面运行的进程 |
ps a | 在shell环境中中运行的所有进程,包括shell的环境bash信息 |
ps -a | 在shell环境当中运行的所有进程,不包括shell环境本身信息bash |
ps -A | 系统当中所有的进程 |
ps -d | 与A类似 ,没有允许环境(shell) |
ps -u | 显示进程用户信息 |
ps x | 列出系统中所有运行包含在设备终端tty输出的进程 |
ps -f | 显示父级进程以及子进程 |
ps -e | 显示进程的扩展信息(系统资源),与-A 类似 |
(1)ps 、 ps a 、 ps -a
(2)ps -A
(3) ps -d
(4) ps X
(5) ps -u
2.3 常用ps组合
命令 | 含义 |
---|---|
ps aux | 显示系统当中的所有进程并显示进程用户 |
ps ef | 显示进程的详细信息以及进程的父子关系 |
ps ax | 显示当前系统当中的所有进程 |
pstree | 显示当前系统的进程树 |
- 注意:父级进程结束以后子进程不一定会结束,若父级进程被强行关闭 ,余下的子进程叫孤儿进程 ,受系统初始化程序控制。一般由系统的初始化程序来控制其他进程的开始和结束,可以用pstree查看系统的进程树(pstree)systemd为初始化程序,是所有程序的父级程序,不会自己关闭结束自己,只有关机才可以,或者结束了所有子进程以后,该初始化进程才会被关闭。
2.4显示进程指定信息
ps -o xxx | 显示进程的指定信息
xxx | 含义 |
---|---|
comm | 进程名称 |
user | 进程所有人 |
group | 进程所有组 |
%cpu | 进程cpu使用率 |
%men | 进程内存使用率 |
pid | 进程的id |
nice | 进程优先级 |
(1)
(2)tty为所处环境,stat为所处状态
2.5 进程排序
ps ax --sort=要显示的东西
命令 | 含义 |
---|---|
ps ax --sort=%men -o %men | 显示mem升序 |
ps ax --sort=-%men -o %men | 显示mem降序 |
ps ax --sort=%cpu -o %cpu | 显示cpu使用率升序 |
ps ax --sort=-%cpu -o %cpu | 显示cpu使用率降序 |
(1)ps --sort=%cpu、ps -A --sort=%cpu
(2)ps -A --sort=%mem -o %mem
(3)面试题:memory +5 pid 显示内存当中pid的前五个
命令: ps -A --sort=-%mem -o pid |head -n 6 | tail -n 5
2.6 stat显示的信息含义
ps -o comm,stat
字符 | 含义 |
---|---|
S | 进程状态 |
s | 没有父进程,*进程 |
l | 在内存当中有锁定空间(进程结束之前不会被系统回收) |
+ | 正在前台运行的进程 |
N | 表示优先级低 |
< | 表示优先级高 |
3、进程的优先级
ps ax -o pid,nice,comm | 优先级的查看 (进程的优先级范围: -20~19)
3.1 改变进程的优先级
1. 图形调整进程的优先级,直接在进程的图形界面里面调整数字
2. 命令设定进程优先级,直接在shell里面输入命令即可
nice -n 优先级数字 进程名称 | 指定优先级且开启进程
renice -n 优先级数字 进程名称 | 更改已打开进程优先级
- 例子:
nice -n -5 firefox 开启一个优先级为-5的进程firefox
renice -n 0 firefox的pid 改变一个已经开启的进程firefox 的优先级成0
(1)nice -n -5 vim 开启vim并且指定该程序的优先级为-5
(2) renice -n -5 2115 改变2115进程的优先级为10
- 进程优先级
进程优先级范围:
-20-19
4、进程的前后台调用
4.1 前后台调用的常用命令
命令 | 含义 |
---|---|
jobs | 查看被打入环境后台的进程 |
ctrl+z | 把占用终端的进程打入后台 |
fg+jobsnum | 把后台的进程调回前台 |
bg+jobsnum | 把后台暂停的进程运行起来 |
comm+& | 让命令直接运行在后台 |
(1)先用在desktop主机中输入gedit , 此进程会占用终端,使终端不能使用
(2)直接在shell脚本输入 ctrl+z 打入后台
(3)输入jobs查看被打入后台的进程
(4) fg 数字 将被打入后台的进程调回前台(终端)
(5)bg 数字 将被打入后台的暂停的进程运行起来
(6)使用 comm(名字) &, 让命令直接在后台运行
- 注意:+表示正在运行 , -表示为次优先; 如果没有+(把一个进程调回前台) , -就会被自动变为+(优先级提高)
5、kill控制进程
5.1 常用信号等级
等级 | 含义 |
---|---|
1 | 进程重新加载配置 |
2 | 删除进程在内存中的数据 |
3 | 删除鼠标在内存中的数据 |
9 | 强行结束单个进程(不能被阻塞) |
15 | 正常关闭进程(可能会被阻塞) |
18 | 运行暂停的进程 |
19 | 暂停某个进程(不能被i阻塞) |
20 | 把进程打入后台(可以被阻塞) |
man 7 signal | 查看信号详细信息 |
5.2 kill的用法
kill -信号 进程pid | 执行单个
killall -信号 进程名字 | 批量执行
pkill -信号 -u 用户 | 执行指定用户
(1)kill -9 2276 执行单个删除进程命令
(2) killall -信号 进程名字 批量执行
(3)pkill -9 -u student 执行指定用户
6、进程的动态监控
6.1 动态监控命令
参数 | 含义 |
---|---|
1(小写l) | 显示cpu每个核的负载 |
s | 调整刷新频率 |
c | cpu负载排序 |
m | 内存使用量排序 |
h | 查看帮助 |
u | 查看指定用户进程 |
k | 对指定信号发起进程 |
q | 退出 |
6.2 top监控
(1)按下 “1”
(2)按下“s”
(3)按下“c”
(4)按下“m”
(5)按下“h”
(6)按下“u”
(7)按下**“k**”
7、控制服务
-
服务也是进程,是多个进程的集合,对自己没有意义,但对客户有意义;
-
说明:要区分客户端和服务端,客户端:要分享别人,连接方,服务端:远程的主机,可以共享资源 (前提是安全共享),被连接方。
-
用什么控制服务?
系统初始化进程可以对服务器进行相应的控制 -
当前系统初始化进程是什么?
(1)systemd 系统初始化进程
(2)pstree 显示系统中的进程树虚拟机中:
rm -rf ~/.ssh/
nm-connection-editor ## 设置ip
ssh [email protected] -X
cheese 打开某设备
服务的控制
systemctl status
start
stop
7.1 进程控制命令
命令 | 含义 |
---|---|
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 | 列出所有服务器开机启动的状态 |
systemctl set-default multi-user.target | 设定系统启动级别为无图形模式 |
systemctl set-default graphical.target | 设定系统启动级别为图形模式 |
- 所有的服务状态如下: static disable enable masked(一共四种)
(1)systemctl status sshd 查看服务状态
2) systemctl stop sshd 关闭服务 systemctl start sshd 开启服务
(3) systemctl list-units 列出所有已经开启的服务器状态
(4) systemctl list-unit-files 列出所有服务器开机启动的状态
(5) systemctl list-dependencies 列出所有服务的依赖