#21 在Linux里进程管理详解,与pstree、ps、pgrep、pkill、pidof、top命令的应用

简介:

进程管理:

  所谓进程:process,一个活动的程序的实体的副本;

    生命周期;

    可能包含一个或多个执行流;


  创建进程:

    每个进程的组织结构是一致的:


    内核在正常启动并且全面接管硬件资源之后,会创建一个init的进程;而这个名叫init的进程负责用户空间的进程管理;


    centos5及以前:sysV init,classic init

      有缺陷:在启动系统时,init通过写脚本的方式来创建各个子进程;利用shell来实现,因此其执行速度非常慢;导致系统的启动速度和进程的创建速度都非常慢;


    centos6:upstart,由Ubuntu研发的新型的init进程;可以并行的启动某些有关联的服务进程,在创建进程的时候,可以多线创建进程;如果有多个CPU或者有多颗CPU核心的话,其进程的创建速度会有比较明显的变化;第一个进程名称仍然是init;


    centos7:systemd,参考了Mac OS的启动逻辑开发一款新版的init程序,其可以以其自身独立完成整个操作系统的启动工作;也就是说,在开机并加载内核之后,只需要启动一个systemd进程就可以将其他各服务进程启动起来,从而引导整个系统启动;


    /sbin/init

    /sbin/systemd


    除了init进程之外,其他 的各个进程都是由其父进程创建的;


    由fork()系统调用来实现的;


    每个父进程通过fork()系统调用,复制自身的数据给子进程使用;这种复制方式不是立即复制,而是写时复制(cow);


  终止进程:

    任务父进程创建的子进程都必须由父进程亲自销毁;


    任何的进程的父子关系都保存在task struct中;


  进程优先级:

    0-139

    1-99:实时优先级,数字越大优先级越高;在系统启动时启动的进程;

    100-139:静态优先级,数字越小优先级越高;在用户执行某些应用程序的时候启动的进程;


    nice值:

      -20~19:默认的nice值0;


      只有管理员才能使用负整数的nice值,以提升进程的优先级;

      而普通用户只能使用正整数的nice值,以降低进程的优先级;


    划分了140个进程队列;


    big O标准:

      O(1),O(logn),O(N),O(N^2),O(2^N)


  进程的分类:

    按照进程的启动方式;

      守护进程:

        daemon,通常是在系统引导的过程被启动的,与任何的终端无关;也可以通过终端启动;

      用户进程:

        用户登录到系统之后,通过终端启动的进程;


    按照进程的运行位置:

      前台进程:

        在进程启动之后,进程一直占用标准输出或者标准输入或者同时占用标准输出和标准输入;

      后台进程:

        在进程启动之后,进程不占用标准输出和标准输入;


    按照进程对于资源消耗:

      cpu-bond:非交互式的进程;

      io-bond:编辑器等各种交互式进程;



Linux系统上与进程有关的命令(查看命令和管理类命令):

  pstree,ps,pidof,pgrep,pkill,top,htop,glances,dstat,pmap,vmstat,bg,fg,jobs,kill,killall,nohup,nice,renice,...


pstree:

  pstree - display a tree of processes

  

ps:

  ps - report a snapshot of the current processes.


  ps [options]


  1   UNIX options, which may be grouped and must be preceded by a dash.

  2   BSD options, which may be grouped and must not be used with a dash.

  3   GNU long options, which are preceded by two dashes.


  常用选项:

    a:显示所有与终端相关的进程;

    x:显示所有与终端无关的进程;

    u:显示发起进程的用户的账户名称;


    常用的选项组合之一:aux


  ps aux命令像是的结果中各字段的含义:

    USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

    USER:进程的所有者

    PID:进程标识符

    %CPU:进程占用的CPU处理时间的百分比;

    %MEM:进程占用的物理内存的百分比;

    VSZ:虚拟内存集(可交换内存集)

    RSS:常驻内存集的

    TTY:进程与哪个终端相关;?表示与终端无关;

    STAT:

      R:running,正在运行的进程;

      S:interuptible sleeping,可中断的睡眠状态;

      D:unintelligible sleeping,不可中断的睡眠状态;disk block;

      T:trace/stopped,被跟踪/已停止;

      Z:zombie,僵死态;

      +:前台进程

      l:包含多线程的进程;

      <:高优先级进程

      N:低优先级进程

      s:session leader,有子进程的父进程;

    START:进程开始执行的时候时间戳

    TIME:进程累计的CPU占用时间;

    COMMAND:启动进程的命令行参数;


  UNIX风格的选项:

    -e:显示所有进程

    -f:显示完整格式的进程信息

    -F:显示完整格式的进程信息,与-f几乎相同;

    -H:以层级机构宣誓进程的父子关系

    o| -o field1,field2,...:以自定义字段的方式显示进程相关信息;

      field:pid,ppid,ni,rtprio,psr,pcpu,stat,comm,user,tty,vsz,rss,...


    常用的选项组合之二:-ef

      PPID:父进程PID

      C:表示进程占用的CPU时间的百分比


    常用的选项组合之三:-eF

      SZ:虚拟内存集

      RSS:常驻内存集

      PSR:表示此进程在哪个CPU核心上运行;


    常用的选项组合之四:-eFH


    常用的选项组合之五:-eo | axo fielde1,fielde2,...


