linux中的进程管理

进程信号

调用其实就是买鞋你要进买鞋的大门

计算机上的cpu可以运行指令
程序是由指令+数据组成的

指令分为特权指令和普通指令

特权指令只能内核调用-------硬件平台的管理,比如硬件写数据
和root用户无关

如果应用程序需要特权指令,都需要向内核调用

一个应用程序包含很多指令 是顺序、循环等方式逐步运行在cpu上。如果有特权指令、就会调用内核,吧程序本身停下来了。等内核把你所调用的功能在cpu上完成,才调用完成。程序继续返回做别的事情。
在这里插入图片描述
所以代码执行可能不断的由自己所能执行的用户代码和调用内核所执行的代码之间转换。如果自己能执行,就在cpu上执行。如果没有权限,代码就必须模式转换,发起软中断。作用就是发起系统调用,内核被调用的内核代码就会被装入cpu.一旦执行完毕把结果返回给调用者。调用者拿到结果继续执行。

执行用户代码的机制叫做用户空间 在这里插入图片描述
执行内核代码称为内核空间

在这里插入图片描述

但是程序怎么并行执行的???
时间片。第一个程序运行一段 然后第二个程序 不管第一个是否执行完

根据优先级高的选一个执行 切换来切换去

cpu的指令指针寄存器

中间数据。中间状态会放在cpu的寄存器中

进程不断切换 不断的保护现场 切换现场

进程就是跑起来的进程 运行在cpu上

每个进程由自己的元数据 pid号等

程序试图执行特殊程序 cpu就会唤醒内核 中断cpu

进程如何创建的?

在这里插入图片描述

内核首先创建init进程 后续用户所有管理工作都由init负责 比如创建子进程或者子进程创建子进程
但是系统调用等等还是内核自己执行的

需要向内核发起调用(准生证),父进程克隆数据给子进程

子进程和父进程共享内存空间

如果子进程需要改写数据 就需要复制一份出来 就是写时复制 平时是共享的

中止进程

白发人送黑发人的 只是子进程帮助父进程完成复杂任务 所以一定是子进程先中止

在这里插入图片描述
加入很多进程需要执行????怎么快速哪个进程优先执行?
因为struct里面记录了优先级 内核遍历找优先级高的 但是消耗高

等待1000个进程

实时:数字越大优先级越高,很少需要执行

-20–对应—100 19-----139

在这里插入图片描述

Linux内核把进程分为140个队列 相同优先级的进程排一队
只需要扫描每个队列的首部就可以知道了

不管进程多少,复杂度一直还是不变o(1)

在这里插入图片描述

每个队列都有两队 一个是过期队列 一个是运行队列 被执行过的就是过期队列 等运行队列运行完毕 两个队列互换即可

task struct具体信息:很复杂

进程内存

进程需要内存传数据和指令 不断被分配回收
每个进程所使用的内存是怎么决定的呢?
内核是完成资源分配的

内存中 内核占用一部分
在这里插入图片描述
在这里插入图片描述

把剩余内存分配为片段4k 然后多个4k的分配给进程 假装为连续空间
内核找空闲的内存页分配给进程
每个进程以为自己在3G的内存空间 这就是线性地址 实际占据的只有内存分配的 内核仅仅分配他所需要的
物理地址就是真实的分配的
在这里插入图片描述进程间通信
由于进程只能意识到只有自己和内核
所有由IPC机制

在这里插入图片描述

开机操作系统启动中产生的进程是服务类型—守护进程
用户在终端执行的进程就是用户进程/前台进程

在这里插入图片描述

进程有数据 只是没有在cpu运行 就是就绪态

僵尸进程出现:子进程还在,父进程挂了

一般是子进程执行完,父进程回收资源等 最后直接回收

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

Linux进程管理命令

线程是轻量级的进程
程序一个一个执行
为了让程序执行更快 一个进程内部创建多个执行流(线程)—并行运行
加起来不要超过cpu总核心数

把独立代码功能分别开发 分别为一个线程 前提:cpu多核心数

在这里插入图片描述

为什么一个web服务进程可以让本地主机上的进程承受10000个用户连接访问?

