主要内容

  • 进程介绍

  • 进程管理

  • 进程优先级

1. 进程介绍

Linux系统中的几乎任何行动都会以进程的形式进行。如果你用网络浏览器查看网页,浏览器就作为进程运行。如果键入bash shell的命令行,这个shell就作为进程运行。如果你用chmod命令来更改文件权限,chmod就作为单独的进程来执行。进程是完成工作的形式,linux内核的基本职责就是为进程提供做事情的地方,不让彼此撞车。

进程是已启动的可执进程序的运行实例,进程有以下组成部分:

已分配内存的地址空间
安全属性,包括所有权凭据个特权
程序代码的一个或多个执行进程
进程状态

进程与程序区分

程序:二进制文件,静态。

进程:是程序运行的过程,动态,有生命周期及运行状态

进程的属性:

进程ID(PID):是唯一的值,用来区分进程
父进程(PPID)
启动进程的用户ID(UID)和所归属的组(GID)
进程状态:分为运行R,休眠S,僵尸Z
进程执行的优先级
进程所连接的终端名
进程资源占用:如内存、CPU等

进程(Process)是一个程序在其自身的虚拟地址空间中的一次执行活动。之所以要创建进程,就是为了使多个程序可以并发的执行,从而提高系统的资源利用率和吞吐量。

程序只是一个静态的指令集合;而进程是一个程序的动态执行过程,它具有生命期,是动态的产生和消亡的。

ps top gnome-system-monitor pstree linux并发执行 jobs fg bg crtl+z at crontab

进程家族

引导系统时,Linux内核的一个职责是启动第一个进程(通常是/sbin/init)。因为一个业已存在的进程继续派生,所有其他进程得以启动。

如何终止进程

当进程终止时,可能是通过选择退出(exit)正常终止,也可以是因为接收到信号而非正常终止。

孤儿进程

如果说处理子进程终止后的善后事宜是父进程的职责的话,那么如果父进程在子进程之前终止该怎么办?这个子进程就变成了孤儿进程。

僵尸进程

当进程退出,释放大多数资源和它的父进程收集它的返回值、释放剩余资源这两段时间之间,子进程处于一个特殊状态,被称为僵尸进程(zombie)。每个进程都会经过一个短暂的僵尸状态。

五种进程状态

可运行(R)
处于可运行状态的进程,一旦有机会,就会访问CPU。多个进程可以(而且经常)处于可以运行状态,但是因为在任何给定时间内只有一个进程可以在CPU上运行,所以实际上这些进程中只有一个在任何给定的实例上运行。
自愿(可中断的)睡眠(s)
从名称中可以看出,处于自愿睡眠状态的进程选择处于该状态。通常,这一进程在某事发生之前无事可做。
非自愿(不可中断或强制)睡眠\(D\)
内核迫使进程进入非自愿睡眠状态。该进程并没有选择休眠,它情愿运行以便做完事情。当资源被释放时,内核会唤醒进程并将设置为可运行状态。
停止的(挂起的)进程(T)
用户有时决定挂起进程,被挂起的进程在被用户重新启动前不会执行任何操作。
僵尸进程(Z)
每个快要终止的进程会经历一个短暂的僵尸状态,然而有时有些进程会一直停留在僵尸状态。

  

静态任务管理器

ps - report a snapshot of the current processes

语法

ps [options]

命令选项:

a: 显示跟当前终端关联的所有进程

u: 基于用户的格式显示

x: 显示所有进程,不以终端机来区分

U: 显示某用户ID所有的进程

A: 显示所有程序

e: 此参数的效果和指定”A”参数相同

f: 用ASCII字符显示树状结构,表达程序间的相互关系

o: 自定义输出格式

ps -aux 输出解释

[zhangyafei@centos ~]$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 123024 3276 ? Ss 2月22 14:28 /usr/lib/systemd/systemd --system --deserialize 21
root 2 0.0 0.0 0 0 ? S 2月22 0:01 [kthreadd]
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 进程拥有者
PID: pid %CPU: 占用的 CPU 使用率
%MEM: 占用的内存使用率
VSZ: 占用的虚拟内存大小
RSS: 占用的内存大小
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该进程的状态:
D: 不可中断的静止
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的内存分页可分配
<: 高优先序的进程
N: 低优先序的进程
L: 有内存分页分配并锁在内存内 (即时系统或捱A I/O)
s 表示进程是控制进程
l 表示进程是多线程
+表示当前进程运行在前台
START: 进程开始时间 TIME: 执行的时间 COMMAND:所执行的指令
  • top动态管理进程
[zhangyafei@centos ~]$ top
top - 10:02:38 up 213 days, 20:39, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 74 total, 2 running, 72 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.7 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1883844 total, 85196 free, 333120 used, 1465528 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 1359848 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
17490 root 20 0 611180 13396 1984 S 0.7 0.7 405:48.20 barad_agent
17489 root 20 0 158132 9072 1756 S 0.3 0.5 79:48.97 barad_agent
第一行:当前时间

