Linux进程查看与管理

静态结构:重底层开始往上

底层:硬件

kernel(OS):各硬件接口封装成简洁的接口

库:将内核功能封装成功能模块,供程序员研发使用

OS的基本功能:文件系统、网络功能、进程管理、内存管理、驱动程序、安全功能

动态结构:重底层开始往上

底层:bios,

内核:通过BTR启动内核程序

程序:程序=指令+数据;

CPU:特权指令(系统调用);普通指令

程序执行环境:内核模式:运行内核级指令

用户模式:运行普通指令

应用程序:运行普通指令:直接运行于CPU

运行特权指令:通过system call

进程:运行中的程序,运行在自己专有的内存空间

内存:cpu在内存中取数据;存指令;存数据;程序运行于内存空间;

内存空间:物理内存映射到逻辑内存,编程中在逻辑内存做个假设,在映射到物理内存来。在逻辑内存中的连续数据可能到物理内存页框中可能就不连续存储。

地址空间:物理地址空间;线性地址空间

线性地址空间:每一个内存都运行在自己的逻辑空间,然后要映射到物理内存空间。每一个进程的线性地址空间,都遵循一定的规范;在最底端是指令且是只读的,接着初始值为零和不为零的数据;接着是堆和栈,对内存的实时调取。

32bits: 2^32, 0-2^32-1, 2^10*2^10*2^10*2^2 bytes = 2^10*2^10*2^2 kilo bytes = 2^10*2^2 MB = 4GB

64bits: 2^64, 4billions 4G

4G空间分配: 1G, kernel;3G(2.7G), app

进程创建:每一进程是有他的父进程fork()创建而来;

parent(进程)-----> fork()----->child;子进程发起fork调用,创建复制fork的子进程,且共同使用同一个内存地址空间。

COW: Copy On Writing写时复制;当子进程要修改进程的数据时,新建一个复制fork的进程,使用自己的地址空间。

进程:fork(), clone()

COW: Copy On Writing

写时复制

进程回收:销毁进程使用destroy

进程追踪:内核内存空间中,创建task struct(任务结构)。

task struct: 用于保存每个进程元数据信息。

例如:pid, ppid, memory, thread, files

进程调度:cpu通常只能跑一个进程,其他进程等待。

进程的上下文切换:进程按照固定时间轮询,中间结果如何都会存入自己内核的task struct(任务结构)中。下次运行时,直接从自己内核的task struct(任务结构)中上次暂停的地方调用(相当于挂起,重新载入)。

进程优先级:140个,0-139

1-99:实时优先级,数字越大优先级越高

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

多任务:多进程同时运行;抢占式多任务

算法时间复杂度:Big O衡量

O(1)

O(logn)

O(n)

O(n^2)

O(2^n)

进程分类:

CPU bound: CPU密集型

I/O bound: IO密集型

进程的状态:

运行态:running

睡眠态:sleeping

可中断睡眠:interruptible,随时唤醒到cpu

不可中断睡眠: uninterruptible,被IO阻塞的进程,等待磁盘调用完毕才能执行

就绪态:runnable

停止态:stopped,不可被调度为运行状态;

僵死态:zombie,父进程意外中止,子进程还运行,一般会指定init或systemctl

线程:tread,并行编程模式。一个进程内部自我管理执行的多个执行流。将多个执行流运行在一个CPU上的多个内核上。

LWP:Light Weight Process;对于linux,线程就是进程,进程也是线程。

Linux进程查看及管理工具:top, pstree, ps, pidof, pgrep, pkill, htop, glances, pmap, vmstat, dstat, iostat, sar, kill, job, bg, fg

命令:

pstree:进程树查看;

-p: 显示各进程的PID;

ps:process state

Linux运行中的内核的相关信息是通过/proc伪文件系统输出的;各进程都有一个以其PID命名的子目录,每个子目录中有许多文件存储了进程的相关状态信息;

显示的是ps命令执行时,系统上当前进程状态信息的快照;所以,为静态结果;

根据进程启动时是否是通过终端上的用户接口交互式启动的,进程可分为两类:

与终端相关的进程: a

与终端无关的进程: x

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

支持众多选项:BSD风格;SysV风格,-引导

常用选项组合1:axu

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