通信是主机进程和进程访问的

所以用户越来越多不可能开启10000个进程

可以一个进程起很多个线程 一个线程处理一个用户请求

对Linux来讲 线程即进程

但是Linux内核有一种机制 支持一个进程可以接受用户100个进程访问

服务本身也是靠进程实现的

查看进程

pstree 第一个进程是Init进程 后面的进程都是Init进程创建的

在这里插入图片描述

在这里插入图片描述

ps

在这里插入图片描述

命令执行所有进程的当前状态
在这里插入图片描述该目录下每个数字对应进程pid号
启动命令的在这里插入图片描述

终端的
在这里插入图片描述
不是终端的
在这里插入图片描述ps ax 所有的
带中括号的表示内核的线程
?表示不知道是哪个终端
pstree大多都是进程

在这里插入图片描述
在这里插入图片描述s会话负责人 首进程

用户为中心展示 pid进程号 %cpu 累计cpu使用时间 %mem内存占用比率
VSZ 虚拟内存空间 进程所看到的美好镜像 以为自己占据了所有的 实际映射到物理内存–连续占据页框
程序之间共享库 不需要内存存储两边 第n个进程直接找
RSS 常驻内存集 坚决不能放到swap的数据 swap就是内存不够用临时把数据放到swap
TTY
STAT 进程运行状态
STATT
TIME
COMMAND

僵死态:自己交代好了,父进程收尸之前 如果没人收拾 长期处于僵死态了
+表示前台进程 还要占据命令提示符

在这里插入图片描述

在这里插入图片描述0号进程系统启动起来就执行完毕了
C表示运行在cpu占用百分比
PPID 父进程的进程号
在这里插入图片描述PSR 表示运行在哪颗cpu上

在这里插入图片描述
-H层级 -eFH
在这里插入图片描述在这里插入图片描述

只显示想要的
在这里插入图片描述

pgrep,pkill

在这里插入图片描述

显示该用户的进程号
在这里插入图片描述
程序名和启动参数
在这里插入图片描述
其实上面的ps -eFH已经可以查看了
在这里插入图片描述直接看ssh的
在这里插入图片描述
在这里插入图片描述

指定进程的进程号

在这里插入图片描述
ps -eFH
在这里插入图片描述

top

在这里插入图片描述在这里插入图片描述

意思就是开启top后按住l命令后 第一行也就是uptime的信息就没有了 再按一次就又有了

占用cpu最多的进程排序
在这里插入图片描述一分钟 五分钟 十分中 进程队列长度
在这里插入图片描述
在这里插入图片描述

us用户空间
sy内核空间
ni:nice调整后占用的
id空闲
wa等待io
hi处理硬件中断
si软中断所占的
st被虚拟化程序设备偷走的

在这里插入图片描述

优先级,ncie值,虚拟内存集,常驻内存集,共享内存空间,当前状态,占用cpu百分比,内存百分比,启动命令

进程和作业管理(2)

内核功能:进程管理(进程调度)
有一个指令指针寄存器一直存储下一条要执行的指令
服务类进程要一直运行再后台 守护进程
进程调度:保护现场,恢复现场;
task struct: 任务结构
task list: 任务列表

只有用户空间的才是真正有实际生产力的
特权指令和切换进程等等加起来应该不超过cpu的30-40%才是理想的

htop

光盘也没有 自带的网络的Base源也没有 最靠谱的是epel

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

4颗cpu百分比
任务数量仅仅是用户空间的 线程数量thr 进程数量2running

支持鼠标操作
在这里插入图片描述F5 以进程线程显示 层级显示父子关系
在这里插入图片描述

点一下即可 F1
在这里插入图片描述可以看到上面进度条不同的颜色代表不同哦

在这里插入图片描述
选择用户 可以之查看该用户的

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
显示该进程打开的所有文件
光标选中一个程序
在这里插入图片描述按住l键 可以看到打开的文件 ipv4行为连接的

在这里插入图片描述
得要安装了lsof命令哦
在这里插入图片描述在这里插入图片描述

显示进程所有系统调用

选定进程 a 可以选择运行在那棵cpu上
在这里插入图片描述去掉x 就是不运行再这个

