一、关于进程

  进程: 已经启动的可执行程序的运行实力

  进程的组成:一个进程包含内核中的一部分地址空间和一系列数据结构。其中地址空间是内核标记的一部分内存以供进程使用,而数据结构则用来纪录每个进程的具体信息。

最主要的进程信息包括:

  • 进程的地址空间图
  • 进程当前的状态( sleeping、stopped、runnable 等)
  • 进程的执行优先级
  • 进程调用的资源信息
  • 进程打开的文件和网络端口信息
  • 进程的信号掩码(指明哪种信号被屏蔽)
  • 进程的属主
PID :进程 ID

每个进程都会从内核获取一个唯一的 ID 值。绝大多数用来操作进程的命令和系统调用,都需要用 PID 指定操作的进程对象。

PPID :父进程 ID

在 Unix 和 Linux 系统中,一个已经存在的进程必须“克隆”它自身来创建一个新的进程。当新的进程克隆后,最初的进程便作为父进程存在。

UID & EUID:真实用户 ID 和有效用户 ID

一个进程的 UID 是其创建者的身份标志(也是对其父进程 UID 的复制)。通常只有进程的创建者和超级用户才有操作该进程的权限。
EUID 是一个额外的 UID,用来决定在任意一个特定时间点,一个进程有权限访问的文件和资源。对绝大多数进程而言,UID 和 EUID 是相同的(特殊情况即 setuid)

Niceness

一个进程的计划优先级决定了它能获取到的 CPU 时间。内核有一个动态的算法来计算优先级,同时也会关注一个 Niceness 值,来决定程序运行的优先顺序。

二、信号

  信号属于进程级别的中断请求。它们可以作为进程间通信的手段,或者由终端发送以杀死、中断、挂起某个进程。

  Linux的信号列表:

[root@web ~]# kill -l
) SIGHUP ) SIGINT ) SIGQUIT ) SIGILL ) SIGTRAP
) SIGABRT ) SIGBUS ) SIGFPE ) SIGKILL ) SIGUSR1
) SIGSEGV ) SIGUSR2 ) SIGPIPE ) SIGALRM ) SIGTERM
) SIGSTKFLT ) SIGCHLD ) SIGCONT ) SIGSTOP ) SIGTSTP
) SIGTTIN ) SIGTTOU ) SIGURG ) SIGXCPU ) SIGXFSZ
) SIGVTALRM ) SIGPROF ) SIGWINCH ) SIGIO ) SIGPWR
) SIGSYS ) SIGRTMIN ) SIGRTMIN+ ) SIGRTMIN+ ) SIGRTMIN+
) SIGRTMIN+ ) SIGRTMIN+ ) SIGRTMIN+ ) SIGRTMIN+ ) SIGRTMIN+
) SIGRTMIN+ ) SIGRTMIN+ ) SIGRTMIN+ ) SIGRTMIN+ ) SIGRTMIN+
) SIGRTMIN+ ) SIGRTMIN+ ) SIGRTMAX- ) SIGRTMAX- ) SIGRTMAX-
) SIGRTMAX- ) SIGRTMAX- ) SIGRTMAX- ) SIGRTMAX- ) SIGRTMAX-
) SIGRTMAX- ) SIGRTMAX- ) SIGRTMAX- ) SIGRTMAX- ) SIGRTMAX-
) SIGRTMAX- ) SIGRTMAX 

常用信号:

9)SIGKILL:用来立即结束程序的运行。本信号不能被阻塞、处理和忽略。

15)SIGTERM:程序结束(terminate)信号。与SIGKILL不同的是该信号可以被阻塞和处理。通常用来要求程序自己正常(优雅地)退出。shell命令kill缺省产生这个信号。

19)SIGSTOP:停止(stopped)进程的执行。注意它和terminate以及interrupt的区别:该进程还未结束,只是暂停执行。本信号不能被阻塞、处理或忽略。

三、ps命令

  简介:ps 命令就是最根本相应情况下也是相当强大地进程查看命令.运用该命令可以确定有哪些进程正在运行和运行地状态、 进程 是否结束、进程有没有僵死、哪些进程占用了过多地资源等等.总之大部分信息均为可以通过执行该命令得到

  命令常用参数:ps【选项】

-e 显示所有进程,环境变量
-f 全格式
-h 不显示标题
-l 长格式
-w 宽输出
a
显示终端上地所有进程,包括其他用户地进程

  命令使用案例:

列出所有进程:

