9-17 linux进程查看和管理

Linux进程查看与管理

OS的基本功能:文件系统、网络功能、进程管理、内存管理、驱动程序、安全功能

程序=指令+数据

CPU:
  特权指令
  普通指令

程序执行环境:
  内核模式:运行内核级指令
  用户模式:运行普通指令

应用程序:
   运行普通指令:直接运行于CPU
   运行特权指令:通过system call

内存:8bits, 1byte
  32bits, 2^32, 0-2^32-1, 2^10*2^10*2^10*2^2 bytes = 2^10*2^10*2^2 kilo bytes = 2^10*2^2 MB = 4GB
  64bits, 2^64, 4billions 4G

4G: 1G, kernel
      3G, app

ROM+RAM
  ROM, RAM

地址空间:
  物理地址空间
  线性地址空间

IPC: Inter Process Communication
  同一主机:
   signal
   semerphor
   shm (shared memory)

不同主机:
   rpc: remote procedure call
   socket:

进程调度:

多任务:多进程同时运行
   抢占式多任务

进程分类:
   CPU bound: CPU密集型
   I/O bound: IO密集型

进程优先级:
   140:0-139
    1-99:实时优先级,数字越大优先级越高
    100-139:数字越小,优先级越高;
     静态优先级
     动态优先级

算法时间复杂度:Big O
    O(1)
    O(logn)
    O(n)
    O(n^2)
    O(2^n)

进程创建:
  请求发出者:进程
   进程:fork(), clone()

COW: Copy On Writing
    写时复制

进程的状态:
  运行态:running
  睡眠态:sleeping
   可中断睡眠:interruptible
   不可中断睡眠: uninterruptible
    被IO阻塞的进程
  就绪态:runnable
  停止态:stopped,不可被调度为运行状态;
  僵死态:zombie

进程管理:
  task struct: 用于保存每个进程元数据信息
   例如:pid, ppid, memory, thread, files

task list: 用一种称作“链表”的数据结构来保存每个进程的task struct

进程切换:context switch
   保存现场:
   恢复现场:

OS: 提供虚拟的计算机,进而能够将有限资源借助于“保护”机制分配多个同时运行的程序,即“进程”使用,从而实现了所谓的多任务;

进程:
  线程:tread
   共享进程的资源,如打开文件等;
   更轻量的、可被单独调度的运行单元;

LWP:Light Weight Process

Linux进程查看及管理工具:top, pstree, ps, pidof, pgrep, pkill, htop, glances, pmap, vmstat, dstat, iostat, sar, kill, job, bg, fg

Linux系统上除init以外的所有子进程,都是由其父进程fork()自身而来,遵循COW机制;进程展现为“进程树”;

pstree命令:
   进程树查看;
   -p: 显示各进程的PID;

ps: process state

Linux运行中的内核的相关信息是通过/proc伪文件系统输出的;各进程都有一个以其PID命名的子目录,每个子目录中有许多文件存储了进程的相关状态信息;

显示的是ps命令执行时,系统上当前进程状态信息的快照;所以,为静态结果;

支持众多选项:
    BSD风格
    SysV风格

根据进程启动时是否是通过终端上的用户接口交互式启动的,进程可分为两类:
    与终端相关的进程: a
    与终端无关的进程: x

以用户为中心组织进程状态信息显示:u

常用选项组合1:axu
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

VSZ: Virtual memory Size
      线性地址空间占用的空间大小;
     RSS:常用驻内存集;指不可以被交换至swap空间的数据占据空间大小;

STAT:进程状态
      R: running,运行状态;
      S:interruptible sleeping,可中断睡眠
      D:uniterruptible sleeping, 不可中断睡眠
      T: stopped
      Z: zombie

s: session leader
      +: 前台进程,占据着某终端
      l: 多线程进程
      <: 高优先级进程
      N: 低优先级进程

START: 启动时间
     TIME: 占据CPU累积时长
     COMMAND: 启动当前进程或线程的命令行程序,[]表示为内核线程;

常用选项组合2: -ef
    -e: 显示所有进程;
    -f: 显示丰富格式信息

常用选项组合3:-eFH
    -F: 显示额外信息
    -H: 以层级形式显示进程间关系;

