(六)linux中的进程管理

news/2025/2/6 2:49:48/

linux中的进程管理

  • 一、进程和线程
    • 1、进程
    • 2、线程
  • 二、进程查看命令(man ps)
    • 1、图形查看进程
    • 2、ps命令(用来查看进程信息)
      • 1、bsd风格
      • 2、unix风格
      • 3、gun风格
    • 3、pgrep和pidof 命令的用法
    • 4、top 动态进程查看
  • 三、系统优先级
  • 四、进程前后台调用
  • 五、进程信息号
  • 六、守护进程
    • 1、设定实验环境
    • 2、利用守护进程控制服务
  • 七、系统登录审计体系
    • 1、w   显示正在登陆系统的账号
    • 2、last   登陆成功现在已经退出的
    • 3、lastb   试图登陆但未成功

一、进程和线程

1、进程

程序是静态的代码文件;进程是指程序运行时的形态
进程是程序的一个副本(复制程序到内存,相当于副本)
进程是有生命周期的
    准备期:准备资源(类似于执行“打扫教室任务”前,“拿扫把”)
    运行期:执行过程
    终止期:执行后程序所占用的系统资源被回收

程序存在硬盘上,硬盘中的内容要先放到内存中进行缓存,才能被cpu读到,之后才能进行相应运算。
同样的,在内存中计算出的结果,要放到硬盘中进行永久保存。

2、线程

进程是资源调用的最小单位
线程是进程的最小单位

程序执行流是从上倒下贯穿运行的
当进程是多任务物,cpu是多核心,多任务应该同时被每个核心处理,每个核心处理的任务叫线程
线程资源是共享的。

进程状态

    R(TASK_RUNNING)   可执行态(running,ready):正在被cpu处理,或已经加载好等待被cpu处理
    S(TASK_INTRRUPTABLE)   可唤醒休眠:使用cpu超时,进入休眠,再次使用时需要被激活
    D(TASK_UNINTRRUPTABLE)   不可唤醒休眠:使用cpu超时,仍有资源没有被加载好,不可以使用cpu,等待加载的时间段就是不可唤醒状态。
    T(TASK_STOP)   暂停状态:暂停状态都是人为的在操作,人为的把一个程序暂停,关闭无法使用或暂时不需要的程序,可以人为唤醒
    Z(EXIT_ZOMBLE)   僵死态:**进程已经结束,却占用资源不放,需要手动结束程序。**这是一种“bug”、是系统的漏洞。

二、进程查看命令(man ps)

1、图形查看进程

方法一:gnome-system monitor gnome:图形界面
在这里插入图片描述

方法二:或者在有图形的情况下,选择utilities-system monitor
但是在企业中一般不用。
在这里插入图片描述

2、ps命令(用来查看进程信息)

ps命令也是用来查看进程信息的,但不该命令不依赖于图形。在文本界面下就可以显示进程信息。

命令的三种执行风格 unix bsd GNU
所谓执行风格,就是一种书写规范:
Unix风格的参数,前面加单破折线;
BSD风格的参数,前面不加破折线;
GNU风格的长参数,前面加双破折线。

1、bsd风格

a与终端相关的进程(当用户登陆系统后产生的进程都是带终端的)
x与终端无关相关的进程
u用户信息归类的查看方式
f进程层级关系
o显示指定参数( pid comm nice pri pcpu ppid stat,user,group等)

(1)ps #a 与终端相关的进程(当用户登陆系统后产生的进程都是带终端的)
在这里插入图片描述

我们可以看到tty这一列有三种tty1,tty1,pts/0,
先说pts/0吧,man里面是这样说的:ptmx and pts - pseudo-terminal master and slave,pts是所谓的伪终端或虚拟终端 (虚拟终端(VT)是一种提供类似于Internet的Telnet协议的远程终端仿真的国际标准化组织(ISO)协议。在远程终端的用户,可以在远程计算机上运行应用程序,就象他们是坐在这台计算机前面一样)。

具体表现就是你打开一个终端,这个终端就叫pts/0,如果你再打开一个终端,这个新的终端就叫pts /1,依此类推。
在这里插入图片描述
tty:终端设备的统称。

tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。

tty1~6是文本型控制台,tty7是X Window图形显示管理器。