F2 选择显示格式
在这里插入图片描述

vmstat

虚拟内存

在这里插入图片描述在这里插入图片描述

vmstat x 显示刷新时间
vmstat x xx xx表示显示几次

b长了代表io时间会很久了

buff缓冲内存总量

如果si so非常频繁 说明一直使用swap 说明物理内存太小了!

bi 提供服务的 比如ftp 下载视频

cs即时一个进程被系统调来调去的频率 有可能上万 表示进程过多 cpu不太行

系统调用是软中断
从当前用户模式转为内核模式 是软中断

硬件级别的事情通知是硬中断

中断就是
io设备跟cpu交互,cpu怎么知道该设备有信号

键盘中断cpu,cpu处理。cpu怎么知道是键盘。可中断控制器 每个io设备可注册一个号、线
就类似于单独标识

us用户空间 sy内核空间
id空闲的cpu占比
st 被虚拟化偷走了

在这里插入图片描述

在这里插入图片描述

glances

yum install -y glances 首先要安装号epel源
在这里插入图片描述
-X 图形
火狐打开

dstat在这里插入图片描述在这里插入图片描述–cdngy和下面的是一一对应的

-c 只显示cpu
-d 只显示dsk
在这里插入图片描述

在这里插入图片描述

只显示cpu

man dstat查看帮助

kill

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
杀死一个 还会再启动一个
在这里插入图片描述在这里插入图片描述

1)重读配置文件时root用户实现在这里插入图片描述

在这里插入图片描述这四种都是一样
在这里插入图片描述
都是重读配置文件

2)INT 中止进程在这里插入图片描述

在这里插入图片描述
不要中止
ps aux 查看中止命令

在这里插入图片描述进程就被打断了

在这里插入图片描述在这里插入图片描述

9) kill 15) TERM 默认的就是找个 终止正在运行中的进程 后台进程

9号 残暴杀害 不管是否正在打开文件 直接kill
15号 人道毁灭 运行过程会打开很多文件 给家人告别把 然后中止
一般使用15号 特殊用9号 因为万一有一些打开的 之后避免出现问题

20) stop 停止先送到后台

reboot:重新开启虚拟机
vim编辑一个文件
在这里插入图片描述
可以ctrl+z
在这里插入图片描述
在这里插入图片描述18)再后台继续 因为vim 是交互式
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
调到前台

比如http很多进程可以直接killall杀死全部
在这里插入图片描述

在这里插入图片描述
剩下的这个不算命令

把grep命令过滤掉
在这里插入图片描述

在这里插入图片描述

调整进程优先级

在这里插入图片描述在这里插入图片描述

指定nice值
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

ping

在这里插入图片描述

-c 发送的ping包个数
-w 整个ping命令的终止时间
在这里插入图片描述只发送三个包
在这里插入图片描述
ping 3秒
默认64bytes

在这里插入图片描述之所以+8是额外负载

hping

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

hping
在这里插入图片描述
1秒发送十个ping包 别测试

traceroute

在这里插入图片描述

从一个主机到另外一个主机经过了多少个路由/网关
很多路由器都不允许探测了

在这里插入图片描述
两个网关 第二个不可达

ftp

在这里插入图片描述

ftp xxxx 远程的ftp主机 输入用户名ftp,密码 空
help查看
在这里插入图片描述

lftp:
在这里插入图片描述
不输入也可以
在这里插入图片描述

也可以url直接下载
在这里插入图片描述

wget

wget 直接下载

只能下载文件 lftp也是

在这里插入图片描述

常用信号等级

 1   ##进程重新加载配置 
 2   ##删除进程在内存中的数据
 3   ##删除鼠标在内存中的数据
 9   ##强行结束单个进程(不能被阻塞)
 15  ##正常关闭进程(可能会阻塞)
 18  ##运行暂停的程序
 19  ##暂停某个进程(不能被阻塞)
 20  ##把进程打入后台(可以被阻塞)

man 7 signal ##查看信号详细信息
注:-2就像当于ctrl +c
在这里插入图片描述