[root@web ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 0.0 0.7 ? Ss : : /usr/lib/syste
root 0.0 0.0 ? S : : [kthreadd]
root 0.0 0.0 ? S< : : [kworker/:0H]
root 0.0 0.0 ? S : : [kworker/u256:
root 0.0 0.0 ? S : : [ksoftirqd/]
[root@web ~]# ps ef
PID TTY STAT TIME COMMAND
pts/ Ss : -bash USER=root LOGNAME=root HOME=/root PATH=/usr/lo
pts/ S : \_ bash XDG_SESSION_ID= HOSTNAME=172.16.234.111 TE
pts/ R+ : \_ ps ef XDG_SESSION_ID= HOSTNAME=172.16.234.1

列出类似进程树的程序:

[root@web ~]# ps axjf
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
? - S : [kthreadd]
? - S< : \_ [kworker/:0H]
? - S : \_ [kworker/u256:
? - S : \_ [ksoftirqd/]
? - S : \_ [migration/]

-l : 列出和当前用户有关的进程   -u 用户 : 查看某一用户的进程状态

进程的五种状态码表示:

  • D 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
  • R 运行(正在运行或在运行队列中等待)
  • S 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
  • T 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行
  • Z 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)

ps -aux 参数解释

  • %CPU:占用的CPU使用率
  • %MEM:占用的记忆体 / 内存使用率
  • VSZ:占用虚拟记忆体 / 内存大小
  • RSS:占用的记忆体 / 内存大小
  • TTY:终端的次要装置号码 / 线路
  • STAT:该进程的状态
  • START:进程开始时间
  • TIME:执行的时间
  • COMMAND:所执行的指令

注:在 STAT 栏目中:

  1. < 表示高优先级
  2. n 表示低优先级
  3. s 包含子进程
  4. + 位于后台的进程组

四、top命令

查看实时的进程状态,实现动态监控进程,top 命令可以实时显示系统当前活跃进程的总体信息及其占用的资源。

top - :: up  :,   user,  load average: 0.00, 0.01, 0.05
Tasks: total, running, sleeping, stopped, zombie
%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
KiB Mem : total, free, used, buff/cache
KiB Swap: total, free, used. avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
root S 0.3 0.0 :01.19 xfsaild/dm+
root S 0.0 0.8 :02.00 systemd
root S 0.0 0.0 :00.00 kthreadd
root - S 0.0 0.0 :00.00 kworker/:+
root S 0.0 0.0 :00.57 kworker/u2+
root S 0.0 0.0 :00.74 ksoftirqd/
root rt S 0.0 0.0 :00.00 migration/

top 命令的 -d 选项可以指定信息刷新的时间间隔。同时还有一些常用的交互命令

  • K:杀死一个进程,后面接进程的PID和指定需要处理的信号;默认值为15,强制杀死进程为9
  • M:按驻留内存使用率大小排序
  • P:按CPU使用率百分比大小排序
  • q:退出top程序
  • s:修改两次信息刷新的时间间隔,默认单位为秒
  • W:将当前设置写入~/.toprc文件中

top命令一些信息字段含义:

1.系统运行时间和负载情况:
top - :: up  :,   users,  load average: 0.00, 0.01, 0.05
  1. 系统当前时间
  2. 系统已运行的时长
  3. 登陆用户数量
  4. 系统在5分钟、10分钟、15分钟的负载情况;

注意 load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了

2.任务:
Tasks:   total,    running,   sleeping,    stopped,    zombie

Task-任务,分别显示任务进程的总数量以及正在运行、睡眠、停止、僵死的进程数

3.CPU状态:
%Cpu(s):  1.0 us,  1.0 sy,  0.0 ni, 98.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
  • us:用户空间占用CPU的百分比
  • sy:系统空间占用CPU的百分比
  • ni:改变过优先级的进程占用CPU的百分比
  • id:空闲CPU的百分比
  • wa:IO等待占用CPU的百分比
  • hi:处理硬件中断的CPU时间(Hardware IRQ)
  • si:处理软件中断的CPU时间(Software Interrupts)
  • st:这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)

注:在这里CPU的使用比率和windows概念不同,如果你不理解用户空间和内核空间——>传送门:https://www.cnblogs.com/sparkdev/p/8410350.html

4.内存使用:
KiB Mem :    total,    free,     used,    buff/cache
KiB Swap: total, free, used. avail Mem
第一行是物理内存使用,第二行是虚拟内存使用(交换空间)
内存显示以KB为单位,物理内存显示如下:全部可用内存、空闲内存、已使用内存、缓冲内存。 交换部分显示的是:全部、空闲、已使用、总的可使用内存。
5.各进程任务状态监控:
   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
root S 0.0 0.8 :01.71 systemd
root S 0.0 0.0 :00.00 kthreadd
root - S 0.0 0.0 :00.00 kworker+

PID:进程ID,进程的唯一标识符

USER:进程所有者的实际用户名。

PR:进程的调度优先级。这个字段的一些值是'rt'。这意味这这些进程运行在实时态。

NI:进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级

VIRT:进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

RES:驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

SHR:SHR是进程使用的共享内存。共享内存大小,单位kb

S:这个是进程的状态。它有以下不同的值:

  • D - 不可中断的睡眠态。
  • R – 运行态
  • S – 睡眠态
  • T – 被跟踪或已停止
  • Z – 僵尸态

%CPU:自从上一次更新时到现在任务所使用的CPU时间百分比。

%MEM:进程使用的可用物理内存百分比。

TIME+:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。

COMMAND:运行进程所使用的命令。进程名称(命令名/命令行)

还有许多在默认情况下不会显示的输出,它们可以显示进程的页错误、有效组和组ID和其他更多的信息。


参考:

https://www.cnblogs.com/zhoug2020/p/6336453.html

https://www.cnblogs.com/ftl1012/p/top.html


关于Linux下进程的详解【进程查看与管理】的更多相关文章

  1. Linux下ps命令详解 Linux下ps命令的详细使用方法

    http://www.jb51.net/LINUXjishu/56578.html Linux下的ps命令比较常用 Linux下ps命令详解Linux上进程有5种状态:1. 运行(正在运行或在运行队列 ...

  2. Linux下top命令详解

    Linux下top命令详解 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.top是一个动态显示过程,即可以通过用户按键来不断刷 ...

  3. Linux下rar命令详解

    Linux下rar命令详解 用法: rar <命令> -<选项1> ….-<选项N> < 操作文档> <文件…> <@文件列表…> ...

  4. linux下tar命令详解

     linux下tar命令详解    tar是Linux环境下最常用的备份工具之一.tar(tap archive)原意为操作磁带文件,但基于Linux的文件操作机制,同样也可适用于普通的磁盘文件.ta ...

  5. Linux下chkconfig命令详解(转)

    Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. ...

  6. Linux知识积累(4) Linux下chkconfig命令详解

    Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. ...

  7. 转载的 Linux下chkconfig命令详解

    Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. ...

  8. Linux下桥接模式详解一

    注册博客园已经好长时间,一直以来也没有在上面写过文章,都是随意的记录在了未知笔记上,今天开始本着分享和学习的精神想把之前总结的笔记逐步分享到博客园,和大家一起学习,一起进步吧! 2016-09-20  ...

  9. linux下IPTABLES配置详解 (防火墙命令)

    linux下IPTABLES配置详解 -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 24000 -j ACCEPT ...

  10. 转 linux下cat命令详解

    linux下cat命令详解 http://www.cnblogs.com/perfy/archive/2012/07/23/2605550.html 简略版: cat主要有三大功能:1.一次显示整个文 ...

随机推荐

  1. Java每日一面(Part2数据库)[19/11/28]

    作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 1.如何设计一个关系型数据库 如上图,首先划分成两大部分: ​ 1.存储部分:类似一个文件系统,把数据存储到一个持久化设备中,如机械硬盘,固态等 ​ ...

  2. 下拉框移动 jquery

    <%@ page contentType="text/html;charset=UTF-8" language="java" %><html& ...

  3. 搭建ES集群

    服务版本选择 TEG的ctsdb当前最高版本采用的是es的6.4.3版本,为了日后与ctsdb衔接方便,部署开源版es时也采用该版本.6.4.3版本的es依赖的jdk版本要求在8u181以上,测试环境 ...

  4. 设置UICollectionViewCell圆角和阴影

    设置cell圆角: cell.contentView.layer.cornerRadius =2.0f; cell.contentView.layer.borderWidth =1.0f; cell. ...

  5. c#串口通信并处理接收的多个参数

    最近摸索做个上位机,简单记录一下关键的几个部分 c#做串口通信主要使用的是System.IO.Ports类,其实还是十分方便的 最终效果如下: 千万不要忘记了下面这个 填写串口相关配置 我们可以通过G ...

  6. mysql初始化/usr/local/mysql/bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory

    [root@test153 ~]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql - ...

  7. [洛谷P1169][题解][ZJOI2007]午餐

    这是题目吗? 显然的DP,讲几个重要的地方 1.贪心:让吃饭时间长的先排队(证明从略) 2.状态: f[i][j][k]代表前i个人,一号时间j,二号时间k显然MLE 所以压缩成f[i][j]代表前i ...

  8. PDF软件

    推荐的PDF阅读软件:文电通

  9. Centos7下Redis设置开机自启动服务

    有个同事说重启了服务器没有自启动redis,我看了一下,是以前手动编译安装的模式,没有配置开机启动的服务 这边做个笔记记录一下redis如何设置编译安装模式的开机自启动. 第一种方法: 1.编写red ...

  10. 一、I/O模型之BIO

    I/O模型之BIO 基本介绍 Java BIO 就是传统的 Java IO 编程,其相关的类和接口再 java.io 包下 BIO(blocking I/O):同步阻塞,服务器实现模式为一个连接一个线 ...