一、关于进程

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

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

最主要的进程信息包括:

  • 进程的地址空间图
  • 进程当前的状态( 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的信号列表:

  1. [root@web ~]# kill -l
  2. ) SIGHUP ) SIGINT ) SIGQUIT ) SIGILL ) SIGTRAP
  3. ) SIGABRT ) SIGBUS ) SIGFPE ) SIGKILL ) SIGUSR1
  4. ) SIGSEGV ) SIGUSR2 ) SIGPIPE ) SIGALRM ) SIGTERM
  5. ) SIGSTKFLT ) SIGCHLD ) SIGCONT ) SIGSTOP ) SIGTSTP
  6. ) SIGTTIN ) SIGTTOU ) SIGURG ) SIGXCPU ) SIGXFSZ
  7. ) SIGVTALRM ) SIGPROF ) SIGWINCH ) SIGIO ) SIGPWR
  8. ) SIGSYS ) SIGRTMIN ) SIGRTMIN+ ) SIGRTMIN+ ) SIGRTMIN+
  9. ) SIGRTMIN+ ) SIGRTMIN+ ) SIGRTMIN+ ) SIGRTMIN+ ) SIGRTMIN+
  10. ) SIGRTMIN+ ) SIGRTMIN+ ) SIGRTMIN+ ) SIGRTMIN+ ) SIGRTMIN+
  11. ) SIGRTMIN+ ) SIGRTMIN+ ) SIGRTMAX- ) SIGRTMAX- ) SIGRTMAX-
  12. ) SIGRTMAX- ) SIGRTMAX- ) SIGRTMAX- ) SIGRTMAX- ) SIGRTMAX-
  13. ) SIGRTMAX- ) SIGRTMAX- ) SIGRTMAX- ) SIGRTMAX- ) SIGRTMAX-
  14. ) SIGRTMAX- ) SIGRTMAX 

常用信号:

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

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

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

三、ps命令

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

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

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

  命令使用案例:

列出所有进程:

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

列出类似进程树的程序:

  1. [root@web ~]# ps axjf
  2. PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
  3. ? - S : [kthreadd]
  4. ? - S< : \_ [kworker/:0H]
  5. ? - S : \_ [kworker/u256:
  6. ? - S : \_ [ksoftirqd/]
  7. ? - 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 命令可以实时显示系统当前活跃进程的总体信息及其占用的资源。

  1. top - :: up :, user, load average: 0.00, 0.01, 0.05
  2. Tasks: total, running, sleeping, stopped, zombie
  3. %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
  4. KiB Mem : total, free, used, buff/cache
  5. KiB Swap: total, free, used. avail Mem
  6.  
  7. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
  8. root S 0.3 0.0 :01.19 xfsaild/dm+
  9. root S 0.0 0.8 :02.00 systemd
  10. root S 0.0 0.0 :00.00 kthreadd
  11. root - S 0.0 0.0 :00.00 kworker/:+
  12. root S 0.0 0.0 :00.57 kworker/u2+
  13. root S 0.0 0.0 :00.74 ksoftirqd/
  14. 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.系统运行时间和负载情况:
  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.任务:
  1. Tasks: total, running, sleeping, stopped, zombie

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

3.CPU状态:
  1. %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.内存使用:
  1. KiB Mem : total, free, used, buff/cache
  2. KiB Swap: total, free, used. avail Mem
第一行是物理内存使用,第二行是虚拟内存使用(交换空间)
内存显示以KB为单位,物理内存显示如下:全部可用内存、空闲内存、已使用内存、缓冲内存。 交换部分显示的是:全部、空闲、已使用、总的可使用内存。
5.各进程任务状态监控:
  1. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
  2. root S 0.0 0.8 :01.71 systemd
  3. root S 0.0 0.0 :00.00 kthreadd
  4. 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. PHP实现微信扫码自动登陆与注册,参考实例

    微信开发已经是现在phper必须要掌握的一项基本的技术了,其实做过微信开发的都知道微信接口非常的强大做起来也非常的简单,这里我们一起来看一个微信自动登陆注册的例子. php 微信扫码 pc端自动登陆注 ...

  2. js 注意事项使用误区

    1.加法注意事项 2.浮点数注意事项 3.js,数组需使用数字作为下标索引,不支持关联数组的用法.对象不能混淆使用数组的length方法,并且不能使用数字作为下标,得使用属性值作为下标使用,否则会返回 ...

  3. Flask request和response

        Response # -*- coding: utf-8 -*-   from flask import Flask, redirect, render_template, jsonify,  ...

  4. 易优CMS:compare的基础用法

    [基础用法] 名称:compare 功能:简单的变量比较,复杂的判断条件可以用if标签替换,比较标签是一组标签的集合,基本上用法 都一致. 语法: {eyou:比较标签 name='变量' value ...

  5. Redis Python(二)

    Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.NoSQL(Not only SQL)1.泛指非关系数据库2.不支持SQL语法3.存储结构与传统的关系型数据库 ...

  6. phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)

    漏洞详情 范围 phpMyAdmin 4.8.0和4.8.1 原理 首先在index.php 50-63行代码 $target_blacklist = array ( 'import.php', 'e ...

  7. SAP用户角色分配函数权限

    事务码 PFCG修改角色 选择[权限缺省] 选择 RFC 输入的函数只能是允许远程连接的函数,否则不能调用和添加到角色. 完成添加.

  8. SVN安装及其汉化

    1.百度搜索SVN,点击官网进去 2.点击download进入下载页面,选择合适的安装包 3.当前页面往下拉,看到汉化包下载页面,要注意版本 4.2个下载完,先安装软件在安装汉化包,要注意软件和汉化包 ...

  9. MySQL数据库~~~~~索引

    1. 索引 索引在MySQL中也叫"键"或者"key",是存储引擎于快速找到记录的一种数据结构. 索引的数据结构: B+树 B+树性质: 索引字段要尽量小; 索 ...

  10. 数据库事务系列-MySQL跨行事务模型

    说来和MySQL倒是有缘,毕业的第一份工作就被分配到了RDS团队,主要负责把MySQL弄到云上做成数据库服务.虽说整天和MySQL打交道,但说实话那段时间并没有很深入的理解MySQL内核,做的事情基本 ...