VSZ: Virtual memory Size;线性地址空间占用的空间大小;

RSS:常用驻内存集;指不可以被交换至swap空间的数据占据空间大小;

STAT:进程状态

R: running,运行状态;

S:interruptible sleeping,可中断睡眠

D:uniterruptible sleeping, 不可中断睡眠

T: stopped

Z: zombie

s: session leader;

+: 前台进程,占据着某终端

l: 多线程进程

<:>

N: 低优先级进程

START: 启动时间

TIME: 占据CPU累积时长

COMMAND: 启动当前进程或线程的命令行程序,[]表示为内核线程;

常用选项组合2:-ef

-e: 显示所有进程;

-f: 显示丰富格式信息

常用选项组合3:-eFH

-F: 显示额外信息

-H: 以层级形式显示进程间关系;

自定义需要显示的信息:axo

ps axo pid,command,psr,pri,ni

psr: 当前进程运行的CPU编号;

pri: 当前进程的优先级;

ni: 当前进程的nice值;

-20, 19

pgrep:

语法格式:pgrep [OPTIONS] "PATTERN"

-U UID:仅显示以指定用户身份运行的进程;

-G GID

-l: 显示PID和进程名;

pidof:

pidof PROGRAM

PROGRAM: 给定命令行程序

top命令:

有许多交互式的子命令;

P:以占据的CPU百分比大小排序;

M:以占据Memory空间大小排序;

T:CPU累积占用时间排序;

l: 是否显示系统负载行;

队列长度的合理区间:CPU颗数*0.7

t: 是否显示进程摘要信息及CPU负载状态;

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

us: user space

sy: system (kernel space)

ni: nice

id: idle

wa: wait io

hi: hardware interrupt

si: software interrupt

st: stolen, 被虚拟机“偷走”的百分比

1:平均或单独显示CPU的负载状态;

m: 是否显示内存相关的状态信息;

q: 退出命令

s: 修改延迟时长

k: 终止指定进程

top命令的选项:

-b: batch,批次显示

-n #: 显示的批次数量

-d #: 指明延迟时长

uptime命令:显示当前系统时间,运行时长,登录用户数及系统平均负载;

htop:

u: 过滤仅显示选定用户的进程;

s: 跟踪选定的进程所发起的系统调用;

l: 显示选定进程所打开的文件;

t: 显示进程的层次结构;

a: 设定进程的cpu亲缘性;(将选定的进程绑定在指定的CPU上)

选项:

-d #: 延迟时长

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

-s COLUMN: 根据指定的字段进行排序;

vmstat命令:

用法:vmsate [delay [count]]

      procs:

r: 等待运行的进程的个数;(队列长度,每颗CPU的每个核心2-3个以内)

b:处理不可中断睡眠状态的进程的个数;(即IO阻塞队列长度)

memory:

swpd: 交换内存使用量;

free: 空间的物理内存量;

buffer: 用于buffer的内存总量;

cache: 用于cache的内存总量;

swap:

si: 数据进入swap中的速率(kb/s)

so: 数据离开swap的速率(kb/s)

io

bi: 从块设备读入数据到系统的速率(kb/s)

bo: 保存数据至块设备的速率(kb/s)

system

in: 中断速率

cs: 进程切换的速率

cpu

us: userd

sy:system

id:idel

wa:wait

st:stop

注意:wait过高,因为io速度不好,磁盘速率太慢;system过高,程序写的有问题。

选项:

-s:显示内存的状态统计数据

/proc/#接口:

pmap:查看指定进程的内存映射关系;

pmap [OPTIONS] pid...

glances:

glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [--password] [-t refresh] [-f file] [-o output]

常用选项:

-b: 以Byte/s为单位显示网卡设备数据交换速率;

-d: 关闭磁盘I/O功能模块;

-f /PATH/TO/SOMEFILE:设置输出文件的位置及格式;

-o {HTML|CSV}:

-m: 关闭mount功能模块

-n: 关闭网络功能模块

-r: 关闭进程列表功能模块

-t #: 指定延迟时长,默认为3秒;

-1:单独显示每颗CPU相关负载数据信息;

glances支持远程模式:

即可以以C/S模式工作:

Server: 以监听模式启动glances;