ps ax显示信息如下:
#PID        进程id(进程的唯一标识)
#TTY       进程用到的终端
#STAT      进程状态
#TIME      进程占用cpu时长
#COMMAND   进程名称

(2)ps #x 与终端无关相关的进程
在这里插入图片描述

当然ps -ax可以组合使用。
(3)ps u 用户信息归类的查看方式
在这里插入图片描述

#ps aux显示信息如下:
#USER       进程所有人
#PID       进程id
#%CPU     进程使用cpu的用量
#%MEM     进程所用到的内存用量
#VSZ       进程使用的虚拟内存大小,(进程在内存中的大小,以千字节(KB)为单位)
#RSS       进程常驻内存中的数据大小,(进程在未换出时占用的物理内存)
#TTY       进程用到的终端
#STAT       进程状态
#START       进程运行时长
#TIME         进程占用cpu时长
#COMMAND       进程名称

(4)ps f 进程层级关系
在这里插入图片描述

(5)ps o user,pid,gid等 (显示指定参数)
在这里插入图片描述

2、unix风格

-e显示所有进程
-f显示信息的完整格式
-H显示进程的层级结构
-o显示指定参数
–sort=

(1)、ps -e显示所有进程
等同于ps ax
(2)、ps -f 显示信息的完整格式
可以看到后面的参数
在这里插入图片描述
(3)、ps -H 显示进程的层级结构
在这里插入图片描述
(4)、ps -o 显示指定参数(和ps o 一样)
在这里插入图片描述
(5)、–sort=
ps -eo %cpu --sort=%cpu 正序排列
ps -eo %cpu --sort=-%cpu 倒序排列
(6)、ps -l 查看自己bash进程
在这里插入图片描述

3、gun风格

3、pgrep和pidof 命令的用法

(1)、pgrep命令
pgrep命令以名称为依据从运行进程队列中查找进程,并显示查找到的进程id。
通过程序的名字来查询进程的工具,一般是用来判断程序是否正在运行

-u uid/user显示指定用户进程
-U user显示指定用户进程
-t tty显示指定终端进程
-l返回进程ID同时显示进程名
-a显示进程的完整名称
-P pid进程的子进程

(1)、-u uid 显示指定用户进程
进入westos用户后 打开两个shell
在这里插入图片描述
(2)、-U user | 显示指定用户进程
在这里插入图片描述
(3)、-t tty |显示指定终端进程
(4)、-a | 显示进程的完整名称
在这里插入图片描述
注意:关于pgrep的命令,一定要牢记此命令是通过进程名称来查询进程的工具,一般是用来判断程序是否正在运行。
所以除了-u和-U后面跟的是用户名称或uid;
其他的参数都是跟进程名称,比如:
在这里插入图片描述
(2)、pidof 命令
根据进程名称来查看进程id。
在这里插入图片描述

4、top 动态进程查看

在这里插入图片描述
(1)、#top -

#09:48:51        系统时间
#up 18:54        运行时长
#2 users       系统中有两个用户登陆
#load average: 0.75, 0.53, 0    Load Average 就是一段时间 (1 分钟、5分钟、15分钟) 内平均 等待时长就是进程等待被cpu处理的时间。

(2)、#Tasks:

#331 total     任务总量
#3 running     正在运行
#329 sleeping   休眠人物数量
#0 stopped   被暂停数量
#0 zombie   僵死人物数量

(3)、#%Cpu(s)
#1.5 us     用户空间
#1.9 sy    内核空间
#0.0 ni    nice值调整时间
#58.9 id     空闲时间
#0.0 wa   等待io时间
#2.1 hi   处理硬件中断时间
#0.2 si处   理软件中断时间
#0.0 st被偷走的时间(vm使用时间)

(4)、#MiB Mem
#7664.6 total     总量
#5383.9 free    空闲
#1312.1 used     占用
#968.8 buff/cache    缓存
从硬盘里面加载数据到内存,这种数据叫缓冲 (buff)
将要从内存到硬盘中的数据 叫缓存。

(5)、MiB Swap: 交换分区用量
交换分区在硬盘上。
#PID   进程id
#USER   进程所有者的用户名
#PR   优先级
#NI    nice值。负值表示高优先级,正值表示低优先级
#VIRT   进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
#RES   进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
#SHR   共享内存大小,单位kb
#S   进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
#%CPU   上次更新到现在的CPU时间占用百分比
#%MEM   进程使用的物理内存百分比
#TIME+   进程使用的CPU时间总计,单位1/100秒
#COMMAND   命令名/命令行
(6)、top命令的参数

-d指定刷新频率
-b以批次方式显示 这个得和d、n搭配使用,他是按批次显示 每三秒都是开一个新的静态top 一直往下走
-n指定显示的批次数量 比如top -n 2 显示两次以后就停止

(7)、top内部指令

#P    排序
#M    内存排序
#T    累计展铜cpu时间排序
#l    关闭/开启uptime信息
#t    关闭/开启cpu&task
#s    指定刷新频率
#k    操作进程
#u    查看指定用户进程

三、系统优先级

系统时多任务多用户的操作模式
任务的重要性是有区分的
如何确定任务的重要性
---->使用“优先级”
范围: 0–139
内核自控优先级范围:0-99
所以用户可控优先级:100-139

nice:-20-19

普通用户只能调低自己的优先级而不能调高。
所谓nice值,就是我们的用户发扬风格,把自己能够使用到的系统资源调低,使别人能够运行的更快。
nice值越负,优先级越高。所以普通用户只能把自己的nice值调大。

(1)更改进程nice值
renice -n -5 43331 ##更改优先级
nice -n -5 cat ##指定优先级打开进程
在这里插入图片描述
S    #sleeping
<    #优先级高
s     #顶级进程
T    #stop(当前状态是一个暂停状态)
N    #优先级低
R    #running
‘+’    #运行在前台
那为什么cat后面没有显示小s?因为他是某一个程序的子进程。

(2)、kill进程
在这里插入图片描述

(3)、开启进程并指定其优先级
nice -n -5 cat &
在开启程序时就指定它的优先级。后台运行。
在这里插入图片描述

四、进程前后台调用

有些进程在使用的时候,是占用系统终端的一个状态。比如:gedit
此时,系统终端已经不能在和我们进行正常交流,那如何解决?
在这里插入图片描述
涉及到的命令:

ctrl+z  ##把占用shell的进程打入后台挂起
bg     ##把后台挂起的进程运行起来
fg     ##把后台进程调回前台
&    ##运行进程在后台
jobs   ##查看当前shell中在后台的所有工作

(1)、ctrl+z 把占用shell的进程打入后台挂起
会显示stopped 暂停状态。
在这里插入图片描述
在这里插入图片描述

后面的”+“表示,我在操作的过程中,默认就是使用这条命令。
后面的”-“表示,稍后要处理的进程
(2)、fg 把后台进程调回前台
把(1)中的进程打入后台挂起以后,就不能在操作gedit页面。如何解决?使用fg。
输入fg,就是带”+“的被调回前台。
输入fg 【num】(jobs中的数字)就是调用指定进程进入前台。
在这里插入图片描述
(3)、bg 使进程在后台运行
在这里插入图片描述

问题:能让cat在后台自动运行起来吗?
cat在后台运行的时候 会自动进入到暂停状态
因为cat需要有字符的输入才能生效,cat在开启的时候需要开启自己的工作界面,如果不具备这样的界面控制能力的话,证明他的资源是缺失的。
如下图可知,cat确实在后台运行的过程,但是运行完毕以后又立即被系统停止了。在这里插入图片描述
同理,vim也和cat一样,也需要一个自己的工作界面。

(4)、& 直接使进程在后台开启。
这样可以正常和系统终端交流
在这里插入图片描述
(5)、结束在后台的进程
fg 把它调回前台,使用完毕以后 正常结束掉
比如vim
cat的话 ctrl+c 结束掉也可以
或者kill -9 【num】 (num是jobs中的编号)

五、进程信息号

引言:
对进程的处理,就是对内核进行控制。
操作者要使用信号对内核进行沟通,让他对相应的进程进行处理。
内核也用信号对进程进行沟通,把数字传递给进程以后,让进程自己去处理。

(1)、man 7 signal 查看进程信息号
在这里插入图片描述
(2)、进程信号
1    #重新家在系统配置文件(source)
2    #清空内存中的进程数据
3    #清空内存中的鼠标(ctrl+)
9    #强行结束进程(不能被阻塞)
15    #正常关闭进程(会被阻塞)
18    #运行被暂停的进程
19    #暂停进程(不会被阻塞)
20    #暂停进程(会被阻塞的)

