Linux系统管理:进程管理

本文详细解读了进程概念、生命周期、状态、静态与动态查看方法(ps与top)、进程排序、父子关系、nice值调整与作业控制,以及虚拟文件系统Proc的深入解析。通过实例演示,教你如何有效管理和优化Linux进程资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进程管理

进程是什么

什么是进程:进程是已启动的可执行程序的运行案例
程序—> ./ 文件(执行文件,linux中运行文件执行的方式 ./)这个过程就是进程

例:/usr/bin/passwd 这是一个可被执行的文件(程序)存储在硬盘当中;硬盘(文件)----变成进程----进入内存内存
.
当程序变成进程时会拥有内存上的一些资源:内存资源、CPU资源(占用CPU的时间)、网络资源(占用网络带宽)、PID:进程号、权限、自我复制、…等

进程是已启动的可执行程序的运行实例,进程有以下组成部分:

  • 已分配内存的地址空间;
  • 安全属性,包括所有权凭据和特权;
  • 程序代码的一个或多个执行线程;
  • 进程状态
  • 程序: 二进制文件,静态 /bin/date, /usr/sbin/httpd,一旦分 配了资源就是进程
  • 进程: 是程序运行的过程, 动态,有生命周期及运行状态。

进程的生命周期

在这里插入图片描述
父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。每个新进程分配一个唯一的进程 ID (PID),满足跟踪安全性之需。PID 和 父进程 ID (PPID)是子进程环境的元素,任何进程都可以创建子进程,所有进程都是第一个系统进程的后代:Centos5/6系统进程: init、Centos7系统进程: systemd

子进程继承父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码。随后,子进程可能 exec自己的程序代码。

通常,父进程在子进程运行期间处于睡眠(sleeping)状态。当子进程完成时发出(exit)信号请求,在退出时,子进程已经关闭或丢弃了其资源环境,剩余的部分称之为僵停(僵尸 Zombie)。父进程在子进程退出时收到信号而被唤醒,清理剩余的结构,然后继续执行其自己的程序代码。

进程状态

在多任务处理操作系统中,每个 CPU(或核心)在一个时间点上只能处理一个进程。在进程运行时,它对
CPU 时间和资源分配的要求会不断变化,从而为进程分配一个状态,它随着环境要求而改变。
在这里插入图片描述
状态:

  • R—Running:运行
  • T—Stopped:暂停
  • S—Sleeping:睡眠、可中断睡眠 Sleep
  • Z—Zombie:僵死
  • D 不可中断睡眠 (usually IO)
  • X 死掉的进程

进程管理Process

静态查看进程ps

静态查看进程ps

语法:

  • ps aux (当前所有进程显示)
  • ps aux | 需求 ( 比如:前几行:head -2;关键进程:grep passwd寻找与passwd相关进程)

参数:

  • ps a 显示现行终端机下的所有程序
  • pa u 以用户为主的格式显示程序状况
  • pa x 不以终端机来区分

字段含义:

  • USER: 运行进程的用户
  • PID: 进程 ID
  • %CPU: CPU 占用率
  • %MEM: 内存占用率
  • VSZ: 占用虚拟内存;实际是硬盘
  • RSS: 占用实际内存 驻留内存
  • TTY: 进程运行的终端
  • STAT: 进程状态 man ps (/STATE)
  • START: 进程的启动时间
  • TIME: 进程占用 CPU 的总时间
  • COMMAND: 进程文件,进程名

例:
在这里插入图片描述

在这里插入图片描述

进程排序

语法:

  • ps aux --sort = -排序字段(最大到最小排序)
  • ps aux --sort = 排序字段 (从小到大)

例:ps aux --sort=-%cpu
在这里插入图片描述

进程的父子关系

语法:ps - ef 查看进程的父子关系
如果结束不了子进程 ,可选择结束父进程。子进程就会被结束

例:
在这里插入图片描述
子进程ID(PID)与父进程ID(PPID),图中PID为4的进程的PPID为2也就是第二位的进程,图中PPID为0的,他们的父进程是第一个系统进程systemd带动起来的

自定义显示字段

