Linux 进程管理

一、简述

当运行一个程序的时候,那么运行的这个程序就叫做进程。程序,是一个静态的概念统称为软件,相当于一个被编译好可执行的二进制文件,同时程序可以长期存在系统中;进程,是一个动态的概念,也就是打开软件,进程会跟随着程序的终止而被销毁,不会永久存在系统中,打开关闭软件就相当于进程的生命周期。

二、进程的生命周期

说明

子进程在处理任务时,父进程会进入等待状态。子进程处理完任务后会执行退出,然后唤醒父进程来回收子进程的资源。如果子进程在执行任务时父进程退出了,但子进程还在,那么这些子进程就会没有父进程管理,那这个进程就会成为僵尸进程。

三、进程信息

[root@localhost ~]# ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.5  0.0 125372  3816 ?        Ss   09:19   0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    09:19   0:00 [kthreadd]#ps 使用方法
ps [参数]#常用参数组合-ef-aux

USER

启动进程的用户

PID

进程运行的PID

%CPU

进程占用CPU的百分比

%MEM

进程占用内存的百分比

VSZ

进程占用虚拟内存的大小(KB为单位)

RSS

进程占用物理内存实际大小(KB为单位)

TTY

进程由哪个终端启动的(代表内核程序)

STAT

进程运行过程中的状态

START

进程的启动时间

TIME

进程占用CPU的总时间(以秒为单位)

COMMAND

程序的运行指令。

[程序名称]属于内核态的进程,没有[方括号]的是用户态进程。

四、进程状态

进程基本状态

R

进程正在运行中

S

进程可中断睡眠

T

进程被暂停

D

不可中断睡眠

Z

僵尸进程

进程状态符号

s进程是控制进程,Ss进程的领导者,也就是父进程
<进程运行在高优先级上,S< 优先级较高的进程
N进程运行在低优先级上,SN 优先级较低的进程
+进程运行在前台终端上,R+ 表示进程在前台运行
l进程是多线程的,Sl 表示进程是以线程方式运行

五、动态查看进程状态

指标说明

10:33:05当前系统时间
1:13系统已经运行了1小时13分钟
1 user当前登录系统的用户有 1 个
0.00, 0.01, 0.05系统平均负载 1分钟,5分钟,15分钟
Tasks
98 total当前进程的总数
2 running正在运行的进程数
96 sleeping睡眠的进程数
0 stopped停止的进程数
0 zombie僵尸进程数
%Cpu(s)
0.3 us用户空间占用CPU时间百分比
0.0 sy内核空间占用CPU时间百分比,通常内核是与硬件进行交互
0.0 ni改变过优先级的进程占用CPU时间百分比
99.5 id空闲CPU百分比
0.2 waCPU等待IO完成的时间
0.0 hi硬中断占CPU时间百分比
0.0 si软中断占CPU时间百分比
0.0 st虚拟机占用物理CPU的时间
KiB Mem
3861076 total内存总量
2925816 free空闲内存量
155980 used已使用的内存量
779280 buff/cache内核缓存的内存量
KiB Swap
2097148 totalSwap交换区内存的总量
2097148 free空闲Swap交换区内存量
0 used已使用Swap交换区内存量
3469180 avail MemSwap交换区可用内存量

六、管理进程状态

当程序运行为进程后如果希望停止进程时可以使用 kill 命令对进程发送关闭信号。处理 kill 命令还有 killall 和 pkill。

1.kill 信号

~]# kill -l1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX

想要详细了解 kill 信号的可以参考下这位大佬的 @sugarCYF 的KILL命令信号详解_kill 信号-CSDN博客

2.kill 用法

#kill 使用语法
kill [参数/x信号] [PID]#常用信号1:平滑结束进程,服务启动后PID不变9:强制结束进程15:进程处理完最后一个请求后,结束进程。kill 默认信号#pkil 使用语法
kill [程序名称]批量结束有关程序的所有进程#kiall 使用语法
killall [程序名称]批量结束有关程序的所有进程

七、管理后台进程

通常进程都会在终端运行,一旦关闭终端进程也就会随着结束。那么将进程放入后台运行也就会比较方便,不会影响到终端的正常使用。比如拷贝一写比较大的文件或者是下载文件等等一些不可被终端的进程。

1.将进程放入后台的工具

jobs、bg、fg等方式需要先查看状态比较麻烦,所以推荐使用 screen。

2.screen 用法

#语法
screen [参数] [任务名称]#开启一个任务窗口
~]# screen -S wget#开始下载任务
~]# wget https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2207-02.iso#退出下载窗口
ctrl + a + d  平滑退出screen窗口,但是不会终止screen中的任务#终止 screen 窗口
~]# exit#查看任务
~]# screen -list
There is a screen on:1722.wget	(Detached)
1 Socket in /var/run/screen/S-root.#进入正在运行的任务窗口
~]# screen -r wget#还有种方法,在命令后加 & 将命令放在后台运行~]# wget https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2207-02.iso &>/dev/null &
[1] 1753
~]# ps -ef | grep wget
root       1753   1350  9 14:49 pts/0    00:00:00 wget https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2207-02.isoPS:如果不太明白 &>/dev/null 是什么意思的话,可以看下我之前发布的 Linux 重定向 https://blog.csdn.net/zy_101922546/article/details/135837429?spm=1001.2014.3001.5502