pgrep, pkill:

  pgrep, pkill - look up or signal processes based on name and other attributes


    根据进程名称或其他属性查看进行或向进程发送信号;

  pgrep [options] pattern

  pkill [options] pattern


    常用选项:

      -u uid:显示进程的有效用户;

      -U uid:显示进程的真是用户;

      -t TERM:显示与指定的终端相关的进程;

      -l:显示进程名称;

      -a:显示进程的完整的命令行参数;


pidof:

  显示指定进程名称对应的进程ID;


top:

  top - display Linux processes

  top首部:

  第一行:uptime信息;

    当前系统时间

    系统的运行时长

    当前登录系统的用户总数

    过去的1分钟,5分钟,15分钟的在CPU上等待运行的进程队列的平均长度


  第二行:

    系统中运行的进程总数

    正在运行的进程数

    处于睡眠状态的进程数

    已停止的进程数

    僵死态的进程数


  第三行:CPU时间占用百分比

    us:user space,用户空间的进程占用的CPU时间的百分比;

    sy:system,内和空间的内核进程占用的CPU时间的百分比;

    ni:nice,使用nice值调整了进程优先级之后额外多占用的CPU时间百分比;

    id:idle,CPU空闲时间的百分比;

    wa:waiting,等待IO完成所消耗的CPU时间的百分比

    hi:hardware interupting,处理硬件中断时间所消耗的CPU时间的百分比;

    si:software interupting,处理软件中断时间所消耗的CPU时间的百分比;

    st:stolen,被虚拟化程序等偷走的CPU时间的百分比


  第四行:以KB为单位显示物理内存空间的使用情况;

    total:物理内存空间的总大小;

    free:空闲的物理内存空间大小;

    userd:已经被使用的物理内存空间大小;

    buffer/cache:缓冲区和缓存区消耗的物理内存空间大小;这段内存空间随时可以回收,不算真正的消耗;

    avail mem:真正可用的内存空间大小;


  第五行:以KB为单位显示swap空间的使用情况;

    total:虚拟内存空间的总大小

    used:已经被使用的虚拟内存空间大小;

    free:空闲的虚拟内存空间大小;


  交互式命令:

    1:显示或隐藏CPU核心信息;

    P:根据CPU占用百分比进行排序;

    M:根据物理内存占用百分比进行排序;

    T:根据累计CPU占用时间进行排序;

    l:关闭或显示uptime信息;

    t:关闭或显示第二、第三行信息;

    m:关闭或显示第四、第五行信息;

    q:退出top交换模式;

    s:修改top的刷新时间间隔;

    k:终止某个指定PID的进程的运行


  常用的选项:

    -d #:指定top刷新的时间间隔,默认是3秒;

    -b:按批次显示进程信息

    -n #:通常与-b选项一起使用,表示显示多少批;



本文转自谁等了谁 51CTO博客,原文链接:http://blog.51cto.com/12486569/1948224
相关文章
|
6月前
|
监控 Shell Linux
Linux进程控制(详细讲解)
进程等待是系统通过调用特定的接口(如waitwaitpid)来实现的。来进行对子进程状态检测与回收的功能。
131 0
|
6月前
|
存储 负载均衡 算法
Linux2.6内核进程调度队列
本篇文章是Linux进程系列中的最后一篇文章,本来是想放在上一篇文章的结尾的,但是想了想还是单独写一篇文章吧,虽然说这部分内容是比较难的,所有一般来说是简单的提及带过的,但是为了让大家对进程有更深的理解与认识,还是看了一些别人的文章,然后学习了学习,然后对此做了总结,尽可能详细的介绍明白。最后推荐一篇文章Linux的进程优先级 NI 和 PR - 简书。
201 0
|
6月前
|
存储 Linux Shell
Linux进程概念-详细版(二)
在Linux进程概念-详细版(一)中我们解释了什么是进程,以及进程的各种状态,已经对进程有了一定的认识,那么这篇文章将会继续补全上篇文章剩余没有说到的,进程优先级,环境变量,程序地址空间,进程地址空间,以及调度队列。
133 0
|
6月前
|
Linux 调度 C语言
Linux进程概念-详细版(一)
子进程与父进程代码共享,其子进程直接用父进程的代码,其自己本身无代码,所以子进程无法改动代码,平时所说的修改是修改的数据。为什么要创建子进程:为了让其父子进程执行不同的代码块。子进程的数据相对于父进程是会进行写时拷贝(COW)。
182 0
|
Linux
百度搜索:蓝易云【Linux系统ps命令:查看正在运行的进程】
通过这些简洁的ps命令用法,你可以方便地查看Linux系统中正在运行的进程信息。
258 1
|
安全 Linux 应用服务中间件
linux(三十一)系统信息命令ps查看系统进程
linux(三十一)系统信息命令ps查看系统进程
449 1
|
存储 监控 Linux
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 查看当前正在运行的进程信息 ps命令 使用指南
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 查看当前正在运行的进程信息 ps命令 使用指南
449 0
|
监控 Linux 应用服务中间件
探索Linux中的`ps`命令:进程监控与分析的利器
探索Linux中的`ps`命令:进程监控与分析的利器
418 13
|
调度
crash命令 —— ps
crash命令 —— ps
|
存储 Docker 容器
在Docker中,容器退出后,通过docker ps命令查看不到,数据会丢失么?
在Docker中,容器退出后,通过docker ps命令查看不到,数据会丢失么?

热门文章

最新文章