#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
相关文章
|
2天前
|
算法 Linux 调度
深入理解Linux内核的进程调度机制
【4月更文挑战第17天】在多任务操作系统中,进程调度是核心功能之一,它决定了处理机资源的分配。本文旨在剖析Linux操作系统内核的进程调度机制,详细讨论其调度策略、调度算法及实现原理,并探讨了其对系统性能的影响。通过分析CFS(完全公平调度器)和实时调度策略,揭示了Linux如何在保证响应速度与公平性之间取得平衡。文章还将评估最新的调度技术趋势,如容器化和云计算环境下的调度优化。
|
4天前
|
监控 Linux
linux监控指定进程
请注意,以上步骤提供了一种基本的方式来监控指定进程。根据你的需求,你可以选择使用不同的工具和参数来获取更详细的进程信息。
10 0
|
5天前
|
消息中间件 监控 Linux
Linux进程和计划任务管理
通过这些命令和工具,你可以有效地管理Linux系统中的进程和计划任务,监控系统的运行状态并保持系统的稳定和可靠性。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
98 2
|
8天前
|
算法 Linux 调度
深度解析:Linux内核的进程调度机制
【4月更文挑战第12天】 在多任务操作系统如Linux中,进程调度机制是系统的核心组成部分之一,它决定了处理器资源如何分配给多个竞争的进程。本文深入探讨了Linux内核中的进程调度策略和相关算法,包括其设计哲学、实现原理及对系统性能的影响。通过分析进程调度器的工作原理,我们能够理解操作系统如何平衡效率、公平性和响应性,进而优化系统表现和用户体验。
18 3
|
11天前
|
监控 Java Linux
linux下监控java进程 实现自动重启服务
linux下监控java进程 实现自动重启服务
|
缓存 安全 Linux
【Linux】top指令的详情介绍
【Linux】top指令的详情介绍
340 0
【Linux】top指令的详情介绍
|
5月前
|
监控 网络协议 Linux
linux top指令
top指令 top - 21:18:54 up 48 min, 2 users, load average: 0.07, 0.02, 0.03 当前时间 系统运行时间 在线用户 负载数 3个总数不能超过70 Tasks: 279 total, 2 running, 277 sleeping, 0 stopped, 0 zombie 进程数 运行中 睡眠进程 停止进程 僵尸进程 -d秒数 默认是3秒 -i 使top不显示任何闲置或者僵死进程 -p 通过指定健康进程id来仅仅监控某个进程状态 top指令 P以cpu使用率排序 M以内存使用率排序 N以PID排序 q退出top 监控特定用户to
24 0
|
9月前
|
监控 Linux
linux基础top指令
top指令 top - 21:18:54 up 48 min, 2 users, load average: 0.07, 0.02, 0.03 当前时间 系统运行时间 在线用户 负载数 3个总数不能超过70 Tasks: 279 total, 2 running, 277 sleeping, 0 stopped, 0 zombie 进程数 运行中 睡眠进程 停止进程 僵尸进程 -d秒数 默认是3秒 -i 使top不显示任何闲置或者僵死进程 -p 通过指定
57 1
|
10月前
|
监控 网络协议 Linux
linux top指令
top指令 top - 21:18:54 up 48 min, 2 users, load average: 0.07, 0.02, 0.03 当前时间 系统运行时间 在线用户 负载数 3个总数不能超过70 Tasks: 279 total, 2 running, 277 sleeping, 0 stopped, 0 zombie 进程数 运行中 睡眠进程 停止进程 僵尸进程 -d秒数 默认是3秒 -i 使top不显示任何闲置或者僵死进程 -p 通过指定
54 0
|
缓存 监控 Linux
【Linux】top指令
【Linux】top指令
64 0