Linux进程管理常见命令pstree top

Linux进程管理常见命令pstree top

进程相关概念

  • 内核功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等

  • 进程(process)定义

    进程=程序+数据+进程控制块PCB(线性、索引、链表)

    广义:是计算机中一个具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。

    狭义:是正在运行的程序的实例。

  • 进程特点:①是一个实体,每个进程都有自己的地址空间(文本区、数据区、堆栈)。②是一个"运行中的程序"的副本,载入内存的活动的实体。是区别于程序是静态的一组指令的集合。③进程有生命周期,由操作系统来调度。④进程具有并发性和共享性等性质⑤进程对文件系统的访问权限取决于进程发起者和上下文语境决定

  • 进程的创建

    init:第一个进程(父进程)

  • 进程三种重要状态和转换

    扫描二维码关注公众号,回复: 5830009 查看本文章

    进程三态转换B.png

    1、运行态Running:正在被CPU调度执行

    2、阻塞态Blocked:等待某种条件满足前,暂时无法运行。

    3、就绪态Ready:所有资源已齐备,等待分配CPU立即执行(万事俱备,只欠CPU)

    4、睡眠态:

                    可中断:interruptable

                    不可中断:uninterruptable

     5、停止态:stopped,暂停于内存,除非手动启动,不会被调度

     6、僵死态:zombie,

  • 进程类型:

    1、守护进程: daemon,在系统引导过程中启动的进程,和终端无关进程

    2、前台进程:与终端相关,通过终端启动的进程

    两者可相互转化

    A、CPU-Bound:CPU密集型,非交互

    B、IO-Bound:IO密集型,交互

    I、系统进程:Kernel 系统空间

    II、用户进程:用户空间

    进程在系统中用唯一的ID(非负)标识,进程结束后ID被其他进程重用。

    PID 0:调度进程,内核一部分,系统进程

    PID 1:  init进程,普通用户进程,超级用户特权运行

    PID 2:  页守护进程,虚拟存储分页操作

  • 进程调度方式及算法

    1、抢占式:

    2、非抢占式:

    先来先服务(FCFS)和短作业优先、高优先权优先、基于时间片的轮询、多级反馈队列算法

  • 线程

    操作系统调度的基本单位;

    不拥有资源,共享同一进程资源,切换速度快开销小;

    一个进程至少有一个线程,且是它的主线程

LRU算法

Least Recently Used最近最少使用,根据历史访问记录来淘汰数据,核心思想是“如果数据最近被访问过,将来被访问的几率也更高”。采用链表保存缓存数据:新数据插到表头,当命中将数据移至表头,表满淘汰尾部数据。

LRU算法A.png

进程优先级

实时优先级:0-99

非实时优先级:100-139

系统优先级A.png

Centos优先级B.png

nice值:-20~19 共40级,值越高,优先级越低;静态优先级,renice 修改才会变;

静态优先级100~139

进程默认启动时的nice值为0,优先级为120

只有root用户才能调整nice值来提高优先级

renice -10 ping 127.0.0.1

chrt 可以调整实时优先级

线程

        1、单个进程中执行中每个任务就是一个线程,线程是进程中执行运算的最小单位。

        2、一个进程可以拥有多个线程,一个线程只能属于一个线程

        3、线程没有地址空间,线程包含在进程的地址空间中。

        4、操作系统通过多线程并发处理,来提高事务效率。

IPC进程间通信

  • 同一主机:pipe |  管道

                     socket 套接字

                     signal  信号

                     shm  共享内存

  • 不同主机:

                 socket  IP+port 网络通信

                 RPC 远程过程调用

                 MQ  消息队列的

系统管理工具
Linux系统状态查看、管理主要工具有:pstree、ps、pidof、pgrep、top、htop、glance、pmap、vmstat、dstat、kill、pkill、job、bg、fg、nohup

pstree命令

以树状图的方式直观展示进程之间的父子关系。   

      pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]

      常用选项:

       -a 显示每个程序的完整指令,包含路径、参数等

       -c 禁用相同子树的压缩。默认相同子树会被压缩精简显示。

       -n 按进程PID数值从小到大排序(相同父进程的子进程也会依此排序),默认按进程名asccii码值排序

       -p 显示进程和PID

        pstree -ps #PID :显示该PID进程的父子关系(centos7独有)

       -u 显示用户名

       -g 显示PGIDs。如果同时PIDs和PGIDs,则PIDS优先(centos7独有)

ps命令

        ps [OPTION]

        report a snapshot of the current processes

        Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中

        支持三种风格的OPTION:

        UNIX选项  ~]#ps -a

        BSD选项    ~]#ps a

        GNU选项   ~]#ps --user

1、ps选项:默认什么都不加 ps ,显示当前终端中的进程

  • a   包括所有终端中的进程

  • x   包括不链接终端的进程(跟终端无关的,如有些开机自动运行的进程)

  • u   显示进程所有者的信息

  • f   显示进程树,相当于--forest(可以看到父进程,效果不如pstree -p 直观)

  • k|--sort  属性 对属性排序,属性前加- 表示倒序

  • o  属性… 选项显示定制的信息 pid、cmd、%cpu、%mem (只显示自己关心的指定信息)

  • L 显示支持的属性列表 (eg:ps L  表示ps支持哪些属性给你打印出来)

        ps axo pid,%cpu,%mem,cmd --sort %cpu效果等同

        ps axo pid,%cpu,%mem,cmd k %cpu

