系统学习---- Linux进程管理


首先需要了解一些概念:
系统调用(system call): 运行在用户空间的程序向操作系统内核请求系统资源
(获得更高权限);系统调用提供给用户程序与操作之间的接口

在这里插入图片描述

内核程序进程管理,文件系统,网络功能,内存管理,驱动程序等等
程序: 通常是个二进制程序,放置存储介质中(内存/硬盘等),以实体文件存在

进程

进程:正在运行的程序;进程获取到的系统资源由执行者决定;程序(代码)会被加载到内存执行。
操作系统会给每个进程分配一个内存单元(识别码)。

进程的定义:

程序运行的实例,系统上的每个程序都会运行在进程的上下文中

进程出现的目的:

是为了更好的利用CPU资源。进程拥有独立的内存空间;对我们来看:进程好似独占CPU,实际上涉及上下文件的切换。
举例:
A执行任务(读取磁盘数据),CPU会空闲;B想要执行任务,需要等待,就造成资源浪费。
当有了进程之后
A执行任务(读取磁盘数据),进行"上下文件切换"(A需要保存当前进程状态);B可以直接执行任务,当A任务完成后,B将cpu占用还给A (恢复A之前进程状态
下图有 A 和 B 进程,在一个时间点,CPU 只执行一个进程的指令,因为 CPU 运行很快,所以在咱们看起来,像是多个进程在同时跑。这就是进程带来的好处:提高资源利用率,并发地执行多个程序。
在这里插入图片描述

进程的创建:

INIT进程: PID为(1|0)的父进程
父子进程: 进程都是由其父进程创建的(调动fork()函数)

进程优先级:

0-99: 实时优先级,数字越小,优先级越低
100-139: 静态优先级,数字越小,优先级越高。表现形式:通过Nice值(-20,19),例如Nice值为0,静态优先级为120

进程类型:

前台进程:跟终端相关,通过终端启动的进程
守护进程:在系统引导过程中启动的进程(也可以自定义守护进程:daemon()),跟终端无关
Note: 前台进程也可以发往后台,以守护进程模式运行

进程状态

运行态:running
就绪态:ready
睡眠态:

可中断: interruptable
不可中断: uninterruptable

停止态:stopped 暂存于内存中,但是不会被调度,除非手动启动
僵尸态:Zombie
僵尸进程:简单来说:就是有些进程已经运行完结束,但是占用的系统资源没有被回收

进程分类:

CPU - Bound(密集型)
IO - Bound : 不占用cpu

进程管理工具

pstree命令:显示进程树

常用参数:
-g : 显示子进程Pid
-p :显示Pid号
-s :显示父进程信息

ps命令

report a snapshot of the current processes (输出当前系统进程信息)
- Linux系统各进程的相关信息均会保存到/proc/PID/目录的各文件中

常用组合:aux
a : 与终端相关的进程
x :与终端无关的进程
u : 以用户为中心组织进程状态信息显示

常用组合:aux 
	a : 与终端相关的进程
	x :与终端无关的进程
	u : 以用户为中心组织进程状态信息显示
USER  PID      %CPU        %MEM        
用户 pid号  CPU占用情况   内存占用情况
VSZ :虚拟内存集
RSS :常驻内存集 
TTY :终端
STAT : 进程状态  
	R: Running 
	S: interruptable
	D: uninterruptable
	T: stopped
	Z: Zombie
		+: 前台进程
		l: 多线程进程
		N:低优先级进程
		<: 高优先级进程
		s: session leader 
START : 启动时间   
TIME :运行占用CPU的累积时长
COMMAND :由哪个命令来启动的相关进程

常用组合2:ps -ef
e : 显示所有进程
f :显示完整格式程序信息


常用组合3:ps -eFH
F : 显示完整格式进程信息
H : 以进程层级格式显示进程相关信息


常用组合4:ps eo, axo (输出自定义信息)
To see every process with a user-defined format:
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ps -Ao pid,tt,user,fname,tmout,f,wchan

自定项: STANDARD FORMAT SPECIFIERS(man手册中这一段帮助文档)

top命令: 实时显示Linux processes

top - 02:43:53 up 48 min,  1 user,  load average: 0.00, 0.01, 0.05
02:43:53 up 48 min : 开始运行的时间 up 当前已经运行的时间
 1 user : 登录用户数量
 load average: 0.00, 0.01, 0.05 : CPU平均负载; 1|5|15分钟的平均负载信息(uptime命令也可)
 
Tasks: 121 total,   2 running, 119 sleeping,   0 stopped,   0 zombie
进程任务数量		正在运行状态	睡眠状态	停止状态	僵尸状态

%Cpu(s):  0.0 us,  0.1 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
cpu占用相关信息: 
us: 表示用户态的CPU时间比例
sy:表示内核态的CPU时间比例
ni:运行低优先级进程的CPU时间比例
id:空闲CPU时间比例
wa:处于IO等待的CPU时间比例
hi hard interrupt: 处理硬中断的CPU时间比例
si soft interrupt: 处理软中断的CPU时间比例
st steal:当前系统运行在虚拟机中的时候,被其他虚拟机占用的CPU时间比例

KiB Mem :   997980 total,   539524 free,   100820 used,   357636 buff/cache
内存  总量  空闲  使用量 buffer/cache 可用量

KiB Swap:  2097148 total,  2097148 free,        0 used.   711396 avail Mem 
交换内存    总量    空闲量   使用量  可用量  

内置命令:

排序:
	P: 以占用CPU百分比排序
	M: 以占用内存百分比排序
	T: 以累积占用CPU时长排序


首部信息提示:
	uptime信息: l命令
	task及cpu信息: t命令
	CPU分别显示信息: 1(数字)
	memory信息: m命令
	修改刷新时间间隔: s 命令(默认是3s刷新一次)
	终止指定进程:k命令 
	退出命令: q命令
	

选项:
	-d #:指定刷新时间间隔 默认为3s
	-b:以批次方式显示
	-n #:显示多少批次

htop命令:

内置命令:
	s:跟踪选定进程的系统调用
	l:显示选定进程打开的文件列表
	[: 将选定的进程绑定至某个指定的CPU核数上

选项: 
	-d #: 指定延迟时间
	-u username: 仅显示指定用户的进程
	-s CLOOMN: 以指定的字段进行排序

vmstat命令:

-n [延时|次数] : 每个多长时间输出一次;一共输出n次
-s : 显示内存统计信息

vmstat 5 2

输出信息:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 535084   2108 357696    0    0    14     7   26   24  0  0 100  0  0
	
r: running
b: uninterruptable 
swapd: 交换内存总量
...

si: 数据进入swap中的速率
so:数据离开swap中的速率
bi:数据从块设备到系统的速率
bo:数据从系统到块设备的速率

in:interrupts 中断速率
cs: context switch 上下文切换速率(进程切换速率)

kill命令

kill命令:向进程发送控制信号,以实现进程管理

显示当前可用信号: kill -l 

常用信号: 
	1) SIGHUP : 让进程无需退出而重新读取配置文件
	2) SIGINT : 终止正在运行的进程
	9) SIGKILL:杀死正在运行的进程
	15) SIGTERM: 终止正在运行的进程

指定信号的方式:
	信号的数字标识(*)
	信号的完整名称
	信号的简称

向进程发起信号:
	kill [-Signal] PID 
	
终止"名称"之下的所有进程
	killall [-Signal] Promgram 

进程优先级调整:
静态优先级: 100-139 可以手动修改
进程默认启动时的nice值为0,优先级120
修改:
nice命令:Usage: nice [OPTION] [COMMAND [ARG]…]
renice命令:
Usage:
renice [-n] [-p|–pid] …
renice [-n] -g|–pgrp …
renice [-n] -u|–user …

	[root@test ~]# renice -n 5 -p 2310 
	2310 (process ID) old priority 0, new priority 5
发布了49 篇原创文章 · 获赞 6 · 访问量 3688

猜你喜欢

转载自blog.csdn.net/weixin_46097280/article/details/104366680
今日推荐