1. 运行时间
2. 当前登陆系统的用户数量,
3. load average后面的三个数字分别表示距离现在一分钟,五分钟,十五分钟的负载情况。 第二行: 1. Tasks: 119 total 总进程数为119
2. 1 running 正在运行的进程数
3. 118 sleeping 睡眠的进程数
4. 0 stopped 停止的进程数
5. 0 zombie 僵尸进程数 第三行: 1. 0.2 us 系统用户进程使用CPU百分比
2. 0.2 sy 内核中的进程占用CPU百分比
3. 0.0 ni 用户进程空间内改变过优先级的进程占用CPU百分比
4. 99.5 id 空闲的CPU百分比
5. 0.2 wa CPU等待I/O完成的时间总量
6. 0.0 hi 硬中断占比
7. 0.0 si 软中断占比
8. 0.0 st 虚拟机占用物理的时间,例如物理机运行了KVM,则表示KVM占用物理机的CPU时间 第四行: 1. Mem:物理内存
2. 3881692 total 物理内存总量
3. 240764 free 空闲内存总量
4. 683188 used 使用的物理内存总量
5. 2957740 buff/cache 内核缓存内存量 第五行: 1. Swap: 交换内存
2. 0 total 交换分区总量
3. 0 used 使用的交换分区总量
4. 0free 空闲交换分区总量
5. 2886156 cached 可利用内存总量 第六行: 1. PID 进程号
2. USER 进程管理用户
3. PR 进程优先级
4. NI nice值 负值表示高优先级,正值表示低优先级
5. VIRT 虚拟内存
6. RES 物理内存
7. SHR 共享内存
8. S 进程状态
9. %CPU 上次更新到现在的CPU时间占用百分比
10. %MEM 进程使用的物理内存百分比
11. TIME+ 进程使用的CPU时间总计,单位1/100秒
12. COMMAND 进程名称 top快捷键: s: 默认三秒刷新一次,按s修改刷新时间 空格: 立即刷新 q: 退出 P; 按CPU排序按CPU排序 M: 按内存排序 T: 按时间排序 数字1: 显示每个内核的CPU使用率 u/U: 指定显示的用户 h: 帮助

2. 进程管理

1)kill - terminate a process

语法

kill[选项][进程号]

选项

-l 打印信号编号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称

-a 当处理当前进程时,不限制命令名和进程号的对应关系

-p 只打印相关进程的进程号,而不发送任何信号

-s 指定发送信号

-u 指定用户,kill某个用户的所有进程

Kill命令工作原理:

向Linux内核发送一个系统操作信号和某个程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作

信号

HUP 1 重载配置文件

INT 2 中断(同 Ctrl + C)

QUIT 3 退出(同 Ctrl + \)

TERM 15 终止

KILL 9 强制终止

CONT 18 继续(与STOP相反, fg/bg命令)

STOP 19 暂停(同 Ctrl + Z)

应注意,信号使进程强行终止,这常会带来一些副作用,如数据丢失或者终端无法恢复到正常状态。发送信号时必须小心,只有在万不得已时,才用kill信号(9),因为进程不能首先捕获它。要撤销所有的后台作业,可以输入kill 0。因为有些在后台运行的命令会启动多个进程,跟踪并找到所有要杀掉的进程的PID是件很麻烦的事。这时,使用kill 0来终止所有由当前shell启动的进程,是个有效的方法。

kill -9 强制结束

kill -0 检测进程是否存在

如何调整优先级

注意:普通用户只能降低程序的优先级 不能提高程序优先级,root随便

2)killall

Linux系统中的killall命令用于杀死指定名字的进程(kill processes by name)

命令格式:

killall[选项][进程名]

命令选项:

-I 忽略小写

-g 杀死进程组而不是进程

-i 交互模式,杀死进程前先询问用户

-l 列出所有的已知信号名称

-q 不输出警告信息

-s 发送指定的信号

-v 报告信号是否成功发送

-w 等待进程死亡

—help 显示帮助信息

—version 显示版本显示

-u:杀死指定用户的进程

-r:使用正规表达式匹配要杀死的进程名称

-p:杀死进程所属的进程组

3. 进程优先级管理

nice - run a program with modified scheduling priority

语法

nice [OPTION] [COMMAND [ARG]…]

选项

-n add integer N to the niceness (default 10)

设定一个优先级 默认为10

linux porcess 优先级为-20 - 19 数字越小优先级越大

调整优先级命令nice

nice —19 ping -c 500 localhost -19优先级

nice -19 ping -c 500 localhost 19优先级

renice - alter priority of running processes

renice -n -19 -p 16863

renice -n -20 -u root

0 (用户 ID) 旧优先级为 -10,新优先级为 -20

