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来查看具体使用方法。
     
  • 相关阅读:
    LeetCode Count of Range Sum
    LeetCode 158. Read N Characters Given Read4 II
    LeetCode 157. Read N Characters Given Read4
    LeetCode 317. Shortest Distance from All Buildings
    LeetCode Smallest Rectangle Enclosing Black Pixels
    LeetCode 315. Count of Smaller Numbers After Self
    LeetCode 332. Reconstruct Itinerary
    LeetCode 310. Minimum Height Trees
    LeetCode 163. Missing Ranges
    LeetCode Verify Preorder Serialization of a Binary Tree
  • 原文地址:https://www.cnblogs.com/chenhuabin/p/10902128.html
Copyright © 2011-2022 走看看