语法:

  • ps axo 字段1,字段2,字段3....
    显示你需要显示的字段,
    例:
    在这里插入图片描述

动态查看进程top

语法: top 选项(选项可加,可不加)
动态的显示进程,隔一段时间显示一次新的进程,默认为1秒
退出动态输入q
在这里插入图片描述
例:

# top
查看当前运行进程动态显示

# top -d 1 
每一秒刷新一次

# top -d 1 -p 10126(PID)
查看指定进程的动态信息

# top -d 1 -p 10126,1
查看PID为101261的进程

# top -d 1 -u apache(user)
查看指定用户的进程

# top -d 1 -b -n 2 > top.txt 2 次 top 信息写入到文件

上半部分

第一行:

top - 11:20:26  up 38 min, 2 users,   load average:0.020.050.07
程序名 -系统时间  运行时间,   登录用户数, CPU负载:5分钟的负载,1015

第二行:

Tasks:207 total, 4 running, 203 sleeping,  0 stopped,  0 zombie
总进程数	,		  运行数 4,    睡眠数203, 	   停止数0,   僵死数 0

第三行:

%Cpu(s):     1.0 us,  0.0 sy,  0.0 ni,   99.0 id, 0.0wa,  0.0 hi,  0.0 si,  0.0 st
CPU使用占比:	 us用户,   sy系统,  ni优先级, id空闲,   wa等待, hi硬件,  si软件, st虚拟机
各个占用cpu的比例

第四行:

KiB Mem:  		   995676 total,  80008 free,   662156 used,  253512 buff/cache
物理内存(单位:K):  total总共1G,   free空闲80M,   userd使用,  cache缓存硬盘内容200M
used与buff/cache一直在变化

第五行:

KiB Swap:   2097148 total,  2053420 free,   43728 used,  177836 buff/cache
虚拟内存(交换分区):与第四行一样

下半部分

  • PID、USER、%CPU、%MEM略
  • VIRT:virtual memory usage 虚拟内存:需要这些内存,但是没有占满
  • RES: resident memory usage 常驻内存:用了多少内存
  • SHR: shareed memory 共享内存:1.出去自身进程,也包括其他进程、2.共享内存大小公式:RES - SHR

top常用内部指令

  • h或? 帮助
  • M 按内存的使用排序
  • P 按 CPU 使用排序
  • N 以 PID 的大小排序
  • R 对排序进行反转
  • f 自定义显示字段
  • 1 显示所有 CPU 的负载
  • < 向前
  • > 向后
  • z 彩色
  • W 保存 top 环境设置 ~/.toprc

使用信号控制进程

信号的种类

语法:kill -编号 PID
.
[root@tianyun ~]# kill -l //列出所有支持的信号

- 编号 	信号名
 - 1	SIGHUP 		重新加载配置 PID 不变
 - 2 	SIGINT 		键盘中断(ctrl+c)
 - 3 	SIGQUIT 	键盘退出(ctrl+\)
 - 9 	SIGKILL 	强制终止
 - 15 	SIGTERM 	终止(正常结束),缺省信号 
 - 18 	SIGCONT 	继续
 - 19 	SIGSTOP 	停止
 - 20  	SIGTSTP 	键盘暂停(ctrl+z)

例:
在这里插入图片描述

信号9,15

信号九与十五的区别

  • 9 SIGKILL 强制终止
  • 15 SIGTERM 终止(正常结束),缺省信号

在这里插入图片描述

在这里插入图片描述

进程优先级nice

简介

Linux进程调度多个任务,每个CPU在一个时间点上只能处理一个进程,通过时间片技术,同时运行多个程序,例如:cpu(分片 例:1秒分成1000份,200听歌、200word…)0.2%的占用cpu时间

每个 CPU(或 CPU 核心)在一个时间点上只能处理一个进程,通过时间片技术,Linux 实际能够运行的进程(和线程数)可以超出实际可用的 CPU 及核心数量。Linux 内核进程调度程序将多个进程在 CPU 核心上快速切换,从而给用户多个进程在同时运行的印象。

优先级范围和特性

