首页 > 系统相关 >深入解析Linux 进程管理机制(超详细)

深入解析Linux 进程管理机制(超详细)

时间:2024-08-17 16:56:37浏览次数:12  
标签:状态 占用 管理机制 ID 内存 Linux 进程 解析 CPU

 文字有点多需要理解

目录

一.进程管理

1.进程简介

2.静态进程

​编辑 ​编辑

3.动态进程

top数据列解释

4.结束进程

5.工作管理命令

6.定时任务


一.进程管理

1.进程简介

1)什么是进程:

进程是运行在linux中的程序的一个实例,是管理事务的基本单元;进程拥有自己独立的处理环境和系统资源。进程的状态是变化的,其包括进程的创建、调度和消亡。

2)什么是生命周期:

生命周期通常从安装开始,到最终被用户卸载结束。在这个过程中,它会经历不同的阶段,包括引导、运行、维护和再次引导。

3)什么是进程状态:

进程状态主要指的是进程在不同时刻所处的工作状态↓

  • 运行态:‌进程正在CPU上执行。‌
  • 就绪态:‌进程已经准备好,‌等待CPU分配时间片以执行。‌
  • 阻塞态:‌进程由于等待某些条件(‌如I/O操作完成)‌而暂停执行。‌
  • 新建态:‌进程刚刚被创建,‌但还未开始执行。‌
  • 终止态:‌进程执行完毕或因错误而终止,‌等待系统回收资源。‌
  • 睡眠态(‌S状态)‌:‌进程因等待某些条件满足而被挂起。‌
  • 磁盘睡眠态(‌D状态)‌:‌进程在等待磁盘操作完成时所处的状态。‌
  • 停止态(‌T状态)‌:‌通过某些信号或操作使进程暂停执行。‌
  • 暂停态(‌Z状态)‌:‌进程被暂停,‌通常用于调试或特殊需要。‌
  • 僵尸态(‌Z状态)‌:‌当进程终止后,‌如果其父进程没有正确回收该进程的资源,‌该进程就会进入僵尸态,‌等待操作系统或其父进程来处理。‌

2.静态进程

1)静态查看进程

 语法: ps [选项]

  ps -aux 查询所有进程信息 查看 CPU 内存占用率

​编辑

选项说明:

a (all):显示现行终端机下的所有程序

u (user):以用户为主的格式来显示程序状况

x:列出当前用户正在运行的进程,而不仅限于在终端中执行的进程

进程字段含义:

USER:运行进程的用户 ;

PID:进程ID (唯一,管理员可通过进程 ID 结束进程);

%CPU:占用cpu ;

%MEM:占用内存 ;

TTY:进程运行的终端 ;

STAT:进程状态 ;

START:进程启动的时间 ;

TIME:进程占用 CPU 的时间 ;

COMMAND:进程文件、进程名 ;

2)进程排序

语法:ps -aux --sort  列名

以CPU占比排列(减号表示降序排列)

ps -aux --sort  %cpu

ps -aux --sort -%cpu

​编辑

3)自定义显示字段数

语法:ps -axo  字段名

​编辑

4)显示进程信息,并包含进程关联的父进程 (如果有程序无法结束运行,可以结束它的父进程从而结束该进程)

语法:ps -ef

-e:等价于 ‘-A’ ,表示列出全部的进程
-f:显示全部的列(显示全字段)

​编辑

PID:程序号

PPID:父系程序号

5)进程树状图查看

使用pstree命令来查看进程树状图。这个命令会显示当前运行的进程树,以及它们之间的父子关系。

语法:pstree [选项]

 -p    进程号
 -u    进程用户名

​编辑

3.动态进程

1)实时监控进程

语法: top  [选项]
 -d 秒          刷新频率
 -i                只显示活动进程
 -p               进程ID   通过指定ID 监控进程状态
 -n               循环次数

​编辑