八、进程优先级

1.优先级指的就是优先选择,优先享受资源。

2.进程的 nice 值越高表示优先级越低,例如,19,那该进程容易将资源使用量让给其他进程。

3.进程的 nice 值越低表示优先级越高,例如,-20,该进程更不容易将资源使用量让给其他进程。

PR:代表进程的优先级

NI:代表进程的 Nice 值

4. nice 用法

#参数-n:指定nice值-p:指定 PID#指定 nice 值
~]# nice -n 5 vim 1.txt
~]# ps -axo pid,command,nice|grep vim |grep -v grep1832 vim 1.txt#renice 用法
调整已经启动过的进程优先级
~]# renice -n -20 -p 7261

九、平均负载

如果平均负载(1分钟,5分钟,15分钟)的三个基数基本相同或者相差不大,那么说明系统负载很平稳。但如果1分钟的值远小于15分钟的值,那么就说明系统最近1分钟的负载在减少,而过去的15分钟内却有很大的负载。相反,如果1分钟的值远大于15分钟的值,那就说明最近1分钟的负载在增加,这种增加有可能是临时性的,也有可能还会持续增加,需要持续观察。

例如:

假设有两个CPU,系统上看到的平均负载为 2.73  6.90 12.98
说明在过去的1分钟内,系统有136%的超载(2.73/2=136%)
在过去的5分钟内,系统有345%的超载(6.90/2=345%)
在获取的15分钟内,系统有649%的超载(12.98/2=649%)
总体来说系统的负载是在逐渐的降低

平均负载与CPU使用率之间的关系

平均负载是指单位时间内,处于可运行状态和不可中断状态的进程数,所以他不仅包括了正在使用CPU的进程,还包括了等待CPU的进程和等待I/O的进程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/657115.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RHCE练习3

1.基于域名www.openlab.com可以访问网站内容为 welcome to openlab 2.给该公司创建三个子界面分别显示学生信息&#xff0c;教学资料和缴费网站&#xff0c;基于www.openlab.com/student 网站访问学生信息&#xff0c;www.openlab.com/data网站访问教学资料www.openlab.com/mo…

Unix环境高级编程-学习-04-匿名管道PIPE

目录 一、环境 二、介绍 三、C标准函数介绍 1、pipe 2、popen 3、pclose 4、注意 四、宏 五、常见的管道用法 1、一对一&#xff08;父进程读子进程写一条管道&#xff09; 2、一对一&#xff08;父进程写子进程读一条管道&#xff09; 3、一对多&#xff08;父进程…

leetcode—跳跃游戏—贪心算法

1 跳跃游戏1 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&a…

vue-computed 计算属性

一、computed 计算属性 在Vue应用中&#xff0c;在模板中双向绑定一些数据或者表达式&#xff0c;但是表达式如果过长&#xff0c;或者逻辑更为复杂 时&#xff0c;就会变得臃肿甚至难以维护和阅读&#xff0c;例如&#xff1a; <div>写在双括号中的表达式太长了,不利于阅…

Linux 入门基础知识(一)—— Linux的基本使用

Linux 入门基础知识 一、Linux的基本使用和配置1.1、终端1.2、消耗内存1.3、运行级别1.6、登录前欢迎语1.5、登录后欢迎语1.6、shell1.7、ps aux1.8、设置主机名1.9、whoami和who am i1.10、命令提示符 二、Linux执行命令的过程详解和命令类型2.1、命令执行2.2、hash缓存表2.3、…

张维迎《博弈与社会》纳什均衡与囚徒困境博弈(2)囚徒困境博弈

囚徒困境大家应该都比较熟悉了&#xff0c;我觉得这篇的意义大概在与&#xff0c;经济学术语的运用&#xff1f; 囚徒困境&#xff1a;个人理性与集体理性的矛盾 假定有两个犯罪嫌疑人共同作案。警察抓住他们以后&#xff0c;分开拘押&#xff0c;并告诉他们&#xff1a;可以选…

Chiplet,汽车“芯”风向

异构集成、高速互联、算力灵活可扩展正在成为新一轮汽车芯片竞争的焦点。尤其是随着以ChatGPT为代表的大数据、大模型产品在车端的落地&#xff0c;对于芯片的要求还在持续提升。 本周&#xff0c;12家日本汽车制造商&#xff08;包括丰田、日产、本田等&#xff09;、零部件制…

设计与实现基于Java+MySQL的考勤发布-签到系统

课题背景 随着现代经济的迅速发展&#xff0c;电子考勤签到服务已经渗透到人们生活的方方面面&#xff0c;成为不可或缺的一项服务。在这个背景下&#xff0c;线上签到作为考勤签到的一种创新形式&#xff0c;为用户提供了便捷的操作方式&#xff0c;使得任务签到、个人签到记…

代码随想录算法训练营第35天 | 860.柠檬水找零 406.根据身高重建队列 452.用最少数量的箭引爆气球