Client: 以远程模式启动glances,远程连入指定服务器,并Server上的相关性能数据;

服务模式:

glances -s -B IPADDR

-B: 用于指明监听的本地地址;

客户端模式:

glances -c IPADDR

-c: 用于连入的服务器的地址;

dstat: 整合了vmstat, iostat, netstat and ifstat四款工具的功能;

dstat [-afv] [options..] [delay [count]]

          -a: -cdngy

-c: 显示cpu性能指标相关的统计数据;

-d: 显示disk相关的速率数据;

-g: 显示page相关的速率数据;

-i: 显示interrupt相关的速率数据;

-l: 显示load average相关的统计数据;

-m: 显示memory相关的统计数据;

-n: 显示网络收发数据的速率;

-p: 显示进程相关的统计数据,

-r: io请求的速率;

-s: 显示swap的相关数据

-y: 显示系统相关的数据,包括中断和进程切换;

--top-cpu:显示最占用CPU的进程;

--top-bio:显示最消耗block io的进程;

--top-io:最占用io的进程;

--top-mem:显示最占用内存的进程;

--ipc: 显示进程间通信相关的速率数据;

--raw: 显示raw套接的相关的数据;

--tcp: 显示tcp套接字的相关数据;

--udp: 显示udp套接字的相关数据;

--unix: 显示unix sock接口相关的统计数据;

--socket:

signal:传递给进程的短小信息

Linux主机支持的进程间可用到的信息:

(1) kill -l

(2) man 7 signal

向进程发信号:

kill [-SIGNAL] PID

默认的信号为SIGTERM;

信号表示方式:

(1) 完整名称,例如SIGINT

(2) 简写名称,例如INT

(3) 数据代称,例如2

常用信号:

SIGHUP: 1, 通知进程重读其配置文件以让新的配置生效,但不用重新启动进程;

SIGINT:2, 打断正在运行中的进程,相当于键盘组合键Ctrl+c

SIGKILL:9, 强行中止正在运行中的进程

SIGTERM: 15, 安全中止正在运行中的进程

SIGSTOP: 19, 暂停进程

SIGCONT: 18, 继续运行指定进程

killall相似的一组进程:

killall [-SIGNAL] PROGRAM

作业管理:

前台作业:通过终端启动,并且在停止之前也会一直占据终端;

后台作业:作业启动之时与终端无关,或者是在前台启动,但启动后转为与终端无关模式运行;

如何让作业运行于后台?

1、对于已经启动并处于运行中的作业:

Ctrl+z

注意:作业被送往后台后,默认处于stopped状态;

2、对于尚未启动的作业:

COMMAND &

注意:此两类方式相关作业,仍然与终端相关;这意味着,终端终止,将会导致与此终端相关的所有作业被终止;

3、剥离进程与终端的关系:

# nohup COMMAND &

作业查看:

jobs命令

作业号、作业状态、启动命令行程序

作业控制命令:

fg [[%]job_num]:把指定的作业调回前台;

bg [[%]job_num]:把调往后台的指定的作业启动起来,让其后台默默运行;但此作业必须支持运行于后台;

kill [%job_num]:终止指定的作业;

进程优先级调整:

静态优先级:

通过指定进程的nice值来调整其优先级;用户 空间运行的进程一般都有其nice值;

nice值: -20, 19

优先级:  100, 139

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

(1) 对于尚未启动的进程:

# nice -n N COMMAND

(2) 对于已经启动并处于运行中的进程:

# renice -n N PID

注意:普通用户仅能够调大nice,调低优先级;