图示:
在这里插入图片描述
由于不是每个进程都与其他进程同样重要,可告知进程调度程序为不同的进程使用不同的调度策略。常规
系统上运行的大多数进程所使用的调度策略为 SCHED_OTHER (也称为 SCHED_NORMAL),但还有其它一些调度策略用于不同的目的。

SCHED_OTHER 调度策略运行的进程的相对优先级称为进程的 nice 值。nice值为:-20~19,可以有 40 种不同级别的 nice 值。

在top中现实的优先级有两个,PR值和nice值
NI:实际nice值
PR(+20):将nice级别显示为映射到更大优先级队列,-20映射到0,+19映射到39

我们所调整的nice值只是很小的一部分,在PR中调整过nice值会被系统再加上20,图示中的对应关系。也是为了避免影响系统的优先级,比如当一个程序的优先级高于操作系统的优先级,操作系统会被影响,系统要预留高优先级给自己使用

特性:

  • nice 值越高: 表示优先级越低,例如+19,该进程容易将 CPU 使用量让给其他进程。
  • nice 值越低:表示优先级越高,例如-20,该进程更不倾向于让出 CPU

查看进程的nice级别

1.使用top查看nice值
在这里插入图片描述

2.使用ps查看nice值

# ps axo pid,command,nice --sort=-nice
并进行排序
# ps axo pid,command,nice,cls --sort=-nice

例:在这里插入图片描述

启动具有不同nice级别的进程

启动进程时,通常会继承父进程的 nice 级别,默认为 0。

语法:nice -n 优先级 程序
在这里插入图片描述
此时sleep程序启动了三个,优先级不同

更改现有进程的nice级别

语法:renice 优先级 PID

使用 shell 更改 nice 级别

[root@tianyun ~]# sleep 7000 &
[3] 10089
[root@tianyun ~]# renice -20 10089

在这里插入图片描述

作业控制Jobs

简介

作业控制是一个命令行功能,允许一个 shell 实例来运行和管理多个命令。如果没有作业控制,父进程 fork()一个子进程后,将 sleeping,直到子进程退出。使用作业控制,可以选择性暂停,恢复,以及异步运行命令,让 shell 可以在子进程运行期间返回接受其他命令

作业控制是一个命令功能,也叫后台运行

关键词:

  • foreground:
    fg:前台进程:前台进程是在终端中运行的命令,该终端为进程的控制终端。前台进程接收键盘产生的输入和信号,并允许从终端读取或写入到终端。
  • background:
    bg:后台进程:没有控制终端,它不需要终端的交互,看不见,但是在运行

后台控制

1.观察占领前台的现象

# sleep 2000
运行sleep程序,当前终端无法输入,大部分命令输入无效
可以使用ctrl+c中止程序

2.运行后台程序

# sleep 3000 & 
运行程序(时),让其在后台执行
& 放在命令的最后才是后台符

3.ps查询所有程序()

# ps aux |grep sleep
查看所有sleep进程

4.jobs查看后台程序

# jobs
专门查看后台的进程,不包括前台的进程
要控制一个后台的进程可以使用ps或jobs

在这里插入图片描述
5.调动后台程序至前台

语法:fg 后台序列号

ctrl+z  可将在前台运行的程序调至后台且是暂停状态(键盘暂停)
使用后台符&  将前台程序调至后台时程序仍然是运行的

语法: bg  后台序列号
bg:当一个程序在后台停止时,可以使它再次运行起来

在这里插入图片描述
在这里插入图片描述
6.消灭后台进程

语法:kill %后台序列号

注意:“kill 1” 与 “kill %1”的区别
前者是终止PID为1的进程
后者是终止后台序列号为1的进程

在这里插入图片描述

虚拟文件系统Proc

简介
虚拟文件系统:采集服务器自身的内核、进程文件的状态信息
在根本下的proc文件中,该文件中大多都是一些数字,这些数字代表的就是进程信息
这些文件是变化的,有进程时就会有该进程文件

CPU(/proc/cpuinfo)
cpu的相关参数、信息
在这里插入图片描述

内存(/proc/mminfo)

在这里插入图片描述

内核(/proc/cmdline)
内核版本: vmlinuz-3.10.0在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值