进程管理

1.进程概念

(1)内核的功用:

进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等

(2)进程: 运行中的程序的一个副本,是被载入内存的一个指令集合

当我们“执行一个程序或命令”就可以触发一个事件而取得一个PID,系统应该仅认识二进制文件,
那么当我们让系统工作的时候,就需要启动一个二进制文件,那个二进制文件就是程序。程序一般
放在磁盘中,然后通过用户的执行来触发。触发后会加载到内存中成为一个个体,那就是进程。

(3)进程ID(Process ID,PID)

被用来标记各个进程UID、GID、和SELinux语境决定对文件系统的存取和访问权限,通常从执行
进程的用户来继承存在生命周期。

(3)task struct:Linux内核存储进程信息的数据结构格式
(4)task list:多个任务的的task struct组成的链表
(5)进程创建:

init:第一个进程
  • 子进程与父进程
有时候我们杀掉一个进程,过一阵他又自动产生,而且产生的PID还和原先的不一样,如果不是crontab
工作调度的影响,肯定有父进程存在,杀掉子进程,父进程会再生一个,所以我们要先删除父进程
进程:都由其父进程创建,CoW
fork(), clone()【克隆】

2.进程优先级

(1)系统优先级:数字越小,优先级越高
0-139(CentOS4,5)
各有140个运行队列和过期队列
0-98,99(CentOS6)
(2)实时优先级: 99-0 值最大优先级最高
(3)nice值:-20到19,对应系统优先级100-139或99(-20优先级高)
image.png

3.Big O:时间复杂度,用时和规模的关系

O(1), O(logn), O(n)线性, O(n^2)抛物线, O(2^n)

4.进程相关概念

(1)进程内存:

Page Frame: 页框,用存储页面数据,存储Page 4k
LRU:Least Recently Used 近期最少使用算法,释放内存物理地址空间和线性地址空间
MMU:Memory Management Unit负责转换线性和物理地址
TLB:Translation Lookaside Buffer 翻译后备缓冲器,用于保存虚拟地址和物理地址映射关系的缓存

(2)IPC: Inter Process Communication

同一主机: signal:信号
shm: shared memory
semaphore:信号量,一种计数器
不同主机:rpc: remote procedure call
socket: IP和端口号

5.进程状态

(1)Linux内核:抢占式多任务
(2)进程类型:

后台:可以自动运行的工作,你无法用Ctrl+c终止它
(放在后台里的进程不能等待terminal/shell输入,既不能与用户互动,比如说vim)
前台:跟终端相关,通过终端启动的进程。简单地说,你可以控制与执行命令的这个环境
注意:两者可相互转化

(3)进程状态:

运行态:running
就绪态:ready
睡眠态:
可中断:interruptable
不可中断:uninterruptable
停止态:stopped,暂停于内存,但不会被调度,除非手动启动
僵死态:zombie,结束进程,父进程结束前,子进程不关闭
           (如果某个进程CMD后面还接上<defunct>就是僵尸进程)

6.pstree命令:

-A:各进程数之间的连接以为ASCII字符来连接
-p:同时列出每个进程的PID
-u:同时列出每个进程的所属账号名称
-U:各进程数之间的连接以为UTF-8码字符来连接

7.查看进程ps:process state

Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中

  • ps [OPTION]...
支持三种选项:
UNIX选项 如-A -e
BSD选项 如a
GNU选项 如--help

• 选项:

• 默认显示当前终端中的进程
• a 选项包括所有终端中的进程
• x 选项包括不链接终端的进程
• u 选项显示进程所有者的信息
• f 选项显示进程的父进程
• k|--sort 属性 对属性排序
• o 属性… 选项显示定制的信息
pid、comm、%cpu、%mem、state、tty、euser、ruser
Paste_Image.png
VSZ: Virtual memory SiZe,该进程使用掉的虚拟内存量(KB)
RSS: ReSident Size,该进程占用的固态内存量
TTY:该进程是在哪个终端机上面运行
          若与终端机无关则显示?
         tty1~tty6是本机上面登陆者程序
         pts/0等,表示为网络连接进主机的进程
USER:该进程属于哪个进程账号
PID:该进程的标识符
START:该进程被触发启动的时间
TIME:该进程实际使用CPU运行的时间
COMMAND:该进程的实际命令
%CPU:该进程使用掉的CPU资源百分比
%MEM:该进程所占用的物理内存百分比
STAT:该进程目前的进程状态
          R:running
          S: interruptable sleeping
          D: uninterruptable sleeping
          T: stopped
          Z: zombie
          +: 前台进程
          l: 多线程进程
          L:内存分页并带锁
          N:低优先级进程
          <: 高优先级进程
          s: session leader,会话(子进程)发起
  • 常用组合:-ef