Linux进程 管理,Linux进程查看与管理以及作业控制相关推荐

  1. 【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-Chapter16-脚本控制

    十六.脚本控制 Linux 利用信号与系统中的进程进行通信. 重温 Linux 信号 Linux 系统和应用程序可以产生超过 30 个信号.在 shell 脚本编程时会遇到的最常见的 Linux 系统 ...

  2. Linux进程查看与管理

    Linux进程查看与管理(2) htop: 交互式命令: u: 过滤 s:跟踪选用的进程所发起系统调用 l:显示选定进程所打开的文件 t:显示进程的层次数 a:设定进程的cpu亲缘性:(将选定的进程绑 ...

  3. linux进程属主6,20150917 Linux进程查看与管理以及作业管理

    第一.基础知识 MBR引导--内核--内核程序-->协调其它程序 一般内核运行在硬件之上,各应用也在硬件之前 1)OS的基本功能:文件系统.网络功能.进程管理.内存管理.驱动程序.安全功能 以上 ...

  4. linux进程管理内存管理,Linux专业知识四:Linux系统进程管理及查看内存

    本文主讲Linux专业知识之Linux系统进程管理及查看内存的情况,以Redhat RHEL7操作系统为例. 一.进程 程序与进程:程序是静态的(文件),进程是动态的(运行的程序). 进程和线程:一个 ...

  5. linux常用进程管理工具及查看

    linux进程查看及管理工具 我们常用的进程管理工具有: pstree, ps, pidof, pgrep, top, htop, glance,dstat linux系统各进程的相关信息都保存于/p ...

  6. linux看不到进程管理,关于Linux下进程的详解【进程查看与管理】

    关于Linux下进程的详解[进程查看与管理] 一.关于进程 进程: 已经启动的可执行程序的运行实力 进程的组成:一个进程包含内核中的一部分地址空间和一系列数据结构.其中地址空间是内核标记的一部分内存以 ...

  7. linux进程的高级管理,Linux进程查看,管理工具

    浅谈linux下进程查看,管理工具 1.pstree 显示进程树. 显示各个进程之间的关系[root@test ~]# pstree init─┬─abrtd ├─acpid ├─atd ├─cons ...

  8. 高效管理 Linux 进程:如何后台执行程序、查看进程、终止任务

    目录 前言 一.nohup命令详解 1-1.nohup命令介绍 1-2.语法格式 1-2-1.基础语法介绍 1-2-2.执行脚本文件 1-2-3.执行python文件 1-2-4.拓展延申:在服务器上 ...

  9. Linux学习笔记_12_进程管理(ps, top)服务管理(service)查看系统网络(netstat)

    1. 进程的基本介绍 在 LINUX 中, 每个执行的程序(代码) 都称为一个进程. 每一个进程都分配一个 ID 号. 每一个进程, 都会对应一个父进程, 而这个父进程可以复制多个子进程. 例如 ww ...

最新文章

  1. 将uglifyjs添加到鼠标右键菜单
  2. 计算机注册表管理,学会注册表几个常用的设置,更好地管理自己的电脑!
  3. View的三大流程之View的测量
  4. UVA 1025 A Spy in the Metro DP水题
  5. java 计算两个时间戳_Java时间戳计算重叠持续时间与间隔
  6. qt同时两个动画执行_Qt 动画应用
  7. 用户输入和命令行参数
  8. linux进程睡眠的介绍
  9. 巴伦变压器电路图_基于变压器原理的巴伦电路系统分析
  10. 在java中实现订餐系统_Java实现简单订餐系统
  11. 【植被指数学习笔记】
  12. 基于C++的关键字检索系统
  13. 类和对象8:数值方法
  14. 数据库模型设计——历史表与版本号设计
  15. 亚马逊FBA箱子贴标有哪些要求
  16. 虚拟机(一)虚拟机安装Mysql
  17. javaJDK64位下载
  18. 移动UI 设计有哪些色彩级别
  19. Matlab机器学习(分类问题)中多个ROC曲线的绘制
  20. 广联达GTJ2018实战精准快速算量课程

热门文章

  1. CycleGAN:图片风格,想换就换 | ICCV 2017论文解读
  2. NVIDIA新作解读:用GAN生成前所未有的高清图像(附PyTorch复现) | PaperDaily #15
  3. HDU2553 N皇后 回溯法+打表
  4. android ge模拟器,在Android模拟器上的一些小陷阱
  5. mysql数据库约束无符号,MySQL所支持的数据类型与表字段约束类型的学习教程
  6. googlehelper手机版ios_二次元漫画控iOS苹果手机版下载v1.0.0下载|免费二次元漫画控iOS苹果手机版下载绿色版...
  7. Shrio 自定义算法登录认证
  8. php怎么看回调的异步通知的数据_php app支付宝回调(异步通知)详解
  9. 2022还在使用Mysql进行数据检索?ElasticSearch自定义扩展词库完成检索
  10. SQL server判断字符串是否包含某个字符串