zoukankan      html  css  js  c++  java
  • Linux系统学习(五)

    - Linux进程管理

    系统调用(system call): 运行在用户空间的程序向操作系统内核请求系统资源

    (获得更高权限);系统调用提供给用户程序与操作之间的接口

    内核功能:进程管理,文件系统,网络功能,内存管理,驱动程序等等

    程序: 通常是个二进制程序,放置存储介质中(内存/硬盘等),以实体文件存在

    进程:正在运行的程序;进程获取到的系统资源由执行者决定;程序(代码)会被加载到内存执行

    操作系统会给每个进程分配一个内存单元(识别码)

    - 进程的定义:程序运行的实例,系统上的每个程序都会运行在进程的上下文中

    - 进程出现的目的:是为了更好的利用CPU资源

    举例: A执行任务(读取数据)B想要执行任务,需要等待CPU资源空闲;当有了进程之后

    A执行任务(读取数据),进行"上下文件切换"A需要保存当前进程状态);

    B可以直接执行任务,当A任务完成后,cpu占用还给A (恢复A之前进程状态)

    - 进程拥有独立的内存空间;对我们来看:进程好似独占CPU

    线程

    协程

    进程创建:

    INIT进程: PID(1|0)的父进程

    父子进程: 进程都是由其父进程创建的(调动fork()函数)

    进程优先级:

    0-99: 实时优先级,数字越小,优先级越低

    100-139: 静态优先级,数字越小,优先级越高

    表现形式:通过Nice(-20,19)

    进程类型:

    前台进程:跟终端相关,通过终端启动的进程

    守护进程:在系统引导过程中启动的进程(也可以自定义守护进程:daemon()),跟终端无关

    Note: 前台进程也可以发往后台,以守护进程模式运行

    进程状态:

    运行态:running

    就绪态:ready  

    睡眠态:

    可中断: interruptable

    不可中断: uninterruptable

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

    僵尸态:Zombie

    僵尸进程:简单来说:就是有些进程已经运行完结束,但是占用的系统资源没有被回收

    进程分类:

    CPU - Bound

    IO - Bound : 不占用cpu

    - 进程管理工具: ........

    pstree命令:显示进程树

    常用参数:

    -g : 显示子进程Pid

    -p :显示Pid

    -s :显示父进程信息

    ps命令: report a snapshot of the current processes (输出当前系统进程信息)

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

    常用组合:aux

    a : 与终端相关的进程

    x :与终端无关的进程

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

    USER  PID      %CPU        %MEM        

    用户 pid号  CPU占用情况   内存占用情况

    VSZ :虚拟内存集

    RSS :常驻内存集

    TTY :终端

    STAT : 进程状态  

    R: Running

    S: interruptable

    D: uninterruptable

    T: stopped

    Z: Zombie

    +: 前台进程

    l: 多线程进程

    N:低优先级进程

    <: 高优先级进程

    s: session leader

    START : 启动时间   

    TIME :运行占用CPU的累积时长

    COMMAND :由哪个命令来启动的相关进程

    常用组合2ps -ef

    e : 显示所有进程

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

    常用组合3ps -eFH

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

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

    常用组合4ps eo, axo (输出自定义信息)

    To see every process with a user-defined format:

        ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm

        ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm

        ps -Ao pid,tt,user,fname,tmout,f,wchan

    自定项: STANDARD FORMAT SPECIFIERS(man手册中这一段帮助文档)

    top命令: 实时显示Linux processes

    top - 02:43:53 up 48 min,  1 user,  load average: 0.00, 0.01, 0.05

    02:43:53 up 48 min : 开始运行的时间 up 当前已经运行的时间

     1 user : 登录用户数量

     load average: 0.00, 0.01, 0.05 CPU平均负载; 1|5|15分钟的平均负载信息(uptime命令也可)

    Tasks: 121 total,   2 running, 119 sleeping,   0 stopped,   0 zombie

    进程任务数量 正在运行状态 睡眠状态 停止状态 僵尸状态

    %Cpu(s):  0.0 us,  0.1 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

    cpu占用相关信息:

    us: 表示用户态的CPU时间比例

    sy:表示内核态的CPU时间比例

    ni:运行低优先级进程的CPU时间比例

    id:空闲CPU时间比例

    wa:处于IO等待的CPU时间比例

    hi hard interrupt: 处理硬中断的CPU时间比例

    si soft interrupt: 处理软中断的CPU时间比例

    st steal:当前系统运行在虚拟机中的时候,被其他虚拟机占用的CPU时间比例

    KiB Mem :   997980 total,   539524 free,   100820 used,   357636 buff/cache

    内存  总量  空闲  使用量 buffer/cache 可用量

    KiB Swap:  2097148 total,  2097148 free,        0 used.   711396 avail Mem

    交换内存    总量    空闲量   使用量  可用量  

    内置命令:

    排序:

    P: 以占用CPU百分比排序

    M: 以占用内存百分比排序

    T: 以累积占用CPU时长排序

    首部信息提示:

    uptime信息: l命令

    taskcpu信息: t命令

    CPU分别显示信息: 1(数字)

    memory信息: m命令

    修改刷新时间间隔: s 命令(默认是3s刷新一次)

    终止指定进程:k命令

    退出命令: q命令

    选项:

    -d #:指定刷新时间间隔 默认为3s

    -b:以批次方式显示

    -n #:显示多少批次

    htop命令:

    内置命令:

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

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

    [: 将选定的进程绑定至某个指定的CPU核数上

    选项:

    -d #: 指定延迟时间

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

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

    vmstat命令:

    -n [延时|次数] : 每个多长时间输出一次;一共输出n

    -s : 显示内存统计信息

    vmstat 5 2

    输出信息:

    procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----

     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

     2  0      0 535084   2108 357696    0    0    14     7   26   24  0  0 100  0  0

    rrunning

    buninterruptable

    swapd: 交换内存总量

    ...

    si: 数据进入swap中的速率

    so:数据离开swap中的速率

    bi:数据从块设备到系统的速率

    bo:数据从系统到块设备的速率

    ininterrupts 中断速率

    cs: context switch 上下文切换速率(进程切换速率)

    kill命令:向进程发送控制信号,以实现进程管理

    显示当前可用信号: kill -l

    常用信号:

    1) SIGHUP : 让进程无需退出而重新读取配置文件

    2) SIGINT : 终止正在运行的进程

    9) SIGKILL:杀死正在运行的进程

    15) SIGTERM: 终止正在运行的进程

    指定信号的方式:

    信号的数字标识(*)

    信号的完整名称

    信号的简称

    向进程发起信号:

    kill [-Signal] PID

    终止"名称"之下的所有进程

    killall [-Signal] Promgram

    进程优先级调整:

    静态优先级: 100-139 可以手动修改

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

    修改:

    nice命令:Usage: nice [OPTION] [COMMAND [ARG]...]

    renice命令:

    Usage:

     renice [-n] <priority> [-p|--pid] <pid>...

     renice [-n] <priority>  -g|--pgrp <pgid>...

     renice [-n] <priority>  -u|--user <user>...

    [root@test ~]# renice -n 5 -p 2310

    2310 (process ID) old priority 0, new priority 5

  • 相关阅读:
    IE故障修复之点击无反应
    第三十四天 我为集成平台狂(七)-步履轻盈的JQuery(五)
    《世界如此险恶,你要内心强大》读书笔记(二)
    hbase phoenix char may not be null
    堆(优先级队列) 的应用
    JVM 调优总结
    Reactor模式和NIO
    JVM调优总结 -Xms -Xmx -Xmn -Xss
    Hadoop源码分析37 RPC的线程协作
    Hadoop源码分析37 RPC的线程协作
  • 原文地址:https://www.cnblogs.com/panfei-ywg/p/12785258.html
Copyright © 2011-2022 走看看