Linux上天之路(十三)之系统进程管理的更多相关文章

  1. Linux上天之路系列目录

    Linux上天之路系列目录 Linux上天之路(一)之Linux前世今生 Linux上天之路(二)之Linux安装 Linux上天之路(三)之Linux系统目录 Linux上天之路(四)之Linux界 ...

  2. Linux上天之路(十二)之服务管理

    主要内容 服务介绍 独立服务 非独立服务 1. 服务介绍 服务:常驻在内存中的程序,且可以提供一些系统或网络功能,那就是服务. 计算机中的系统服务有很多,比如: apache提供web服务 ftp提供 ...

  3. Linux上天之路(十)之Linux磁盘管理

    主要内容 磁盘介绍 磁盘管理 磁盘限额 逻辑卷管理 磁盘阵列 1. 磁盘介绍 硬盘最基本的组成部分是由坚硬金属材料制成的涂以磁性介质的盘片,不同容量硬盘的盘片数不等.每个盘片有两面,都可记录信息.盘片 ...

  4. Linux上天之路(十一)之软件管理

    软件包格式: RPM:源码封装后的格式,类似于exe文件 源码:软件源代码,可以修改,优化 1. RPM软件包管理 rpm是一个很有用的包管理器,可以用于生成.安装.查询.核实.更新以及卸载单个软件包 ...

  5. Linux上天之路(一)之Linux前世今生

    0. Linux的前世今生 linux是什么 linux是一个计算机的操作系统,与windows类似,是一款系统软件 操作系统 说到操作系统其实我们首先要思考三个问题: 1)操作系统是什么? 2)操作 ...

  6. linux学习之路第八天(组管理和权限管理)

    组管理和权限管理 1.Linux 组基本介绍 在linux中的每个用户必须属于一个组,不能独立于组外.在linux中每个文件有所有者,所在组,其他组的概念 1)所有者 2)所在组 3)其它组 4)改变 ...

  7. Linux上天之路(五)之Linux基本命令

    1. Linux命令格式 命令 命令选项 学会看语法: {必选项}[可选项] 举例 ls -a /tmp 等价 ls –all /tmp ls 命令 -a 命令选项 简写使用- 全写-- /tmp 参 ...

  8. Linux上天之路(八)之用户和组

    主要内容. 用户创建,删除,修改 密码及密码文件 组创建,删除,修改 组密码及组配置文件 相关文件 Linux用户分类 超级管理员: UID为0 root用户拥有至高无上的命令,root用户不能改名 ...

  9. Linux上天之路(二)之Linux安装

    1. vmware workstation使用 VMware是全球领先的虚拟化公司,为客户提供虚拟化解决方案,个人虚拟化产品workstation,可以让用户通过虚拟化的方式在一台物理电脑中安装多个操 ...

随机推荐

  1. 带你揭开WebSerivce的面纱

    最近在工作中遇到这样的一个项目(暂且定为项目A),项目A本身是用PHP开发的,但是其数据是来自于另一个使用java开发的项目(暂且定为项目B),项目A不能操作项目B的数据库,它有其自己的一套数据库,只 ...

  2. C语言static关键字

    C语言static关键字 static关键字的作用,主要从在程序的生存周期.作用域和在代码段中的位置起作用. 全局变量 静态全局变量 局部变量 静态局部量 生存周期 程序运行到结束 程序运行到结束 函 ...

  3. Sentinel之流控规则

    在上文Sentinel流量防卫兵中讲到了Sentinel入门以及流控规则一小部分,而Sentinel还有以下规则: 熔断降级规则 热点参数规则 系统规则 黑白名单规则 本文要讲的是流控规则 流量控制规 ...

  4. 效验pipeline语法

    目录 一.简介 二.配置 一.简介 因为jenkins pipeline不像JAVA之类的语言那样应用广泛,所以没有相关的代码检测插件. 2018年11月初,Jenkins官方博客介绍了一个VS Co ...

  5. 学Java,Java书籍的最佳阅读顺序

    疫情以来,好久没出差了,今天出差去趟上海,早上 4 点多就起床了,到机场天都没亮.到登机口离起飞还一小时,趁着等飞机的时间,抓紧码字,把这篇文章收个尾. 今天和大家说说学 Java 的读书路线.路线中 ...

  6. ciscn_2019_c_1 1

    步骤: 先checksec,看一下开启了什么保护 可以看到开启了nx保护,然后把程序放入ida里面,观察程序代码 先shift+f12观察是否有system和binsh函数 发现没有system和bi ...

  7. 资源工作表中与资源有关的操作(Project)

    <Project2016 企业项目管理实践>张会斌 董方好 编著 这个内容,我需要专门写一篇吗? 不写吧,好像对不起我那股学习的劲:写吧,实在是--一句话就够了:所有与任务有关的新建.修改 ...

  8. 『学了就忘』Linux系统定时任务 — 87、只执行一次的定时任务

    目录 1.at服务管理 2.at命令的访问控制 3.at命令 4.其他at管理命令 5.总结 定时任务是在服务器上常用到的一个工作. 在你指定的时间,系统会自动执行你指定的程序(脚本或者命令). Li ...

  9. SpringBoot整合mybatis-plus并实现代码自动生成

    1.引入maven <dependency> <groupId>org.springframework.boot</groupId> <artifactId& ...

  10. 【LeetCode】42. Trapping Rain Water 接雨水 (C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 暴力求解 保存左右最大值 单调栈 日期 题目地址:ht ...