一.进程的定义
程序(program)放置在储存媒体中(如键盘,光盘,软盘,磁带等),为实体文件的形态存在。
进程:程序被触发后,执行者的权限与属性,程序的程序码与所需数据等都会被载入内存中,操作系统并给予这个内存的单元一个识别码(PID),可以说,进程就是一个正在运行中的程序,即是系统未完成并且正在进行的工作。进程主要分为两种,一种是和当前环境有关,一种和当前环境无关。
二.查看进程
(1)利用图形方式查看
命令:gnome-system-monitor
输入命令会则会出现进程的图形界面,结果如下:
(2)进程查看命令
命令含义
ps a | 在shell中运行的所有进程,包含环境自身信息 |
---|---|
ps -A | 系统中所有的进程,包括环境 |
ps -a | 在shell中运行的所有进程,不包括shell自身信息 |
ps -d | 显示系统中所有进程,除了shell信息 |
ps -u | 显示进程的用户,pid,cpu的使用率等 |
ps e | 显示进程的扩展性,系统的详细信息,调用的系统资源 |
ps x | 显示所有有输入设备终端的,tty是能显示出字符设备的 |
ps f | 显示进程的从属关系(不一定父进程结束,子进程也结束)。孤儿进程受系统初始化控制 (父进程被强行关闭) |
ps -A
系统中所有的进程,包括环境
ps -a
在shell中运行的所有进程,不包括shell自身信息
ps a
在shell中运行的所有进程,包含环境自身信息
ps -u
显示进程的用户,pid,cpu的使用率等
ps x
显示所有有输入设备终端的,tty是能显示出字符设备的
ps f
显示进程的从属关系(不一定父进程结束,子进程也结束)
ps e
显示进程的扩展性,系统的详细信息,调用的系统资源
(3)ps常用组合
命令含义
ps aux | 显示当前系统中所有进程并显示进程用户 |
---|---|
ps ef | 显示进程详细信息并显示进程父子关系 |
ps ax | 显示当前系统中的所有进程 |
pstree | 显示当前系统的进程树 |
ps aux
显示系统中所有进程并显示进程用户:
ps ef
显示进程详细信息并显示进程父子关系
ps ax
显示当前系统中的所有进程
pstree
显示当前系统的进程树
(4)显示进程指定信息
命令 | 进程的指定信息 |
---|---|
ps -o comm | 显示进程名称 |
ps -o group | 显示进程的组 |
ps -o user | 显示进程的使用者 |
ps -o %cpu | 显示进程的cpu使用率 |
ps -o %mem | 显示进程的内存使用率 |
ps -o pid | 显示进程id |
ps -o nice | 显示进程的优先级(优先级的范围是-29~19,越负优先级越高) |
ps -o stat | 显示进程运行状态 |
ps -o tty | 显示进程输出字符设备的 |
ps -o comm
显示进程名称
ps -o user
显示进程所有人
ps -o group
显示进程所有组
ps -o %cpu
显示进程cou使用率
ps -o %mem
显示进程内存使用率
==ps -o pid ==
显示进程id
ps -o nice
显示进程优先级
ps -o stat
显示进程运行状态
ps -o tty
显示进程输出占用字符终端
一次性显示所有想看的进程的信息
(5)进程排序
进程需要的资源越多,影响就越大,通过排序可以对进程进行进一步了解。
ps ax --sort=+%cpu/-%cpu 对cpu使用率的进程进行由小到大/由大到小的排序
ps ax --sort=+%mem/-%mem 对内存使用率的进程进行由小到大/由大到小的排序
1.对进程中的cpu进行从小到大排序
只显示cpu使用率,并从小到大排序
对进程中的cpu进行从大到小排序
只显示cpu使用率,并从大到小排序
2.对进程中的内存进行从小到大排序
只显示内存使用率,并从小到大排序
对进程中的内存进行从大到小排序
只显示内存使用率,并从大到小排序
随堂测试:
抓取系统中内存使用量排在前5的pid
注意:因为第一行被名称占用了,所以内存使用量排在前5的是2到6行的。
(6)stat中显示的信息
符号 | 显示的信息 |
---|---|
S | 进程状态 |
l | 内存中有锁定空间 |
N | 优先级低 |
< | 优先级高 |
+ | 前台运行 |
s | 顶级过程 |
注意:
<表示进程的优先级小于默认,l表示有一片锁定的空间,不能被回收,S表示进程状态,Ss进程状态是顶级进程,S<l表示高优先级内存有锁定空间,R+表示正在运行
三.进程优先级
<1>进程的优先级范围:-20~19
<2>优先级查看
ps ax -o pid,nice,comm
<3>指定某个优先级开启进程
格式如下:
nice -n 优先级数字 进程名称
实验如下:
用watch监视:
watch -n 1 ps a -o stat,user,pid,comm,nice
<4>改变进程优先级
格式如下:
renice -n 优先级数字 进程pid
实验如下:
watch监视:
四.环境中进程的前后台调用
命令 | 含义 |
---|---|
jobs | 查看被打入环境后台的进程 |
ctrl+z | 把占用终端的进程打入后台 |
fg jobsnum | 把后台进程调回前台 |
bg jobsnum | 把后台暂停的进程运行 |
comm & | 让命令直接在后台运行 |
实验如下:
watch监视:
ctrl+z将其打入后台,不运行(暂停):
注意:这个firefox和gedit没有在后台运行(没有加&),ctrl+c直接关闭
jobs查看,fg调用到前台运行
jobs查看,bg后台运行
comm & 让命令直接在后台运行
五.“杀死”进程
信号是一个动作的标识
(1)常用信号等级
等级 | 含义 |
---|---|
1 | 进程重新加载配置 |
2 | 删除进程在内存中的数据 |
3 | 删除鼠标在内存中的数据 |
9 | 强行结束单个进程(不能被阻塞) |
15 | 正常关闭进程(可能会被阻塞) |
18 | 运行暂停的进程 |
19 | 暂停某个进程(不能被阻塞) |
20 | 把进程打入后台(可以被阻塞) |
(2)kill的用法:
kill -信号 进程pid 单个杀死
killall -信号 进程名字 批量杀死
pkill -u student -信号 指定杀死的用户
实验如下:
kill -信号 进程 pid
1.删除进程在内存中的数据
另一种方法:
2.删除鼠标在内存中的数据,如果删除了,在shell中鼠标将会消失,相当于看电视时全屏的样子,可以用“ctrl+\”进行模拟,会发现按键后,鼠标将不再出现,直至滑动鼠标。
3.结束进程
正常关闭进程(可能会被阻塞)
强烈结束进程(不会被阻塞)
两者分辨:
4.暂停进程
打开一个图形界面gedit
写入以下东西
killall -信号 进程名字
实验如下:
pkill -u student -信号
实验如下:
六.进程的动态监控
top命令
按键 | 含义 |
---|---|
1 | 显示cpu |
s | 调整刷新时间 |
c | CPU负载排序 |
m | 内存使用量排序 |
h | 查看帮助 |
u | 查看指定用户进程 |
k | 对指定进程发起信号 |
q | 退出 |
七.控制服务
1.什么是服务
cs模型,c表示client,s表示server
定义:系统中运行的对于系统本身没有意义,但是对客户主机有重大意义的程序叫做服务性软件,简称服务
2.用什么控制服务
系统初始化进程可以对服务进行相应的控制
3.当前系统初始化进程是什么
systemd ##系统初始化进程
pstree ##显示系统中的进程树
4.进程控制命令
ssh(client) ----->sshd(server)
命令 | 含义 |
---|---|
systemctl | 服务控制命令 |
systemctl status sshd | 查看服务状态,inactive(不可用),active(可用) |
systemctl start sshd | 开启服务 |
systemctl stop sshd | 关闭服务 |
systemctl restart sshd | 重启服务 |
systemctl reload sshd | 重新加载服务配置 |
systemctl enable sshd | 设定服务开机启动 |
systemctl disable sshd | 设定服务开机不启动 |
systemctl mask sshd | 对服务进行锁定 |
systemctl unmask sshd | 对服务进行解锁 |
systemctl list-units | 列出已经开启服务当前状态 |
systemctl list-unit-files | 列出所有服务开机启动的状态,disable,enable |
systemctl list-dependencies | 列出服务的依赖 |
systemctl set-default multi-user.target | 设定系统启动级别为多用户模式(无图形) |
systemctl set-default graphical.target | 设定系统启动级别为图形模式 |
实验如下: