(六)linux中的进程管理
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这个文件
真机显示连接时密码错误
虚拟主机就会显示登陆失败的主机:
(六)linux中的进程管理相关推荐
- 专业介绍Linux中的进程管理
Linux中的进程管理 1.什么是进程? 1)进程就是系统中处于执行期的工作. 对于[执行]两个字需要作出特别解释:执行并不同于运行,因为系统中的进程的状态大概分为四种: 进程状态 R(Running ...
- Linux中的进程管理
Linux中的进程管理 Linux中的进程管理 Linux中的进程管理 1.进程 进程的定义 进程和线程 进程状态 2.进程查看命令 ps pgrep pidof top 3.进程优先级 4.进程前后 ...
- 【Linux操作系统基础】第六章 Linux中的进程管理
一.进程及其状态 程序是静态的代码文件,没有生命周期.进程是指程序运行时的形态,是程序的一个副本,进程有生命周期(准备期,运行期,终止期) 进程是资源调用的最小单位,系统中的资源在同一时间只能被同一个 ...
- Linux 中的进程管理
### 1.进程定义 ### #进程的定义: 程序是静态的代码文件 进程是指程序运行时的形态 进程是程序的一个副本 进程是有生命周期的(准备期,运行期,终止期) #进程&线程 进程是资源调用的 ...
- Linux中的进程管理类、ps 查看当前系统进程状态、内存置换算法LRU、查看与sshd相关进程
文章目录 1.10 进程管理类 1.10.1 ps 查看当前系统进程状态 1.10.1.1基本语法 1.10.1.2选项说明 1.10.1.3功能说明 1.10.1.4经验技巧 1.10.1.5内存置 ...
- 【Linux 内核】进程管理 ( Linux 内核中的进程状态 | TASK_RUNNING | TASK_INTERRUPTIBLE | __TASK_STOPPED | EXIT_ZOMBIE )
文章目录 一.Linux 内核中的进程状态 二.TASK_RUNNING 状态 三.TASK_RUNNING 状态 四.TASK_UNINTERRUPTIBLE 状态 五.__TASK_STOPPED ...
- Linux系统中的进程管理
Linux系统中的进程管理 了解进程 进程是已启动的可执行程序的运行实例,进程有以下组成部分: • 已分配内存的地址空间: • 安全属性,包括所有权凭据和特权: • 程序代码的一个或多个执行线程: • ...
- 【Linux 内核】进程管理 ( 进程状态 | 进程创建 | 进程终止 | 调用 exit 系统调用函数主动退出 | main 函数返回自动退出 | kill 杀死进程 | 执行异常退出 )
文章目录 一.进程状态 二.进程创建 三.进程终止 ( 调用 exit 系统调用函数主动退出 | main 函数返回自动退出 | kill 杀死进程 | 执行异常退出 ) 一.进程状态 Linux 进 ...
- 【Linux 内核】进程管理 ( 内核线程概念 | 内核线程、普通进程、用户线程 | 内核线程与普通进程区别 | 内核线程主要用途 | 内核线程创建函数 kernel_thread 源码 )
文章目录 一.内核线程概念 二.内核线程.普通进程.用户线程 三.内核线程.普通进程区别 四.内核线程主要用途 五.内核线程创建函数 kernel_thread 源码 一.内核线程概念 直接 由 Li ...
- 【Linux 内核】进程管理 task_struct 结构体 ⑤ ( files 字段 | nsproxy 字段 | 信号处理相关字段 | 信号量和共享内存相关字段 )
文章目录 一.task_struct 结构体字段分析 1.files 字段 2.nsproxy 字段 3.信号处理相关字段 4.信号量和共享内存相关字段 在 Linux 内核 中 , " 进 ...
最新文章
- 6分钟完成ImageNet训练,NVIDIA创下六项AI性能新记录!
- C#之foreach语句
- 【Python】编程笔记9
- 自用Excel VBA技巧整理
- LeetCode 815. 公交路线(最少换乘,BFS)
- xtrabackup部分备份数据库 Partial Backups
- WPS Office 2019 For Linux 8722 发布,引入pdf组件
- apache http server 停止工作_Tomcat9配置HTTP/2
- Innodb 与自增长auto_increment
- c语言编程模拟银行取钱代码,C语言 用初等函数模拟银行取款
- 企业微信机器人python脚本执行报错-‘errcode‘: 40008, ‘errmsg‘: ‘Warning: wrong json format. invalid message type
- CC2530 实现无线串口
- 2016年农民工监测调查报告(zz)
- SumatraPDF一个很nice的PDF开源项目
- asp上传头像mysql_asp 会员头像上传 代码
- 信息系统项目管理师知识点(第 1 章)-信息系统基础知识
- python使用win32和flask实现接收请求发送QQ消息
- 揭秘 2023 年 Navicat 两大重磅功能 Redis + OceanBase 发布计划
- matlab测量平差实验报告,测量平差实习心得精选三篇
- Echarts折线图X轴Y轴图例位置调整
热门文章
- python商业爬虫教程_python爬虫课程
- 【Python】使用Python调用Fragstats批量进行万级及以上数据的景观指数运算
- 推荐一个下载简历模板的网站工具
- html页面透明背景,css 背景透明 元素(标签)背景透明的css设计
- CSDN论坛新手指南
- 全网最全Java微服务面试题总结(SpringCloud+Spring Boot)
- 详解最实用的几种dll注入方式
- 计算机科学基础慕课答案,大学计算机基础mooc习题整理(含答案)
- 《天勤数据结构》笔记——顺序栈和链栈及其代码实现(C/C++)
- 【UWB定位】 - DWM1000模块调试简单心得 - 1