自定义需要显示的信息:axo
    ps axo pid,command,psr,pri,ni
     psr: 当前进程运行的CPU编号;
     pri: 当前进程的优先级;
     ni: 当前进程的nice值;
      -20, 19

pgrep:
   语法格式:pgrep [OPTIONS] "PATTERN"
    -U UID:仅显示以指定用户身份运行的进程;
    -G GID
    -l: 显示PID和进程名;

pidof:
   pidof PROGRAM
    PROGRAM: 给定命令行程序

top命令:
   有许多交互式的子命令;
    P:以占据的CPU百分比大小排序;
    M:以占据Memory空间大小排序;
    T:CPU累积占用时间排序;

l: 是否显示系统负载行;
     队列长度的合理区间:CPU颗数*0.7
    t: 是否显示进程摘要信息及CPU负载状态;
     Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
      us: user space
      sy: system (kernel space)
      ni: nice
      id: idle
      wa: wait io
      hi: hardware interrupt
      si: software interrupt
      st: stolen, 被虚拟机“偷走”的百分比
    1:平均或单独显示CPU的负载状态;
    m: 是否显示内存相关的状态信息;

q: 退出命令
    s: 修改延迟时长
    k: 终止指定进程

top命令的选项:
    -b: batch,批次显示
    -n #: 显示的批次数量
    -d #: 指明延迟时长

uptime命令: 显示当前系统时间,运行时长,登录用户数及系统平均负载;

命令总结:pstree, ps, pgrep, top, uptime, pidof
 
 
回顾:
  进程管理
    task struct: 每个进程的元数据信息,例如进程的pid,ppid, thread, files
    task list: 任务列表,链表
   
    进程的线性地址空间:
      Text Segment
      Data Segment
      BSS Segment
      Heap     
      Stack
     
    进程状态:
      就绪态,运行态,睡眠(可中断,不可中断),停止态,僵死态
     
    进程优先级:
      实时优先级
      静态优先级:
 100-139
      动态优先级
   
  进程查看基本工具:pstree, ps, top, pidof, pgrep, uptime
    ps: axu, -ef, -eFH, axo
    top: P,M,T,l,t,m,s,q,k
   
