zoukankan      html  css  js  c++  java
  • Linux进程管理

    1 引言

    进程是操作系统中的一个基本概念,是操作系统进行分配和资源管理的基本单位,从字面上可以理解可以认为进程就是“进行中的程序”,实际也确实是如此,因为进程本就是一个动态的概念,如果说程序是静止的,那么进程就是活动的、有生命的,是运行中的程序。

    2 进程

    为方便后续内容展开,先来介绍几个进程相关的概念。
    (1)进程的状态
    进程的整个生命周期包括5个状态:新建、就绪、阻塞、运行和终止,各状态的含义正如字面意思:
    新建:程序正在被创建
    就绪:程序正在等待CPU执行
    阻塞:程序正在等待某一事件发生,然后才能运行
    运行:程序已抢占到CPU资源,正在被执行
    终止:程序运行结束。
    其中的状态转换如下如所示。
    (2)父进程与子进程
    在程序执行过程中,可能会产生多个进程,每一个进程又可以创建新的进程,新创建的进程称为子进程,创建子进程的进程称为父进程。为区分不同的进程,每一个进程有一个PID属性,这是每一个进程的唯一标示,此外每一个进程还有一个PPID,指的是父进程的PID。
    (3)僵尸进程与孤儿进程
    孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。
    僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。

    3 查看进程

    查看进程有多种方法,通过ps命令是用的较多的一种方法。ps接受多种不同风格形式的参数(UNIX风格,BSD风格),但功能上没有多大区别,故只需要掌握一种即可,为方便记忆理解,本文也只介绍UNIX风格的命令参数使用。
    (1)查看所有进程
    • ps -e
    字段名
    PID
    TTY
    TIME
    CMD
    字段含义
    进程ID
    启动进程的终端名
    进程共占用CPU的时间
    启动进程的命令
    示例
    1
    00:00:06
    systemd
    • ps -ef
    字段名
    UID
    PID
    PPID
    C
    STIME
    TTY
    TIME
    CMD
    字段含义
    进程用户ID
    进程ID
    父进程ID
    CPU调度情况
    进程启动的时间
    启动进程的终端名
    进程共占用CPU的时间
    启动进程的命令
    示例
    root
    1
    0
    0
    07:36
    00:00:06
    /sbin/init
    另外还有ps -a 用于显示当前终端的所有进程,ps -A与ps-e显示信息完全一样。
    (2)指定字段进行查看
    • ps -eo pid,ppid,cmd
     
    (3)指定进程信息中包含字符串查找进程
    例如,查找所有进程中包含ssh字符串的进程:
    • ps -ef |grep ssh
    (4)输出指定字段
    只输出pid和ppid:
    • ps -ef -o pid,ppid
    (5)输出指定进程ID的进程信息
    • ps -p 5710 -o pid,ppid # 查看id为5710的进程信息
     
    最后对常用字段及其含义做一个列表总结:
    cmd
    启动进程的命令
    pcpu
    CPU利用率
    flags
    长格式F字段中的标志
    pgrp
    进程组ID
    tpgid
    控制TTY进程组ID
    cutime
    累计用户时间
    cstime
    累计系统时间
    utime
    用户时间
    min_flt
    次要页面错误数
    maj_flt
    主要页面错误数
    cmin_flt
    累积次要页错误
    cmaj_flt
    累积主要页面错误
    session
    会话ID
    pid
    进程ID
    ppid
    父进程ID
    rss
    常驻集大小
    resident
    常驻页面
    size
    内存大小(以千字节为单位)
    share
    共享页数
    tty
    控制TTY的终端号
    start_time
    启动进程的时间
    uid
    用户ID
    user
    用户名
    vsize
    总虚拟机大小(kib)
    priority
    内核调度优先级
    更多内容不再介绍,事实上,更多详细信息可以通过man ps来查看具体使用方法。
     
  • 相关阅读:
    日记功能发布
    功能小改进
    CuteEditor 6.0一个很奇怪的Bug
    关于博客园.NET俱乐部的公告
    新功能发布
    建立了一个博客园创业者QQ群
    思想决定生活 《卡耐基成功之道全书》读书笔记
    建立了一个英语学习小组
    实际上我没有选择的余地
    公告
  • 原文地址:https://www.cnblogs.com/chenhuabin/p/10902128.html
Copyright © 2011-2022 走看看