专业介绍Linux中的进程管理

Linux中的进程管理

1.什么是进程?

1)进程就是系统中处于执行期的工作

对于【执行】两个字需要作出特别解释:执行并不同于运行,因为系统中的进程的状态大概分为四种:

进程状态
R(Running)该程序正在运行中
S(Sleep)该程序目前正在睡眠状态(idle),但可以被唤醒(signal)。
D不可唤醒的睡眠状态,通常进程可能在等待I/O的情况
T停止状态(stop),可能是在工作控制(背景暂停)或除错(traced)状态。
Z(Zombie)僵尸状态,程序已经终止但却无法被一出至内存外

2)进程并不仅仅局限与一段可执行程序代码,也就是代码段;通称进程还包括其他的资源,如:打开的文件、挂起的信号、内核内部数据、处理器状态、一个或多个具有内存映射的内存地址空间和一个或多个执行线程及用来存放全局变量的数据段等

2.进程的查看

1)图像方式查看

gnome-system-monitor

输入命令后便会出现下面的窗口(类似于Windows的任务管理器):
在这里插入图片描述

2)命令方式查看

ps
相关参数命令作用
-A查看所有进程
-a在当前环境中运行的进程,不包含环境信息
-u显示进程用户信息
a在当前环境中运行的进程
x列出系统中所有运行包含tty输出设备
f显示进程的父子关系
e显示进程的详细信息(系统资源的调用)

操作演示:

ps  -A

在这里插入图片描述

【ps命令常用组合】

ps命令常用组合
ps aux显示系统中所有进程并显示进程用户
ps ef显示进程详细信息并显示进程父子关系
ps ax显示系统中的所有进程
pstree显示当前系统的进程树

示例:
在这里插入图片描述

【显示进程的指定信息】

ps -o xxx   ##显示进程的指定信息
命令功能
comm进程名称
user进程所有人
group进程所有组
%cpu进程cpu使用率
%mem进程内存使用率
pid进程id

【进程排序】

ps ax --sort=+%cpu|-%cpu				##按cpu使用率正序/逆序排
ps ax --sort=+%mem|-%mem				##按内存使用率正序/逆序排

在这里插入图片描述

【STAT中显示的信息 】

在这里插入图片描述

当我们在查看进程时,其中有一列信息为【STAT】,如上图中黑色框列。接下来我们一起看看在这一列的字符分别表示什么意思:

字符含义
S进程状态
l内存中有锁定空间
N优先级低
<优先级高
+前台运行
s顶级进程

3.进程优先级

1.进程优先级范围

进程的优先级一般在系统中有数字符表示,范围【-20~19】
数字越大,优先级越低

2.优先级查看

ps  ax -o  pid,nice,comm

优先级即为下图中【NI】这一列

在这里插入图片描述

3.指定某个优先级开启进程

nice  -n  优先级数字  进程名称
nice  -n  -5 vim &					##开启vim并且指定程序优先级为-5

示例:nice -n -5 vim &
在这里插入图片描述

==注意:==上述修改vim优先级的命令中的【&】字符的作用时为了将vim命令打入后台,假如不加这个字符,vim命令会占用当前设备。
在这里插入图片描述

4.改变进程优先级

renice -n 优先级数字  进程pid
renice -n -2  1806  【改变1806进程的优先级为-5】

实验:
1)首先我们找到上一个实验指定vim优先级为-5的进程,查看它的PID
在这里插入图片描述
2)用上述命令修改优先级为4:

renice -n -4  2178

再次查看:
在这里插入图片描述

5.环境中进程的前后台调用

命令功能
jobs查看被打入环境后台的进程
ctrl+z把占用终端的进程打入后台
fg jobsnum把后台进程调回前台
bg jobsnum把后台暂停的进程运行
comm &让命令直接在后台运行

实验:
1)用jobs命令查看后台进程
在这里插入图片描述
可见当前后台中并没有进程

2)我们用命令watch -n 1 date,可见这条命令运行时占用了终端
在这里插入图片描述

3)直接按【ctrl+z】,再查看后台进程
在这里插入图片描述
可见,【ctrl+z】将watch进程打入了后台