Linux进程查看与管理(2)
 
    htop:
      交互式命令:
 u: 过滤仅显示选定用户的进程;
 s: 跟踪选定的进程所发起的系统调用;
 l: 显示选定进程所打开的文件;
 t: 显示进程的层次结构;
 a: 设定进程的cpu亲缘性;(将选定的进程绑定在指定的CPU上)
 
      选项:
 -d #: 延迟时长
 -u USERNAME: 仅显示指定用户的进程;
 -s COLUMN: 根据指定的字段进行排序;
 
    vmstat命令:
   
      用法:vmsate [delay [count]]
     
      procs:
 r: 等待运行的进程的个数;(队列长度)
 b:处理不可中断睡眠状态的进程的个数;(即IO阻塞队列长度)
     
      memory:
 swpd: 交换内存使用量;
 free: 空间的物理内存量;
 buffer: 用于buffer的内存总量;
 cache: 用于cache的内存总量;
     
      swap:
 si: 数据进入swap中的速率(kb/s)
 so: 数据离开swap的速率(kb/s)
     
      io
 bi: 从块设备读入数据到系统的速率(kb/s)
 bo: 保存数据至块设备的速率(kb/s)
     
      system
 in: 中断速率
 cs: 进程切换的速率
     
      cpu
 us:
 sy:
 id:
 wa:
 st:
 
    选项:
      -s:显示内存的状态统计数据
     
    /proc/#接口:
 
    pmap: 查看指定进程的内存映射关系;
      pmap [OPTIONS] pid...
 -x: 显示扩展信息
 
      cat /proc/#/maps
     
    glances:
      glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [--password] [-t refresh] [-f file] [-o output]
     
      常用选项:
 -b: 以Byte/s为单位显示网卡设备数据交换速率;
 -d: 关闭磁盘I/O功能模块;
 -f /PATH/TO/SOMEFILE:设置输出文件的位置及格式;
 -o {HTML|CSV}:
 -m: 关闭mount功能模块
 -n: 关闭网络功能模块
 -r: 关闭进程列表功能模块
 -t #: 指定延迟时长,默认为3秒;
 -1:单独显示每颗CPU相关负载数据信息;
 
      glances支持远程模式:
   即可以以C/S模式工作:
       Server: 以监听模式启动glances;
       Client: 以远程模式启动glances,远程连入指定服务器,并Server上的相关性能数据;
      
   服务模式:
     glances -s -B IPADDR
       -B: 用于指明监听的本地地址;
      
   客户端模式:
     glances -c IPADDR
       -c: 用于连入的服务器的地址;
    
    dstat: 整合了vmstat, iostat, netstat and ifstat四款工具的功能;
      dstat [-afv] [options..] [delay [count]]
     
  -c: 显示cpu性能指标相关的统计数据;
  -d: 显示disk相关的速率数据;
  -g: 显示page相关的速率数据;
  -i: 显示interrupt相关的速率数据;
  -l: 显示load average相关的统计数据;
  -m: 显示memory相关的统计数据;
  -n: 显示网络收发数据的速率;
  -p: 显示进程相关的统计数据,
  -r: io请求的速率;
  -s: 显示swap的相关数据
  -y: 显示系统相关的数据,包括中断和进程切换;
  
  --top-cpu:显示最占用CPU的进程;
  --top-bio:显示最消耗block io的进程;
  --top-io:最占用io的进程;
  --top-mem:显示最占用内存的进程;
  
  --ipc: 显示进程间通信相关的速率数据;
  --raw: 显示raw套接的相关的数据;
  --tcp: 显示tcp套接字的相关数据;
  --udp: 显示udp套接字的相关数据;
  --unix: 显示unix sock接口相关的统计数据;
  --socket:
  
  -a: -cdngy
 
      IPC: 进程间通信
   常见形式:
     message queue
     semerphore
     shared memory
     signal
    
    signal: 传递给进程的短小信息
  Linux主机支持的进程间可用到的信息:
  (1) kill -l
  (2) man 7 signal
  
  向进程发信号:
   kill [-SIGNAL] PID
   默认的信号为SIGTERM;
   
   信号表示方式:
   (1) 完整名称,例如SIGINT
   (2) 简写名称,例如INT
   (3) 数据代称,例如2
   常用信号:
   SIGHUP: 1, 通知进程重读其配置文件以让新的配置生效,但不用重新启动进程;
   SIGINT:2, 打断正在运行中的进程,相当于键盘组合键Ctrl+c
   SIGKILL:9, 强行中止正在运行中的进程
   SIGTERM: 15, 安全中止正在运行中的进程
   SIGSTOP: 19, 暂停进程
   SIGCONT: 18, 继续运行指定进程
   
 kill相似的一组进程:
     killall [-SIGNAL] PROGRAM
    
    命令总结:htop, vmstat, glances, dstat, kill, killall
   
    作业管理:
 前台作业:通过终端启动,并且在停止之前也会一直占据终端;
 后台作业:作业启动之时与终端无关,或者是在前台启动,但启动后转为与终端无关模式运行;
 
 如何让作业运行于后台?
     1、对于已经启动并处于运行中的作业:
       Ctrl+z
      
       Note: 作业被送往后台后,默认处于stopped状态;
     2、对于尚未启动的作业:
       COMMAND &
      
     注意: 此两类方式相关作业,仍然与终端相关;这意味着,终端终止,将会导致与此终端相关的所有作业被终止;
    
     剥离进程与终端的关系:
       # nohup COMMAND &
   
 作业查看:
 
   jobs命令
     作业号、作业状态、启动命令行程序
    
   作业控制命令:
       fg [[%]job_num]:把指定的作业调回前台;
       bg [[%]job_num]:把调往后台的指定的作业启动起来,让其后台默默运行;但此作业必须支持运行于后台;
       kill [%job_num]:终止指定的作业;
      
 进程优先级调整:
     静态优先级:
  通过指定进程的nice值来调整其优先级;用户 空间运行的进程一般都有其nice值;
  nice值: -20, 19
  优先级:  100, 139
  
     默认启动进程时,其nice值为0, 其优先级为120;
    
     (1) 对于尚未启动的进程:
  # nice -n N COMMAND
  
     (2) 对于已经启动并处于运行中的进程:
  # renice -n N PID
  
     注意:普通用户仅能够调大nice,调低优先级;
    
 尚未讲到的命令:sar, iostat, ifstat, tsar;
 
    命令总结:jobs, fg, bg, nice, renice
   
    博客作业:进程管理工具htop/glances/dstat的使用;

