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: 保存数据至块至内存的速率

<6>glances技术分享    h: 帮助信息                                                                                特性C/S结构

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系统进程管理的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统进程管理

Linux系统管理

linux系统管理之进程管理

进程管理及理解和增加Linux系统调用??

22. Linux的进程管理

Linux系统的进程管理