2、PS常见选项

  • -C cmdlist 指定命令,多个命令用,分隔 (ps hello.sh例子中,使用/bin/bash hello.sh方式运行或者hello.sh脚本没有蛇棒机制的第一行。使用ps -C hello.sh 去查看进程是否有hello.sh这个命令时就查询不到。)

  • -L 显示线程 (注意与上面ps L 区别,这里是 ps -L)

  • -e: 显示所有进程,相当于-A

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

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

    -H: 以进程层级格式显示进程相关信息

    -u userlist  指定有效的用户ID或名称

    -U userlist 指定真正的用户ID或名称

    -g gid或groupname  指定有效的gid或组名称

    -G gid或groupname  指定真正的gid或组名称

    -p pid 显示指pid的进程

    --ppid pid  显示属于pid的子进程

    -M  显示SELinux信息,相当于Z

    如:vmtoolsd(6193,6193)───{vmtoolsd}(6262,6193),这样有花括号的就是线程,小括号的就是进程。

3、PS输出属性

  1. VSZ:Virtual memory SiZe,虚拟内存集,线性内存

  2. RSS:ReSident Size, 常驻内存集

  3. STAT:进程状态

        R:running

        S: interruptable sleeping

        D: uninterruptable sleeping

        T: stopped

        Z: zombie

        +: 前台进程

        l : 多线程进程

        L:内存分页并带锁

        N:低优先级进程

        <: 高优先级进程

    s: session leader,会话(子进程)发起者

    ps axo pid,cmd,user,ruser,nice,pri,rtprio 比较系统优先级,实时优先级,nice优先级,容易混淆

常用组合

     ps aux | axo | -ef | -eFH | -eo

    结合watch命令实时监控:watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head' 

    结合grep命令:ps aux | grep httpd

pgrep命令

    增强版的 "ps 选项 | command",功能更丰富,支持:

①预定义模式:

    pgrep [options] pattern 

          -u uid: effective user,生效者 

          -U uid: real user,真正发起运行命令者 

          -t terminal: 与指定终端相关的进程 

          -l: 显示进程名 

          -a: 显示完整格式的进程名 

          -P pid: 显示指定进程的子进程 

②按确切的程序名称

          pgrep pidof bash

uptime和w

uptime:显示当前时间,系统已启动的时间、当前上线人数,系统平均负载(1、5、15分钟的平均负载,一般不会超过1) 

w:比uptime更丰富的系统状态信息

常用选项

    -f  开启或关闭显示用户从何处登入系统。

    -h  不显示各栏位的标题信息列。

    -l  使用详细格式列表,此为预设值。

    -s  使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的CPU时间。

    -u  忽略执行程序的名称,以及该程序耗费CPU时间的信息。

04:27:43 up  7:02,  1 user,  load average: 0.00, 0.01, 0.05

USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT

root     pts/1    192.168.111.1    02:08    7.00s  0.27s  0.02s w

格式解读:

第一行含义同uptime

第二行:

    USER:显示登录系统的用户名

    TTY:用户登录的终端类型/号

    FORM:显示用户从何处登录的,本地登录(centos6是-;centos7是空的),远程登录则显示远程IP或主机名

    LOGIN@:用户登录系统是在什么时间

    IDLE:用户闲置时间。一旦执行操作,此计时器将重置。

    JCPU:以终端的代号区分显示,表示该终端所有相关的进程(process)执行时所消耗的cpu时间。每当进程结束就停止计时,开始新的进程则会重新计时。

    PCPU:表示CPU执行程序耗时。

    WHAT:用户正在执行的程序名

top命令

动态显示系统状态信息

VIRT:virtual memory usage 虚拟内存

RES:resident memory usage 常驻内存

SHR:shared memory 共享内存

1、栏位信息简介

    us:用户空间  

    sy:内核空间 

    ni:调整nice时间 

    id:空闲 

    wa:等待IO时间 

    hi:硬中断  

    si:软中断(模式切换) 

    st:虚拟机偷走的时间 

2、排序:

       P:以占据的CPU百分比,%CPU 

       M:占据内存百分比,%MEM 

       T:累积占据CPU时长,TIME+ 

       首部信息显示: 

          uptime信息:l命令 

          tasks及cpu信息:t命令 

          cpu分别显示:1 (数字) 

          memory信息:m命令 

       退出命令:q 

       修改刷新时间间隔:s 

       终止指定进程:k 

       保存文件:W 

3、选项:

        -d #  指定刷新时间间隔,默认为3秒 

        -b  全部显示所有进程 

        -n #  刷新多少次后退出 

        -H   线程模式,示例:top -H -p `pidof mysqld` 

4、 htop命令:EPEL源

 选项: 

         -d #: 指定延迟时间; 

         -u UserName: 仅显示指定用户的进程 

         -s COLUME: 以指定字段进行排序 

子命令: 

          s:跟踪选定进程的系统调用 

          l:显示选定进程打开的文件列表 

          a:将选定的进程绑定至某指定CPU核心 

          t:显示进程树 


猜你喜欢

转载自blog.51cto.com/yesppg/2376255