(1)kill -信号 ##进程pid
(2)killall -信号 ##进程名字 注:使用killall时,先后台开启多个vim 然后监控watch -n 1 ‘ps’ 使用命令killall -9 vim 所有的vim就都强制关掉了。
(3)pkill -信号 -u student
使用pkill时,
su - student 三次 密码是student
然后ps ax -o user,group,comm | grep student查看有几个student
再进行监控watch -n 1 ‘ps ax -o user,comm | grep student’
然后pkill -9 -u student把所有有student的就全部强制关掉了 -9表示强制关掉单个进程
在这里插入图片描述
在这里插入图片描述
-19暂停某个进程,就不能在之前的shell编辑了
-20把进程打入后台 还可以编辑 注意20和19d的区别!!!
在这里插入图片描述
在这里插入图片描述
killall -信号 ##进程名字

使用killall时,先后台开启多个vim 然后监控watch -n 1 ‘ps’
在这里插入图片描述
使用命令killall -9 vim 所有的vim就都强制关掉了。
在这里插入图片描述
在这里插入图片描述
pkill -信号 -u student
使用pkill时,
su - student 三次 密码是student
然后ps ax -o user,group,comm | grep student查看有几个student
再进行监控watch -n 1 ‘ps ax -o user,comm | grep student’
在这里插入图片描述
然后pkill -9 -u student把所有有student的就全部强制关掉了 -9表示强制关掉单个进程
在这里插入图片描述
在这里插入图片描述

进程的动态进程

1.top
1: ##显示cpu每个核的负载
s 调整刷新频率
c cpu负载排序(默认从大到小)
m 内存使用量排序
h 查看帮助
u 查看指定用户进程 注:u 查看指定用户进程,要先切换到student下,然后u ,写入student
k 对指定进程发起信号 su - root 后台打开firefox然后k,输入pid,输入9 退出
q 退出
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
u 查看指定用户进程 注:u 查看指定用户进程,要先切换到student下,然后u ,写入student在这里插入图片描述
在这里插入图片描述
k ### 对指定进程发起信号####
su - root 后台打开firefox然后top后点k,输入pid,输入9 退出
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

控制服务

1.什么是服务
给别人能看到用到的共享性文件叫服务
2.用什么控制服务
系统初始化进程可以对服务进行相应的控制
3.当前系统初始化进程是什么
systemd ##系统初始化进程
pstree #显示系统中的进程树

4.进程控制命令
ssh----------->sshd 举的例子
client server

systemctl      ##服务控制命令
systemctl status  sshd(.service)    #查看服务状态,inactive不可用,active可用
systemctl start  sshd        ##开启服务
systemctl stop sshd          ##关闭服务
systemctl restart  sshd      ##重启服务,即pid变了
systemctl reload  sshd       ##重新加载服务配置 
systemctl enable  sshd       ##设定服务开机启动
systemctl disable  sshd      #设定服务开机不启动  (重新打开虚拟机后执行)
systemctl   list-units       ##列出已经开启服务当前状态
systemctl   list-unit-files  ##列出所有服务开机启动的状态 disable,enable,static
systemctl   list-dependencies ##列出服务的依赖
systemctl set-default multi-user.target ##设定系统启动级别为多用户模式(无图形) 然后reboot 再次开启时    输入root    redhat   init 5   进入多用户模式
systemctl set-defalt graphical.target  ##设定系统启动级别为图形模式

过程:#切换虚拟机网络,+100
然后真机ssh.连接网络
在虚拟机里面删除.ssh文件
然后真机里面cd…,然后touch…虚拟机里面就有建立的文件了
reload不关闭情况下更改服务配置pid不变,端口变了
reboot关闭虚拟机重启,来使用开机不自动开启或自动启动
设置成disable开机后查看状态就是…就是dead
而在当前页面控制服务的只能是stop或start

systemctl status  sshd.service  查看状态
systemctl start  sshd.service    显示running
systemctl stop  sshd.service    显示dead

systemctl enable sshd.service
开机后直接查看状态就是running !!注意是开机后,而当前页面的状态还是running
systemctl disable sshd.service
开机后直接查看状态是dead 设置的是开机后是否自动开启
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
systemctl list-units列出已经开启服务当前状态
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值