柠檬水找零 局部最优&#xff1a;收到20元时优先找零10元5元&#xff0c;不够再找零3个5元&#xff0c;因为5元可以找零20和10&#xff0c;更有用。全局最优&#xff1a;完成所有的找零。 class Solution { public:bool lemonadeChange(vector<int>& bills) {int fi…

c++的发展史、缺省参数、命名空间你了解吗?

1.c的发展历史概述 1.1.什么是c C语言是结构化和模块化的语言&#xff0c;适合处理较小规模的程序。对于复杂的问题&#xff0c;规模较大的 程序&#xff0c;需要高度的抽象和建模时&#xff0c;C语言则不合适。为了解决软件危机&#xff0c; 20世纪80年代&#xff0c; 计算机…

TypeScript实战系列之强力爆破泛型的困扰

目录 介绍开始如何理解泛型语法泛型约束泛型默认值练习后续 介绍 泛型在typescript 中使用频率相当高&#xff0c;也给了初学者相当大的阻碍。希望这一篇文章&#xff0c;能帮助你们爆破它。 开始 下面通过模拟实现一个简易版本的axios来引入泛型的使用 // axios.ts type M…

如何在centos7上配置为桥接模式

一、打开虚拟机的设置页面&#xff0c;设置虚拟机桥接模式如图&#xff1a;选择桥接模式&#xff08;复制物理网络连接可选&#xff09; 二、net0对应桥接模式的配置&#xff0c;如下方式选择 三、 在 CentOS 7 中&#xff0c;通过编辑网络配置文件来配置网络参数。找到 /etc…

(九)springboot实战——springboot3下的webflux项目参数验证及其全局参数验证异常处理

前言 在上一节内容中&#xff0c;我们介绍了如何在webflux项目中自定义实现一个全局的异常处理器ErrorWebExceptionHandler&#xff0c;正常情况下其可以处理我们系统的运行时异常&#xff0c;但是无法处理参数验证的异常WebExchangeBindException&#xff0c;所以这里提供另外…

算法随想录第四十八天打卡| 198.打家劫舍 , 213.打家劫舍II , 337.打家劫舍III

详细布置 今天就是打家劫舍的一天&#xff0c;这个系列不算难&#xff0c;大家可以一口气拿下。 198.打家劫舍 视频讲解&#xff1a;动态规划&#xff0c;偷不偷这个房间呢&#xff1f;| LeetCode&#xff1a;198.打家劫舍_哔哩哔哩_bilibili 代码随想录 class Solution(…

STM32 E18-D80NK红外避障传感器

E18-D80NK-N是一款红外光电传感器&#xff0c;它同时具备发射和接收功能。通过对发射光进行调制后发出&#xff0c;并通过接收头对反射光进行解调输出。 E18-D80NK-N采用了透镜来增强传感器的性能&#xff0c;使其能够检测更远的距离。根据红外光的特性&#xff0c;不同颜色的…

拒掉了一个双 985 的面试者

下班路上&#xff0c;和一个大佬聊天&#xff0c;他说今天面试&#xff0c;拒掉了一个双 985 的候选人。 候选人背景很好&#xff0c;本科和硕士都是 985 院校毕业&#xff0c;并且是除了清北浙之外&#xff0c;排名非常靠前的 985院校。 本硕专业都是计算机专业&#xff0c;…

Spring Boot + security + jwt 测试安全策略

一、测试概述 主要目的是测试security的用法。因测试搭建mysql和redis比较麻烦&#xff0c;所以我这里将自定义的jwt和用户信息缓存到程序的内存中。 本人测试的项目比较混乱&#xff0c;Spring Boot父类只标出有用的依赖。其子类用的版本为jdk11。后续会继续深入oauth2&#x…

数据库之TiDB基础讲解

文章目录 1 TiDB1.1 引言1.2 TiDB介绍1.3 系统架构1.3.1 TIDB Server1.3.2 PD Server1.3.3 TIKV Server1.3.4 TiKV如何不丢失数据1.3.5 分布式事务支持 1.4 与MySQL的对比1.5 性能测试1.5.1 测试一1.5.2 系统测试报告 2 1 TiDB 1.1 引言 当我们使用 Mysql 数据库到达一定量级…

调试小结:PHY初始化前后Link Status是否能正确反应网线插上、拔下状态

1 说明 为了验证是否需要初始化PHY才能检测到网线插上、拔下&#xff0c;这里我们对比初始化PHY&#xff08;LAN8720&#xff09;前后&#xff0c;插拔网线PHY寄存器1的bit2的是否按照预期变化来进行测试。 我们查看的PHY寄存器是1的bit2&#xff0c;定义如下&#xff1a; 2…

springboot的actuator

1、actuator简介 微服务的特点决定了功能模块的部署是分布式的&#xff0c;大部分功能模块都是运行在不同的机器上&#xff0c;彼此通过服务调用进行交互&#xff0c;前后台的业务流会经过很多个微服务的处理和传递&#xff0c;出现了异常如何快速定位是哪个环节出现了问题&am…