(3)、实验部分:
①kill -2
第一行的字母我们不要的话可以使用ctrl+c 推出
实际上使用kill -2 就是ctrl+c
在这里插入图片描述
②kill -15正常关闭进程
在shell中开启子进程,使用-15并不会关掉前面那个shell,
这是因为命令被系统阻塞掉了,因为系统认为做了这样的操作以后会对系统造成不良影响。
在这里插入图片描述

当然也可以使用kill -9 强制关闭。

③19 #暂停进程(不会被阻塞)
 20 #暂停进程(会被阻塞的)
在这里插入图片描述
4658的shell 已经不能正常交互
只有kill -18 4658 运行之后 才能交互
kill -20 会被阻塞
在这里插入图片描述
2、进程信号控制工具
kill  进程信号 pid
killall  进程信号 进程名字
pkill  进程信号 进程条件

kill不做过多解释。
(1)、kill all 进程信号 进程名字
当shell中后台开启多个vim,怎么才能一次性把这些vim都关掉。
在这里插入图片描述
(2)、pkill  进程信号 进程条件
经常使用 pkill -U 进程信号 进程条件
就是关闭指定用户进程
进程信号可以在pkill --help中参考。
在这里插入图片描述

六、守护进程

把程序的管理权交给某一个进程,从而分担内核的压力。
而这个进程,我们就可以把他称作守护进程。
在这里插入图片描述
守护进程:替内核分担程序控管的程序
#通常pid为1
就是上图所示的systemd

systemd -----> systemctl
Systemd(系统管理守护进程)
systemctl命令 (系统管理服务) systemd这个启动服务的机制,主要通过systemctl这个命令来完成。

1、设定实验环境

我们的主机位置是172.25.254.50
所以设定另一台主机(虚拟机)的设备是172.25.254.150

对虚拟机网络进行配置,为接下来的操作做准备。
在这里插入图片描述
在这里插入图片描述

2、利用守护进程控制服务

所谓服务,就是对操作者以外的人是有意义的。
比如,上课用的远程连接服务,对老师是没有意义的,但是对于上视频课的人是有意义的。
这种雷锋程序,就叫服务。

#systemd -----> systemctl
#systemctl 管理系统服务
#服务指在系统中开启的共享系统资源到网络中的程序
(1)、status ##查看状态
在这里插入图片描述
(2)、stop ##关闭
在这里插入图片描述
(3)、start ##开启
在这里插入图片描述
(4)、restart ##重新启动服务
相当于先stop再start
为什么要重启,因为如果对程序做了相应的设定,那目前为止是不生效的,只有重启之后才生效。
重启之后 。main pid会发生变化。
在这里插入图片描述
(5)、reload ##重新加载
在配置进程以后,不关闭进程,而是直接加载。
有的进程支持,有的进程不支持。
比如ssh就不支持。
而httpd就支持,这是服务本身决定的。
(6)、enable
enable ##设定服务开机启动
enable --now ##设定服务开机启动并当前开启服务
disable ##设定服务开启不其动
在这里插入图片描述
只使用disable,当前还是running状态
在这里插入图片描述
使用了disable --now 就关闭了
在这里插入图片描述

使用systemctl enable sshd 就是设置其开机启动。
(7)、list-units ##查看系统所有服务当前状态
在这里插入图片描述
(8)、list-unit-files ##查看服务开机状态
在这里插入图片描述
图中,static表示的是固定的,不需要去管,这种服务通常都是其他服务运行的依赖性。
(9)、list-dependencies ##列出服务依赖性
在这里插入图片描述
就是我们再开启一个服务的时候,另一个服务会因为当前服务的开启而自动打开,不需要人为进行管理。
(10)、mask ##冻结服务
    unmask ##解锁
之前我们可以使用stop和start进行开启关闭服务
在冻结之后,stop和start就不再起作用。
在这里插入图片描述
(11)、 set-default ##设定系统运行模式

set-default multi-user.target 无图形网络模式
set-default graphical.target 有图形的网络模式

get-default ##查看系统运行模式

##系统运行模式
#0-6
#0   POWEROFF(关机)
#1   single
#2   noG+NETWORK
#3
#4
#5   G+NETWORK
#6   REBOOT(重启)(调用命令 init 6)在这里插入图片描述