上图中可以看到 [1]+ Stopped watch -n 1 date这一行,[1]是指jodsnum为1,+是优先级标志,当将后台中的进程调往前台时,若不输入jobsnum,则默认先执行有+的进程

4)用命令【fg jobsnum】将watch命令调回前台

fg  1

在这里插入图片描述

6.进程信号

1)常用信号等级

等级功能
1进程重新加载配置
2删除进程在内存中的数据
3删除鼠标在内存中的数据
9强行结束单个进程(不能被阻塞)
15正常关闭进程 (可能会被阻塞)
18运行暂停的进程
19暂停某个进程 (不能被阻塞)
20把进程打入后台 (可以被阻塞)
man 7 signal查看信号详细信息

执行方式(三种方式等效)

kill	-信号	进程pid					##利用PID执行命令
killall -信号	进程名字					##利用进程名执行命令
pkill	-u	student		-信号			##利用进程所属用户执行命令

示例:
1)用命令【vim &】将vim打入后台,使用命令【ps ax -o comm,user,pid | grep vim 】找到后台中的vim进程
在这里插入图片描述

2)强行结束vim进程

kill  -9  4065

在这里插入图片描述

执行后再次查找后台中的vim进程,我们发现vim进程不存在

另外还有下列常见信号:

SIGHUP     	终止进程     		终端线路挂断
SIGINT     	终止进程     		中断进程
SIGQUIT   	建立CORE文件终止进程,并且生成core文件
SIGILL   	建立CORE文件       	非法指令
SIGTRAP   	建立CORE文件       	跟踪自陷
SIGBUS   	建立CORE文件       	总线错误
SIGSEGV   	建立CORE文件       	段非法错误
SIGFPE   	建立CORE文件       	浮点异常
SIGIOT   	建立CORE文件       	执行I/O自陷
SIGKILL   	终止进程     		杀死进程
SIGPIPE   	终止进程     		向一个没有读进程的管道写数据
SIGALARM   	终止进程     		计时器到时
SIGTERM   	终止进程     		软件终止信号
SIGSTOP   	停止进程     		非终端来的停止信号
SIGTSTP   	停止进程     		终端来的停止信号
SIGCONT   	忽略信号     		继续执行一个停止的进程
SIGURG   	忽略信号     		I/O紧急信号
SIGIO     	忽略信号     		描述符上可以进行I/O
SIGCHLD   	忽略信号     		当子进程停止或退出时通知父进程
SIGTTOU   	停止进程     		后台进程写终端
SIGTTIN   	停止进程     		后台进程读终端
SIGXGPU   	终止进程     		CPU时限超时
SIGXFSZ   	终止进程     		文件长度过长
SIGWINCH   	忽略信号     		窗口大小发生变化
SIGPROF   	终止进程     		统计分布图用计时器到时
SIGUSR1   	终止进程     		用户定义信号1
SIGUSR2   	终止进程     		用户定义信号2
SIGVTALRM 	终止进程     		虚拟计时器到时

上述信号简介

