zoukankan      html  css  js  c++  java
  • 青蛙学Linux—进程管理

    进程,Process,是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。

    进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。

    进程是线程的容器,进程中包含一组线程,线程运行在进程中。

    1、Linux中进程的分类

    1.系统进程:可以执行内存资源分配和进程切换等管理工作的进程,由操作系统启动并管理,这类进程的运行不受用户的干预,即使是root用户也无法干预系统进程的运行。

    2.用户进程:通过执行用户程序、应用程序或内核之外的系统程序而产生的进程,这类进程可以在用户的控制下运行或关闭,用户进程可分为以下三种

    • 交互进程:由一个shell终端启动的进程,在执行过程中需要与用户进行交互
    • 批处理进程:该进程是一些进程的集合,负责按顺序启动其他进程
    • 守护进程:该进程是一种一直运行的进程,用于执行特定的任务。

    在Linux中,进程ID(PID)是区分不同进程的唯一标识,它的大小是有限制的,最大ID为32768。用UID和GID分别表示启动这个进程的用户和用户组;PPID表示进程的父进程。

    2、查看进程

    2.1、ps

    显示进程在瞬间的运行状态。命令语法如下:

    ps [选项]

    常用选项:

    • -a:显示所有用户的进程,包含每个程序的完整路径
    • -x:显示所有系统进程,包括那些没有终端的程序
    • -u:显示使用者的名称和起始时间
    • -f:详细显示程序执行的路径
    • -e:将除内核以外所有进程的信息显示在标准输出

    常用命令组合有ps -ef和ps -aux,这里来看下两个组合的详解:

    ps –ef

    1

    各列详解:

    • UID:启动进程的用户ID
    • PID:进程ID
    • PPID:进程的父进程ID
    • C:进程的CPU占用率
    • STIME:进程启动的时间
    • TTY:启动进程的终端
    • TIME:进程使用CPU时间
    • CMD:带启动参数的进程路径及名称

    ps –aux

    2

    各列详解:

    • USER:启动进程的用户
    • PID:进程ID
    • %CPU:进程CPU使用率
    • %MEM:进程内存使用率
    • VSZ:进程完全驻留内存需要的大小
    • RSS:进程实际使用内存大小
    • TTY:启动进程的终端
    • STAT:进程的状态。可能的值有以下几种,D - 不可中断;R - 正在运行或在队列中;S - 休眠;T - 停止或被追踪;I - 空闲;Z - 僵尸;P - 等待交换页;X - 死掉;< – 高优先级;N - 低优先级;s - 包含子进程;+ - 位于后台的进程组
    • START:进程启动的时间
    • TIME:进程使用CPU时间
    • COMMAND:进程名称及完整路径

    额外的:显示中使用[]括起来的进程为系统进程。

    2.2、top

    用于实时查看进程的系统占用状态,同时可以显示当前系统负载和CPU内存等状况。命令语法如下:

    top

    top命令的回显可以分为以下两部分:

    3

    第一部分主要是系统当前的负载、各种状态的进程数量、CPU和内存负载,每行具体内容如下:

    • top:运行top命令时的时间  系统启动时间  当前登录系统的用户数量  系统一分钟、五分钟和十五分钟负载
    • Tasks:各种状态的进程数量,分别为total - 进程总数;running - 正在运行;sleeping - 睡眠;stopped - 停止;zombie - 僵尸
    • %CPU(s):CPU占用时间,分别为us - 用户占用;sy - 内核占用;ni - 用户进程提升优先级后占用;id - 空闲;wa - 等待磁盘写入;hi - 处理硬中断时间;si - 处理软中断时间;st - 虚拟机占用。如果是多核CPU,可以按1展开查看每个CPU核心的信息
    • KiB Mem:物理内存使用
    • KiB Swap:交换分区使用。内存的使用在下一篇查看系统负载中详细描述(free命令)。

    第二部分显示的是系统中进程的实时信息,各列含义如下:

    • PID:进程ID
    • USER:启动进程的用户
    • PR:进程优先级
    • NI:nice值
    • VIRT:进程完全驻留内存需要的大小
    • RES:进程实际使用内存大小
    • SHR:共享内存使用大小
    • S:进程状态
    • %CPU:CPU使用
    • %MEM:内存使用
    • TIME+:累计CPU使用时间
    • COMMAND:执行的命令

    额外的:在top界面下按f键可以修改显示的列。

    2.3、lsof

    用于列出进程打开的文件。若系统中没有安装,使用yum install lsof安装即可。命令语法如下:

    lsof [选项] [参数]

    常用选项:

    • -p:显示进程打开的所有文件,参数为PID
    • -c:显示进程打开的所有文件,参数为进程名
    • -i:通过监听指定的协议、端口号,显示符合条件的进程,参数为[tcp|udp]:port
    • -u:列出指定UID的进程详情,参数为UID
    • -g:列出指定GID的进程详情,参数为GID

    lsof -c显示详解:

    1

    列详解

    • COMMAND:进程名
    • PID:进程ID
    • USER:启动进程的用户
    • FD:文件描述符
    • TYPE:文件类型
    • DEVICE:指定磁盘的名称
    • SIZE/OFF:文件大小
    • NODE:文件inode号
    • NAME:文件路径及文件名

    2.4、pgrep

    通过程序名查询PID。命令语法如下:

    pgrep [选项] 程序名

    常用选项:

    • -o:仅显示找到的最小(起始)PID
    • -n:仅显示找到的最大(结束)PID
    • -l:显示进程名称
    • -f:使用完全的进程名匹配

    3、杀死进程

    3.1、kill

    根据指定的PID杀死进程。命令语法如下:

    kill [信号类型] PID

    信号类型决定了kill如何结束一个进程,通过kill –l可以查看所有的信号类型。常用的信号类型有:

    • SIGKILL,9,强制结束进程
    • SIGTERM,15,正常结束进程,kill的缺省选项
    • SIGINT,2,结束进程,但并不是强制性的,通过Ctrl+c发出的就是一个kill -2信号

    额外的:我们通常使用以下的kill选项来检测一个进程是否存在

    kill -0 PID
    # 当进程存在时,命令正常执行,返回值为0;进程不存在时,命令执行失败,返回值非0

    3.2、killall

    根据指定的进程名杀死一个或一组进程。命令语法如下:

    killall [信号类型] 进程名
  • 相关阅读:
    random模块的讲解
    函数的商城代码练习
    python文件作业
    函数的学习
    三元表达式和列表生成式
    jQuery 遍历方法
    CSS font属性综合写法
    JQuery 添加节点
    Bootstrap 响应式中的兼容
    jQuery 中的attr和prop的区别
  • 原文地址:https://www.cnblogs.com/yu2006070-01/p/9995978.html
Copyright © 2011-2022 走看看