无图形的网络模式就是黑的界面。运行速度会更快。

七、系统登录审计体系

1、w   显示正在登陆系统的账号

w    显示正在登陆系统的账号
w -i    显示登陆来源
上面两个命令显示的其实是/var/run/utmp 这个文件,这两个文件不能使用cat进行查看。
在这里插入图片描述
此时主机也显示连接到了 当前虚拟主机上。

2、last   登陆成功现在已经退出的

last ##登陆成功现在已经退出的
该命令查看的是 /var/log/wtmp这个文件

在这里插入图片描述
真机退出连接后,图上图所示

3、lastb   试图登陆但未成功

lastb ##试图登陆但未成功
该命令查看的是/var/log/btmp这个文件
真机显示连接时密码错误
在这里插入图片描述
虚拟主机就会显示登陆失败的主机:
在这里插入图片描述


http://www.ppmy.cn/news/563864.html

相关文章

【JavaSE学习】03面向对象Java语法

JavaSE&#xff08;B站黑马&#xff09;学习笔记 01Java入门 02数组、方法 03面向对象&Java语法 04-1Java高级&#xff08;Stream流、异常处理、日志技术&#xff09; 04-2Java高级&#xff08;文件处理-IO流&#xff09; 04-3Java高级&#xff08;多线程、网络编程&#…

C语言中的函数(函数的调用、函数的嵌套调用和链式访问、函数的声明和定义)

CSDN话题挑战赛第2期 参赛话题&#xff1a;学习笔记 学习之路&#xff0c;长路漫漫&#xff0c;写学习笔记的过程就是把知识讲给自己听的过程。这个过程中&#xff0c;我们去记录思考的过程&#xff0c;便于日后复习&#xff0c;梳理自己的思路。学习之乐&#xff0c;独乐乐&a…

Python基础总结

文章目录 前言1. 计算机中的三大件2. 程序的执行原理3. Python执行原理 一. Python简介1. 了解Python2. Python特点3. Python版本 二. 注释和转义字符1. 单行注释2. 多行注释3. 转义字符 三. python中的变量1. 变量的定义2. 变量的命名3. 变量的特点4. 变量的类型5. 变量的计算…

【机器学习】机器学习Top10算法,教你选择最合适的那一个!一文读懂ML中的解析解与数值解...

在机器学习领域里&#xff0c;不存在一种万能的算法可以完美解决所有问题&#xff0c;尤其是像预测建模的监督学习里。 比方说&#xff0c;神经网络不见得比决策树好&#xff0c;同样反过来也不成立。 最后的结果是有很多因素在起作用的&#xff0c;比方说数据集的大小以及组成…

VUE L ClassStyle ⑦

目录 文章有误请指正&#xff0c;如果觉得对你有用&#xff0c;请点三连一波&#xff0c;蟹蟹支持✨ V u e j s Vuejs Vuejs C l a s s Class Class与 S t y l e Style Style绑定总结 文章有误请指正&#xff0c;如果觉得对你有用&#xff0c;请点三连一波&#xff0c;蟹蟹支持…

【Flutter——组件】

文章目录 StatelessWidget&#xff08;无状态小组件&#xff09;StatefulWidget&#xff08;有状态小组件&#xff09;Container&#xff08;容器&#xff09;ListView&#xff08;列表视图&#xff09;GridView&#xff08;网格视图&#xff09;MaterialApp&#xff08;应用程…

python之jieba分词库使用

目录 一. 介绍A. 什么是jieba库B. jieba库的特点和优势C. 安装jieba库 二. 分词基础A. 字典加载B. 分词模式C. 使用示例 三. 自定义词典A. 添加词语B. 载入自定义词典C. 使用示例 四. 关键词提取A. 基于TF-IDF算法的关键词提取B. 基于TextRank算法的关键词提取C. 使用示例 五. …

【uboot1】常用指令

文章目录 1.U-Boot命令之常用命令&#xff1a;7.U-Boot命令之EMMC和SD卡操作命令&#xff1a;一般EMMC和SD卡是同一个东西&#xff0c;没特殊说明&#xff0c;统一MMC来代指EMMC和SD卡8.U-Boot命令之内存操作命令&#xff1a;直接对DRAM进行读写操作&#xff0c;uboot命令中的数…