时间: 2024-11-03 15:42:52

9-17 linux进程查看和管理的相关文章

Linux进程查看及管理的工具

Linux进程查看及管理的工具:pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup 1.pstree命令:    pstree - display a tree of processes    [[email protected] ~]# pstreeinit─┬─agetty     ├─auditd───{auditd}     ├─crond   

20150917 Linux进程查看与管理以及作业管理

第一.基础知识 MBR引导--内核--内核程序-->协调其它程序 一般内核运行在硬件之上,各应用也在硬件之前 1)OS的基本功能:文件系统.网络功能.进程管理.内存管理.驱动程序.安全功能 以上为通用目的设置的程序., 程序=指令+数据, 程序运行在内存当中.这个内存由物理内存映射逻辑空间 左则表示二个框分别表示指令和数据.物理内存划分固定大小的页框称为pageframe. 右则下面的方框表示物理内存.每个进程在右则上面的方框中,这部分为假的内存 空间称为线性地址空间. 2)CPU指令:  四个

Linux进程查看,管理工具

浅谈linux下进程查看,管理工具 1.pstree 显示进程树. 显示各个进程之间的关系 [[email protected] ~]# pstree init─┬─abrtd      ├─acpid      ├─atd      ├─console-kit-dae───63*[{console-kit-da}]      ├─crond      ├─cupsd      ├─dbus-daemon      ├─dhclient      ├─fcoemon      ├─hald─┬─

Linux进程查看与管理

(A).进程相关的概念 计算机实际上可以做的事情实质上非常简单,比如计算两个数的和,再比如在内存中寻找到某个地址等等.这些最基础的计算机动作被称为指令(instruction).程序(program)是由这些指令的集合所构成.程序一般是存储在磁盘上某个路径下的一个可执行文件,程序运行起来后,便成了进程(process),因此,进程便是程序的具体实现.因为Linux的哲学思想之一便是组合小程序,完成复杂任务,因此,要完成某功能可能需要启动多个小程序,因此,进程也会产生多个.进程都运行于内存当中.

Linux进程查看与管理、作业控制、网络客户端工具

写在前面: 博客书写牢记5W1H法则:What,Why,When,Where,Who,How. 本篇主要内容: ● 基础概念介绍 进程优先级 进程状态 ● 进程查看与管理命令     pstree     ps     pgrep/pkill     pidof     top     htop     vmstat     pmap     glances     dstat     kill     killall ● linux作业控制     nice     renice ● 网络客户

Linux学习笔记&mdash;&mdash;进程查看及管理

Linux进程查看和管理工具有很多 pstree命令:以树形方式显示进程 ps [OPTION]... 常用组合:aux u: 以用户为中心组织进程状态信息显示 a: 与终端相关的进程: x: 与终端无关的进程: 常用组合:-ef             -e: 显示所有进程              -f: 显示完整格式程序信息 常用组合:-eFH             -F: 显示完整格式的进程信息             -H: 以进程层级格式显示进程相关信息 常用组合:-eo, axo

Linux之进程查看与管理

                       Linux之进程查看与管理 1.进程的基本概念 进程是运行起来的程序.唯一标示进程的是进程描述符(PID),在linux内核中是通过task_struck和task_list来定义和管理进程的 进程分类:交互式进程.批处理进程.实时进程 交互式进程:一般是由Shell启动的进程.交互式进程有:控制台命令shell,文本编辑器,图形应用程序 批处理进程(Batch Process):不需要用户交互,一般在后台运行. 实时进程:这种进程不能被低优先级进程

Linux系统进程查看及管理工具

Linux系统进程查看及管理工具 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

linux 进程查看命令汇集

首先,向大家介绍一些linux查看进程的命令,pstree.ps.top.htop等,接下来为大家演示这几个常用命令. 1,  Linux ps命令: (1)linux 进程查看命令ps,常用命令为#ps aux 如图所示: 其中红色圈出部分: PID:进程号  %CPU:进程占用cpu比例  %MEM:进程占用内存比例  VSZ:虚拟内存占用比例  RSS:常驻内存级 (2)ps常用命令组合#ps –ef  如图所示: 其中,-e:显示所有进程  -f:显示完整格式 2,  linux top