了解哟波(

top - 00:10:28 up 1:22, 3 user, load average: 0.02, 0.04, 0.05

top: 这是命令本身,表示正在查看系统的实时状态。
00:10:28: 当前系统时间
up 1:22: 表示系统最后一次启动后总的运行时间。
3 user: 有 3 个用户当前登录系统。
load average: 0.02, 0.04, 0.05: 这表示系统的平均负载。三个数字分别代表最后 1分钟、5 分钟和 15 分钟的平均负载。负载是系统中等待运行的任务数量。

Tasks: 222 total, 1 running, 221 sleeping, 0 stopped, 0 zombie

1 total: 系统总共有 1 个进程。
1 running: 有1进程正在运行。
221 sleeping: 有 221 个进程在休眠状态。
0 stopped: 没有进程被停止。
0 zombie: 没有僵尸进程。僵尸进程是已完成但其父进程还未收回其资源的进程。

%Cpu(s): 0.1 us, 0.7 sy, 0.0 ni, 99.1 id, 0.1 wa, 0.0 hi, 0.1 si, 0.0 st

这部分描述了 CPU 的使用情况。其中:
us: user space,用户空间占用的 CPU 时间百分比。
sy: system space,内核空间占用的 CPU 时间百分比。
ni: nice value,改变过优先级的进程占用的 CPU 时间百分比。
id: idle,空闲的 CPU 时间百分比。
wa: wait,等待 I/O 的 CPU 时间百分比。
hi: hardware interrupt,硬件中断占用的 CPU 时间百分比。
si: software interrupt,软件中断占用的 CPU 时间百分比。
st: steal time,虚拟环境中被其他虚拟机占用的 CPU 时间百分比。

MiB Mem : 4026160  total, 2316900  free, 911544  used, 797716 buff/cache

这描述了系统的内存使用情况。
4026160  total: 总内存为 4026160  MiB。
2316900  free: 空闲的内存为 2316900  MiB。
911544  used: 被使用的内存为 911544  MiB。
797716buff/cache: 被缓冲和缓存的内存为 797716MiB。这部分内存是为了提高文件访问速度而被系统用作缓存的内存。

 MiB Swap: 4194300  total, 4194300  free, 0 used. 2846388 avail Mem

这描述了交换空间的使用情况(在物理内存不足时,系统会使用硬盘作为额外的内存,称为交换空间)。
0.0 total: 总交换空间为 0 MiB。这意味着你的系统没有配置交换分区或交换文件。在现代系统中,这通常是正常的,因为现代系统通常使用虚拟内存管理来管理内存和硬盘之间的空间分配,而不需要显式的交换分区或交换文件。
2846388avail Mem: 可用的物理内存是 2846388MiB(包括缓冲和缓存)。这部分内存可用于满足新的内存需求,而不必使用交换空间。

top数据列解释

​编辑

1.PID:       进程ID,唯一标识一个进程的编号。

2.USER:   进程所有者的用户名。

3.PR:        进程的优先级。

4.NI:          nice值,用于调整进程的优先级。默认值是0,范围是-20到19。

5.VIRT:      进程使用的虚拟内存总量,单位是KB。

6.RES:      进程当前使用的、驻留在物理内存中的大小,单位是KB。

7.SHR:      共享内存大小,单位是KB。

8.S:           进程的状态。常见的状态有R(运行中)、S(休眠)、Z(僵尸进程)等。

9.%CPU:   该进程占用的CPU使用率。

10.%MEM:该进程占用的物理内存使用率。

11.TIME+: 该进程启动后总共运行的时间,单位是分钟:秒。

12.COMMAND: 启动进程的命令名称或命令行。

4.结束进程

  1. 使用kill命令:

kill [进程ID]

如果进程不响应,可以使用-9选项强制结束:

kill -9 [进程ID]

  1. 使用pkillkillall命令通过进程名称结束进程:

pkill [进程名称]

killall [进程名称]

  1. 如果你需要结束一个子进程,可以使用pgrep来查找进程ID,然后用killpkill结束它:

pgrep -f [子进程名称]

kill [返回的进程ID]

  1. 使用xkill命令来结束图形界面程序:

首先运行xkill,然后点击你想要结束的程序的窗口,它会发送SIGTERM信号。

  1. 如果你需要结束一个会话中的所有进程,可以使用kill命令加上-HUP选项:

kill -HUP [会话ID]

5.工作管理命令

 &把进程放入后台      
 jobs -l        显示后台工作程序
 fg %工作号    将后台暂停的工作恢复到前台执行
 bg %工作号         后台恢复执行的命令

6.定时任务

查看crontab服务状态:systemctl  status crond

​编辑

开启定时服务:   systemctl restart crond

语法: crontab [选项]

crontab -e         进入crontab编辑界面。会打开vim编辑

-e    编辑crontab定时任务
-l     查询crontab任务
-r     删除当前用户所有的crontab任务

* * * * *(星之间有空格)

没颗星星的顺序:分 时 日 月 周

  • 分钟,可以是从0到59之间的任何整数。
  • 小时,可以是从0到23之间的任何整数。
  • 日期,可以是从1到31之间的任何整数。
  • 月份,可以是从1到12之间的任何整数。
  • 星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
  • command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

在以上各个字段中,还可以使用以下特殊字符:

  • (*):代表所有可能的值,例如月份字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
  • (,):可以用逗号隔开的值指定一个列表范围
  • (-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
  • (/):可以用正斜线指定时间的间隔频率,正斜线可以和星号一起使用,例如*/10,如果用在分钟字段,表示每十分钟执行一次也可以与其他符号配用

示例:*/1 * * * * echo "hello" >> file1        每隔1分钟,向/root/file1.txt文件中添加hello文字

45 22 * * *         每天22点45分执行命令

40 4 * * 1-5       每周一到周五的凌晨4点40分执行命令

0 5 1,15 *          每月1号和15号的凌晨5点0分执行命令

标签:状态,占用,管理机制,ID,内存,Linux,进程,解析,CPU
From: https://blog.csdn.net/qq_66544042/article/details/141180562

相关文章

  • Unity 麦扣 x 勇士传说 全解析 之 怪物基类与野猪(附各模块知识的链接,零基础也包学会的
    通过一阵子的学习,我是这么认为的,因为该教程是难度两星的教程 ,也就是适合学了一阵子基础组件以后的学习者(什么都不会的学习者要是学这套课程会困难重重,如果你什么都不会那么需要学习一星教程)所以该课程没有那么多manger,代码也不那么面向对象,但是从怪物类之后就开始有相关的内......
  • Linux学习笔记:systemd配置文件
    本文更新于2024-08-15,使用systemd252,操作系统为Debian12.6(bookworm)。以为Nginx编写配置文件为例,配置文件路径为/lib/systemd/system/nginxd.service(亦即服务名为nginxd),所有者为root,权限通常为0644。文件内容如下:[Unit]Description=NginxAfter=network.target[Service]......
  • Linux系统优化详解
    一、Linux操作系统优化1、查看操作系统版本号方法一:查看当前系统版本[root@web01~]#cat/etc/redhat-releaseCentOSLinuxrelease7.9.2009(Core)方法二:[root@web01~]#hostnamectlStatichostname:oldboyIconname:computer-vmChassis:......
  • Linux内核状态 system_state
    基于msm-5.4一、定义/*用于system_state的值,状态的顺序不得更改,代码检查时会用<、<=、>、>=STATE*/externenumsystem_states{//include/linux/kernel.hSYSTEM_BOOTING,//0,最初没有赋值的时候的默认值SYSTEM_SCHEDULING,SYSTEM_RUNNING,SYSTE......
  • Linux系统重要配置文件
    一、/etc/sysconfig/network-script/ifcf-eth0网卡配置文件1、网卡信息解读:TYPE=Ethernet #网络类型,Ethernet-->以太网BOOTPROTO=none #配置IP地址的方式 #自动获取IP方式为DHCP #固定IP地址配置方式:nonestaticNAME=eth0 #网卡在系统中显示的名称......
  • 最好用的Linux发行版---WSL
    使用debian开发半年,那个号称稳定的操作系统,ubuntu也是基于它的testing版本开发的,在一次设置testing更新后英伟达驱动掉了、引导区无法启动、bios损坏,现在老实了,换回了Window,并且激进的选择了win11,但我还是难以忘记linux爽快的开发体验,便用上了wsl安装Linux控制面板->程......
  • AI舌苔诊病(文心快码Baidu Comate)进行代码解析与完成项目二创
    目录前言百度AppBuilder——接口处理文心快码BaiduComate——接口解析文心快码BaiduComate——页面生成与优化文心快码BaiduComate——二创基础数据积累-智能提问存储数据二创方向询问 二创实操文心快码BaiduComate——对微服务架构分析能力测试1、整体视角—......
  • Android Linux EAS优化-schedtune
    SchedTuneSchedTune是一项与CPU调频相关的性能提升技术,它实现为一个cgroup控制器。这个控制器提供了一个名称为schedtune.boost的配置参数,运行时系统可以使用它来更改该组中的进程的调度方式。每当调整这个参数的时候,它会使受影响的进程看起来比实际更重(或更轻)。如果一个组被提......
  • Unixed |As IBM's legal battle over Linux intensifies, other firms hope to benefi
    BPC>Fullarticletextfetchedfrom(noneedtoreportissueforexternalsite): | archive.today | archive.mdBusiness |IBMandLinuxUnixedAsIBM'slegalbattleoverLinuxintensifies,otherfirmshopetobenefitJun19th2003 | san......
  • Vuex 深度解析 | 面试常问问题案例
    Vuex深度解析|面试常问问题案例Vuex是Vue.js应用程序的状态管理模式和库。它为Vue.js应用程序提供了一个集中存储所有组件的共享状态,并以相应的规则保证状态以一种可预测的方式发生变化。接下来,我们将深入探讨Vuex的核心概念、使用方式、API、高级技巧、优......