Linux系统进程管理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统进程管理相关的知识,希望对你有一定的参考价值。
本章学习内容
------进程概念
------进程创建、切换和撤销
------进程调度
------进程分类
------进程状态
------进程管理工具
引言
在linux系统中,内核的功用有:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等,在这众多的模块中,进程管理是相对重要的一环,即使不像文件系统和网络功能那么复杂。在进程管理中,内核对进程的创建、切换、撤销和调度都有很详细的定义。
1、进程及相关概念
<1>进程:进程可以理解为程序执行的一个实例,有唯一的PID来标识,它包括可执行程序以及与其相关的系统资源,比如打开的文件、挂起的信号、内核内部数据、处理器状态、内存地址空间及包含全局变量的数据段等。从内核的角度看,进程也可以称为任务。
<2>进程描述符:与进程相关的事情非常多,比如进程的PID、状态、进程的优先级、进程的地址空间、允许该进程访问的文件等等,Linux内核为此专门设计了一个类型为task_struct的结构体,称之为进程描述符。进程描述符中包含了内核管理进程的所有信息,可以说,只要得到一个进程的进程描述符,就可以知道一个进程的所有信息。
2、进程的创建、切换和撤销
<1>进程创建:在系统启动时,会先在CPU上加载内核,之后内核创建第一个进程init(centos7上是systemd),init通过系统调fork()创建各种各样的子进程,各进程之间遵循Cow机制(即修改数据才分配内存)。
<2>进程切换:进程切换又称为任务切换、上下文切换。它是这样一种行为,为了控制进程的执行,内核挂起当前在CPU上运行的进程,并恢复以前挂起的某个进程的执行。
<3>撤销进程:进程终止后,需要通知内核以便内核释放进程所拥有的资源,包括内存、打开文件以及其他资源,如信号量
3、进程调度
<1>调度策略:调度策略就是这样一组规则:决定什么时候以怎样的方式选择一个新进程运行。所以定义一个进程的优先级来满足这样一种策略。这个策略以0-139的优先级来表示。
实时优先级:1-99
无需调整,数字越大,优先级越高
静态优先级:100-139
可调整,数字越小,优先级越高
优先级以Nice值来衡量
Nice:-20----19 ,存在于task_struct结构体中
<2>调度算法:早起的Linux中,调度算法是根据进程的优先级选择“最佳”进程来执行,它的缺点是时间开销与“可运行进程数量”有关。某种调度算法一定满足一种函数关系,业界称为Big O
Big O:时间复杂度,用时和规模的关系。有:
O(1), O(logn), O(n)线性, O(n^2)抛物线, O(2^n)
4、进程类型
<1>进程的分类标准一:
守护进程: daemon,在系统引导过程中启动的进程,和终端无关进程
前台进程:跟终端相关,通过终端启动的进程
注意:两者可相互转化
<2>进程的分类标准二:
CPU-Bound:CPU密集型,非交互(图形)
IO-Bound:IO密集型,交互(操作)
5、进程状态
在内存中运行的进程也有着各种各样的状态
运行态R:running
就绪态:ready
睡眠态
可中断S:interruptable
不可中断D:uninterruptable
停止态T:stopped,暂停于内存中,但不会被调度,除非手动启动
僵死态Z:zombie,结束进程,父进程结束前,子进程不关闭
6、进程接受的信号
<1>常用信号:man 7 signal
1) SIGHUP: 无须关闭进程而让其重读配置文件
2) SIGINT: 中止正在运行的进程;相当于Ctrl+c
9) SIGKILL: 杀死正在运行的进程
15) SIGTERM:终止正在运行的进程
18) SIGCONT:继续运行
19) SIGSTOP:后台休眠
<2>指定信号的方法:
(1) 信号的数字标识;1, 2, 9
(2) 信号完整名称;SIGHUP
(3) 信号的简写名称;HUP
7、进程管理工具
<1>ps aux
USER: 运行进程的用户
PID: 进程ID
%CPU: 占用CPU
%MEM: 占用内存
VSZ: 虚拟内存集
RSS: 实际内存集
TTY: 终端信息
STAT:进程状态
START:进程运行开始时间
TIME:运行时间
COMMAND:进程名称
也可以通过特定的选项来显示信息
ps -axo pid、comm、%cpu、%mem、state、tty、euser、ruser
以上也证明了passwd适用于suid权限的,虽然运行用户是user,但其真正有效的是root
<2>uptime
开机时间
运行时间
登陆用户数目
平均负载:指在特定时间间隔内运行队列中的平均进程数
第一分钟负载
第五分钟负载
第十分钟负载
注意:1、5、10分钟的平均负载,一般不会超过1
参考值:如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能良好。如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。
如果linux主机是1个双核CPU的话,当Load Average为6的时候说明机器已经被充分使用。
<3>top
Tasks
total: 进程总数
running:运行进程数
sleeping:休眠态进程数
stopped:停止态进程数
zobie:僵死态进程数
%Cpu(s)
us: user space: 用户空间占用CPU百分比
sy:system: 内核空间占用CPU百分比 注:高负载时:us:sy=7:3
ni:nice 修改nice值占用的CPU百分比
id:idle 空闲的CPU百分比
wa:wait 等待IO完成占用的CPU百分比
hi:hardware interrupt 硬中断占用CPU百分比
si:software interrupt 软中断占用CPU百分比
st:stole 被偷走的CPU,比如VMware
buffer:缓冲:元数据
cache:缓存 :数据
PID:进程号
USER: 进程发起者
PR: priority: 优先级
NI: Nice: nice值
VIRT: 虚拟内存集
RES: 常驻内存集
SHR: 共享内存集
S: status:状态
%CPU:CPU占用比
%MEM: 内存占用比
TIME+:运行时长
COMMAND: 启动进程
排序:
P:以占据的CPU百分比,%CPU
M:占据内存百分比,%MEM
T:累积占据CPU时长,TIME+
首部信息显示:
uptime信息:l命令
tasks及cpu信息:t命令
cpu分别显示:1 (数字)
memory信息:m命令
退出命令:q
修改刷新时间间隔:s
终止指定进程:k
保存文件:W
Esc:退出
直接查看进程编号 pidof COMMAND 或者 ps aux | grep **----->kill
<4>htop
比top更加高级的进程管理软件
f1帮助
f2切换CPU、mem、swap显示方式
f10退出
选中进程执行k
<5>vmstat:查看磁盘吞吐量
r:等待运行的进程的个数,和核心数有关
b:处于不可中断睡眠态的进程个数(被阻塞的队列的长度)
swap:
si:从磁盘交换进内存的数据速率(kb/s)
so:从内存交换至磁盘的数据速率(kb/s)
io:
bi:从块设备读入数据到内存的速率(kb/s)
bo: 保存数据至块至内存的速率
Server端:glances -s -B IP
Client端:glances -c IP <7>dstat
磁盘的读写可通过dd if=/dev/sdb of=/dev/zero 测试
网络监控可通过ping -f IP -s 65507测试。
本文出自 “LINUX_Home” 博客,请务必保留此出处http://dmwing.blog.51cto.com/11607397/1847408
以上是关于Linux系统进程管理的主要内容,如果未能解决你的问题,请参考以下文章