学习目标:
- 什么是进程
- 进程状态
- 进程查看
- jobs 控制
- 进程信号
- 进程的动态监控top
##系统进程及服务的控制##
1.什么是进程
•程序 (program) 放置在储存媒体中 ( 如硬盘、光盘、软盘、磁带等 ),为实体文件的型态存在进程 : 程序被触发后 , 执行者的权限与属性、程序的程序码与所
需数据等都会被载入内存中 , 操作系统并给予这个内存内的单元一个识别码 (PID), 可以说 , 进程就是一个正在运行中的程序。
2.进程状态
进程状态
R (Running): 该程序正在运行中 ;
S (Sleep): 该程序目前正在睡眠状态 (idle), 但可以被唤醒
(signal) 。
D 不可被唤醒的睡眠状态 , 通常进程可能在等待 I/O 的情况。
T 停止状态 (stop), 可能是在工作控制 ( 背景暂停 ) 或除错
(traced) 状态 ;
Z (Zombie): 僵尸状态 , 程序已经终止但却无法被移除至内存外
3.查看进程
##1.图形方式查看
gnome-system-monitor
##2.进程查看命令
ps -A ##所有进程
ps -a ##当前环境中运行的进程,不包含环境信息
-u ##显示进程用户信息
a ##在当前环境中运行的进程
x ##列出系统中所有运行包含tty输出设备
f ##显示进程的父子关系
e ##显示进程详细信息(系统的资源调用)
##常用组合
ps aux ##显示系统中所有进程并显示进程用户
ps ef ##显示进程详细信息并显示进程父子关系
ps ax ##显示当前系统中的所有进程
##显示进程指定信息
ps -o xxx ##显示进程的指定信息
comm ##进程信息
user ##进程所有人
group ##进程所有组
%cpu ##进程cpu使用率
%mem ##进程内存使用率
pid ##进程id
nice ##进程优先级
##进程排序
ps ax --sort= +%cpu|-%cpu #+加序 -减序
+%mem|-%mem
4.进程优先级
nice:-20~19 优先级越小越高
STAT:
S ##进程状态s+
s ##顶级进程 bash相当于shell
l ##内存中有锁定空间
N ##优先级低
< ##优先级高 ##前台运行
#1.优先级范围 -20~19
#2.优先级查看 复制(同时编辑两个文件复制5行 y5y)
ps ax -o pid,nice,comm,stat
#3.改变进程优先级
renice -n 优先级数字 进程id
renice -n -5 6574 ##改变进程6574优先级为-5
#4.指定某个优先级开启进程
nice -n 优先级数字 进程名称
nice -n -5 vim& ##开启vim 并且指定程序优先级为-5
5.环境中进程的前后台调用
工作管理
工作管理是用在 bash 环境下的 , 当我们登陆系统取得 bash
shell 之后 , 在单一终端机接口下同时进行多个工作的行为管理。
举例来说 , 我们在登陆 bash 后 , 想要一边进行数据搜寻、一边
打开浏览器 , 还可以一边进行 vim 程序撰写 ! 这个就牵扯到工作
的前后台管理
jobs ##查看被打入环境后台的进程
ctrl+z ##把占用终端的进程打入后台
fg jobsnum ##把后台进程调回前台
bg jobsnum ##把后台暂停的进程运行
comm & ##让命令直接在后台运行
<gedit后台>
gedit&在后台运行可以编辑
gedit ctrl+z 打入后台不能编辑
<vim后台>
vim 必须在前台运行,可见图bg 3后,vim是stopped 。
6.进程信号
###1.常用信号等级
-1 ##进程重新加载配置
-2 ##删除进程在内存中的数据
-3 ##删除鼠标在内存中的数据
-9 ##强制结束单个进程(不可被阻塞)
-15 ##正常关闭进程(可能会被阻塞)
-18 ##运行暂停的进程
-19 ##暂停某个进程(不能被阻塞)
-20 ##把进程打入后台
<-2信号>
<-15,-9信号>
-15 进程被阻塞 -9 强制关闭未阻塞
<-19,-18信号>
对另一个bash执行-19后,发现bash无法输入。再进行-18命令,刚才在bash里输入的字符弹出。
<-20,-18信号>
对一个geidt 执行-20信号后,无法写入。再进行-18命令,即可写入。
<-1信号>
man 7 signal ##查看信号详细信息
kill -信号 进程id
killall -信号 进程名
pkill -u student -信号 ##批量处理student用户的信号
< killall >
< pkill >
打开两个student的bash,然后执行 pkill -u student -9,两个bash强制退出了student用户。
有两个信号可以停止进程:SIGTERM和SIGKILL
SIGTERM比较友好,进程能捕捉这个信号。
根据您的需要关闭程序。
在关闭程序之前您可以结束打开的记录文件和完成正在做的任务。
在某些情况下,假如进程正在进行作业而且不能中断,那么进程可以忽略这个SIGTER信号。
对于SIGKILL信号,进程是不能忽略的。
这是一个“我不管您在做什么,立刻停止”的信号
加入您发送SIGKILL信号给进程,linux就将进程停止在那里
7.进程的动态监控
top
1 ##显示cpu每个核的负载
s ##调整刷新频率
c ##cpu负载排序
m ##内存使用量排序
h ##查看帮助
u ##查看指定用户进程
k ##对指定进程发起信号
q ##退出