信号介绍
SIGHUP本信号在用户终端连接(正常或非正常)结束时发出通常是在终端的控制进程结束时通知同一session内的各个作业,这时它们与控制终端不再关联.
SIGINT程序终止(interrupt)信号在用户键入INTR字符(通常是Ctrl-C)时发出
SIGQUIT和SIGINT类似,但由QUIT字符(通常是Ctrl-)来控制进程在因收到SIGQUIT退出时会产生core文件,在这个意义上类似于一个程序错误信号
SIGILL执行了非法指令,通常是因为可执行文件本身出现错误或者试图执行数据段堆栈溢出时也有可能产生这个信号
SIGTRAP由断点指令或其它trap指令产生,由debugger使用
SIGIOT在PDP-11上由iot指令产生在其它机器上和SIGABRT一样
SIGBUS非法地址,包括内存地址对齐(alignment)出错(eg: 访问一个四个字长的整数但其地址不是4的倍数)
SIGFPE在发生致命的算术运算错误时发出。不仅包括浮点运算错误, 还包括溢出及除数为0等其它所有的算术的错误
SIGKILL用来立即结束程序的运行. 本信号不能被阻塞, 处理和忽略
SIGUSR1留给用户使用
SIGUSR2留给用户使用
SIGSEGV试图访问未分配给自己的内存, 或试图往没有写权限的内存地址写数据
SIGPIPEBroken pipe
SIGALRM时钟定时信号, 计算的是实际的时间或时钟时间。 alarm函数使用该信号
SIGTERM程序结束(terminate)信号。与SIGKILL不同的是该信号可以被阻塞和处理,通常用来要求程序自己正常退出;shell命令kill缺省产生这个信号
SIGCHLD子进程结束时, 父进程会收到这个信号
SIGCONT让一个停止(stopped)的进程继续执行. 本信号不能被阻塞。可以用一个handler来让程序在由stopped状态变为继续执行时完成特定的工作。例如, 重新显示提示符
SIGSTOP停止(stopped)进程的执行;注意它和terminate以及interrupt的区别::该进程还未结束, 只是暂停执行. 本信号不能被阻塞, 处理或忽略
SIGTSTP停止进程的运行;但该信号可以被处理和忽略。用户键入SUSP字符时(通常是Ctrl-Z)发出这个信号
SIGTTIN当后台作业要从用户终端读数据时,该作业中的所有进程会收到SIGTTIN信号,缺省时这些进程会停止执行
SIGTTOU类似于SIGTTIN, 但在写终端(或修改终端模式)时收到
SIGURG有"紧急"数据或out-of-band数据到达socket时产生
SIGXCPU超过CPU时间资源限制,这个限制可以由getrlimit/setrlimit来读取/改变
SIGXFSZ超过文件大小资源限制
SIGVTALRM虚拟时钟信号. 类似于SIGALRM, 但是计算的是该进程占用的CPU时间
SIGPROF类似于SIGALRM/SIGVTALRM,但包括该进程用的CPU时间以及系统调用的时间
SIGWINCH窗口大小改变时发出
SIGIO文件描述符准备就绪, 可以开始进行输入/输出操作
SIGPWRPower failure

注意

1.
有两个信号可以停止进程:SIGTERM和SIGKILL,

SIGTERM比较友好,进程能捕捉这个信号,

根据您的需要来关闭程序。

在关闭程序之前您可以结束打开的记录文件和完成正在做的任务

在某些情况下,假如进程正在进行作业而且不能中断,那么进程可以忽略这个

SIGTERM信号。

2.
对于SIGKILL信号,进程是不能忽略的。

这是一个 “我不管您在做什么,立刻停止”的信号

假如您发送SIGKILL信号给进程,Linux就将进程停止在那里

7.进程的动态监控

top
键入信号功能
1显示CPU每个核的负载
s调整刷新频率
cCPU负载排序
m内存使用量排序
h查看帮助
u查看指定用户进程
k对指定进程发起信号
q退出

在这里插入图片描述

8.控制服务

1)什么是服务?

服务是指:系统中运行的对于系统本身没有意义,但是对客户主机有重大意义的程序叫做服务性软件,简称服务。

我们会发现一个很有意思的现象:为什么Linux中各种服务都带有一个“d“?
d是英文daemon的缩写,说明它是一个守护程序,它在后台运行,一般都是来做服务端程序。

2)用什么控制服务?

系统初始化进程可以对服务进行相应的控制

3)当前系统的初始化进程是什么?

system				##系统初始化进程
pstree				##显示系统中的进程树

在这里插入图片描述

4)进程控制命令

systemctl									##服务控制命令
systemctl		status		sshd			##查看sshd服务状态,状态有两种:inactive(不可用),active(可用)
systemctl		start 		sshd			##开启sshd服务
systemctl		stop 		sshd			##关闭服务
systemctl		restart 	sshd			##重启服务
systemctl		reload 		sshd			##重新加载服务配置
systemctl		enable		sshd			##设定服务开机启动
systemctl		disable		sshd			##设定服务开机不启动

在这里插入图片描述

systemctl		list-units			##列出已经开启的服务当前状态

在这里插入图片描述

systemctl		list-unit-files		##列出所有服务开机启动的状态

在这里插入图片描述

systemctl		list-dependencies			##列出服务的倚赖

在这里插入图片描述

systemctl		set-default	multi-user.target		##设定系统启动级别为多用户模式(无图形)
systemctl		set-default	graphical.target		##设定系统启动级别为图形模式
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值