-e: 显示所有进程
-f: 显示完整格式程序信息
  • 常用组合:-aux(查所有的进程看系统)
  • 常用组合:-eFH
-F: 显示更完整格式的进程信息
-H: 以进程层级格式显示进程相关信息
  • 常用组合:自定义
# ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm
# ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid, 
# ps -eo pid,pcpu,comm
ni: nice值
pri: priority 优先级
psr: processor CPU编号
rtprio: 实时优先级
  • 常用组合:-aux(显示系统所有的进程)
     示例:
# ps axo pid,cmd,psr,ni,pri,rtprio

8.进程优先级

 进程优先级调整:
静态优先级:100-139
进程默认启动时的nice值为0,优先级为120
只有根用户才能降低nice值(提高优先性)
(1)nice命令:

nice [OPTION] [COMMAND [ARG]...]

(2)renice命令:

renice [-n] priority pid...

(3)查看:

ps axo pid,comm,ni

9.搜索进程pgrep或ps 选项 | 其它命令

(1)最灵活:ps 选项 | 其它命令
(2)按预定义的模式:pgrep
pgrep [options] pattern

-u uid: effective user,生效者
-U uid: real user,真正发起运行命令者
-t terminal: 与指定终端相关的进程
-l: 显示进程名
-a: 显示完整格式的进程名
-P pid: 显示指定进程的子进程

(3)按确切的程序名称:/sbin/pidof

pidof bash

10.uptime查看系统启动时间与工作负载

显示当前时间,系统已启动的时间、当前上线人数,系统平
均负载(1、5、10分钟的平均负载,一般不会超过1)

(1) 系统平均负载:指在特定时间间隔内运行队列中的平均进程数
(2) 通常每个CPU内核的当前活动进程数不大于3,那么系统的性能良好。如果每个CPU内核的任务数大于5,那么此主机的性能有严重问题
(3)如果linux主机是1个双核CPU,当Load Average 为6的时候说明机器已经被充分使用

11.top:动态查看进程的变化

  • 相对于ps是选取一个时间点的进程状态,top则可以持续检测程序运行的状态
    top [-d 数字] |top [-bnp]
-d :后面可以接秒数,就是整个页面更新的秒数
-b:以批次的方式执行top,全部显示所有进程
    通常会搭配数据流重定向来将批处理的结果输出成文件
-n:与-b搭配。表示需要进行几次top结果输出
-p:指定某些个PID来进行查看检测
在top执行的过程中可以使用按键的命令:
              ?:显示在top当中可以输入的按键命令
               P:以CPU使用资源排序显示
               M:以内存的使用资源排序显示
               N:以PID来排序
               T:由该进程CPU时间累计排序
                q:离开top软件的按键

(1)排序:

P(大写):以占据的CPU百分比,%CPU(默认)
M(大写):占据内存百分比,%MEM
T(大写):累积占据CPU时长,TIME+

(2)首部信息显示:

uptime信息:l命令
tasks及cpu信息:t命令
cpu分别显示:1 (数字)
memory信息:m命令
退出命令:q
修改刷新时间间隔:s
终止指定进程:k
保存文件:W

(3)栏位信息简介

us:用户空间
sy:内核空间
ni:调整nice时间
id:空闲
wa:等待IO时间
hi:硬中断
si:软中断(模式切换)
st:虚拟机偷走的时间

12.htop命令:EPEL源

选项:

-d #: 指定延迟时间;
-u UserName: 仅显示指定用户的进程
-s COLUME: 以指定字段进行排序

子命令:

s: 跟踪选定进程的系统调用
l: 显示选定进程打开的文件列表
a:将选定的进程绑定至某指定CPU核心
t: 显示进程树

13.vmstat命令:检测系统资源变化

vmstat [options] [delay [count]]

-a:使用inactive/active (活跃与否)替代buffer/cache内存输出信息
-f :开机到目前为止系统复制(fork)的进程数
-s:将一些事件导致的内存变化情况列表说明
-S:后面接单位,让显示的数据有单位,eg:K/M取代bytes
-d:列出磁盘的读写总量统计表
-p:后面列出分区,可现实该分区的读写总量统计表

内存字段含义:

procs: 
        r:可运行(正运行或等待运行)进程的个数,和核心数有关
        b:处于不可中断睡眠态的进程个数(被阻塞的队列的长度)
memory:
        swpd: 交换内存的使用总量
        free:空闲物理内存总量
        buffer:用于buffer的内存总量
        cache:用于cache的内存总量
swap:
         si:从磁盘交换进内存的数据速率(kb/s)
         so:从内存交换至磁盘的数据速率(kb/s)
io:
         bi:从块设备读入数据到系统的速率(kb/s)  
         bo: 保存数据至块设备的速率
system:
        in: interrupts 中断速率,包括时钟
        cs: context switch 进程切换速率
cpu:
        us:非内核层的CPU使用状态
        sy:内核层CPU使用状态
        id:闲置的状态
        wa: 等待I/O所耗费的CP
        st:被虚拟机所盗用的CPU使用状态(2.6.11内核后才支持)
  • 选项:
-s: 显示内存的统计数据

14.iostat:统计CPU和设备IO信息

eg:iostat 1 10

15.pmap命令:进程对应的内存映射

pmap [options] pid [...]

-x: 显示详细格式的信息
eg:pmap 1

另外一种实现:

cat /proc/PID/maps

16. glances命令:(系统监控工具)EPEL源

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

  • 常用选项:
-b: 以Byte为单位显示网卡数据速率
-d: 关闭磁盘I/O模块
-f /path/to/somefile: 设定输入文件位置
-o {HTML|CSV}:输出格式
-m: 禁用mount模块
-n: 禁用网络模块
-t #: 延迟时间间隔
-1:每个CPU的相关数据单独显示
  • C/S模式下运行glances命令
  • 服务器模式:
glances -s -B IPADDR
IPADDR: 指明监听的本机哪个地址
  • 客户端模式:
glances -c IPADDR
IPADDR:要连入的服务器端地址

17.dstat命令:(系统监控工具)系统资源统计.代替vmstat,iostat

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

-c: 显示cpu相关信息
-C #,#,...,total
-d: 显示disk相关信息
-D total,sda,sdb,...
-g:显示page相关统计数据
-m: 显示memory相关统计数据
-n: 显示network相关统计数据
-p: 显示process相关统计数据
-r: 显示io请求相关的统计数据
-s: 显示swapped相关的统计数据
 --top-cpu:显示最占用CPU的进程
 --top-io: 显示最占用io的进程
 --top-mem: 显示最占用内存的进程
 --top-latency: 显示延迟最大的进程

18. kill命令:(进程管理工具)

向进程发送控制信号,以实现对进程管理,每个信号对应一个数字,信号名称以SIG开头(可省略),不区分大小写

(1)显示当前系统可用信号: kill –l,trap -l

Paste_Image.png

(2)常用信号:man 7 signal

1) SIGHUP: 无须关闭进程而让其重读配置文件
2) SIGINT: 中止正在运行的进程;相当于Ctrl+c
3) SIGQUIT:相当于ctrl+\
9) SIGKILL: 强制杀死正在运行的进程
15) SIGTERM:终止正在运行的进程
18) SIGCONT:继续运行
19) SIGSTOP:后台休眠

(3)指定信号的方法:

1.信号的数字标识:1, 2, 9
2.信号完整名称:SIGHUP (3) 信号的简写名称HUP

(4)按PID:kill [-SIGNAL] pid …

kill –n SIGNAL pid;kill –s SIGNAL pid

(5)按名称:killall [-SIGNAL] comm…

Paste_Image.png

(6)按模式:pkill [options] pattern

-SIGNAL
-u uid: effective user,生效者
-U uid: real user,真正发起运行命令者
-t terminal: 与指定终端相关的进程
-l: 显示进程名(pgrep可用)
-a: 显示完整格式的进程名(pgrep可用)
-P pid: 显示指定进程
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,302评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,563评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,433评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,628评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,467评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,354评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,777评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,419评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,725评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,768评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,543评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,387评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,794评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,032评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,305评论 1 252
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,741评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,946评论 2 336

推荐阅读更多精彩内容

  • Linux进程管理原理 Linux的进程管理,就是对硬件各资源进行分配、调度、销毁等工作,其主要部件的管理为:CP...
    魏镇坪阅读 1,193评论 0 6
  • 进程相关概念 内核的功能 进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等。 process 进程,正...
    夹克K阅读 976评论 0 1
  • Linux 进程管理与程序开发 进程是Linux事务管理的基本单元,所有的进程均拥有自己独立的处理环境和系统资源,...
    JamesPeng阅读 2,442评论 1 14
  • Linux进程查看及管理的工具:pstree,ps,pidof,pgrep,top,htop,glance,pma...
    JevonWei阅读 346评论 0 1
  • 进程概念 内核的功用:进程管理、文件系统、网络功能、内存管理、驱动程序、 安全功能等 Process:运行中的程序...
    JevonWei阅读 535评论 0 0