云计算工程师系列 Day04 第四章 进程管理(超详细 持续更新中....)

云计算基础大课笔记

第四章 进程管理

简介:Linux系统Centos7中程序的相关概念。进程管理工具ps&top的用法。kill控制进程。job控制作业的相关方式。

目标:掌握程序概念 掌握进程管理工具的使用/控制进程的方法

第一节,进程的简介

(1)灵魂三问

01.我是谁? 什么是进程
02.我从哪里来?进程从哪来
03.我要上哪去?进程上哪去

(2)进程三问

01.进程是什么

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

1.已分配内存的地址空间;

2.安全属性,包括所有权凭据和特权;

3.程序代码的一个或多个执行线程;

4.进程状态。

程序:可以利用的运行起来的文件(二进制文件),静态/usr/bin/passwd,/usr/sbin/useradd

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

02.进程的生命周期

云计算工程师系列 Day04 第四章 进程管理(超详细 持续更新中....)_第1张图片

01.父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。
02.每个新进程分配一个,唯一的进程ID (PID ) ,满足跟踪安全性之需。
03.任何进程都可以创建子进程。
04.所有进程都是第一个系统进程的后代:

Centos5/6系统进程:init

Centos7系统进程:systemd

03.进程状态

云计算工程师系列 Day04 第四章 进程管理(超详细 持续更新中....)_第2张图片

第二节,进程的管理Process

目标:了解进程相关信息 PID PPID 当前进程状态 内存的分配情况 CPU和已经花费的实际时间 用户UID,他决定进程的特权 进程名称

(1)静态查看进程ps

01.静态查看进程ps
01.ps(precess status)
02.类似Windows任务管理器
03.实例 命令:ps aux | grep 所需程序 (也可以不加 | grep 不加直接显示所有的)

那么aux都代表什么呢?

ps a 显示现行终端机下的所有程序

ps u 以用户为主的格式来显示程序状况

ps x 不以终端机来区分

04.命令参数

root          53739     0.0      0.0       112676        984         pts/2        S+        19:16           0:00       grep --color=auto network

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

运行进程的用户 进程ID CPU占用率 内存占用率 占用虚拟内存 占用实际内存 进程运行的终端 进程状态 进程的启动时间 进程占用CPU的时间     进程文件,进程名

            Process ID                Virtual Size|Resident Set Size|           STATUS

进程状态的常见参数

云计算工程师系列 Day04 第四章 进程管理(超详细 持续更新中....)_第3张图片

咱云工程师就靠PID去杀死进程 PID就像给他的标签 我们根据标签去找到相应进程 进程ID(PID)是用来唯一标识系统中的每个进程的一个数字。当一个程序启动并且变成进程时,操作系统会为它分配一个唯一的PID。PID是自动和动态分配的,通常是按顺序来分配的,但是这并不意味着是连续不断的(比如:1 243 674 5346),因为可能会因为已有的PID或者特殊算法来调整分配。当一个进程终止或被杀死(使用kill命令等手段),它的PID会释放回操作系统,并且可以被之后启动的任何进程重用。因此,一个程序被杀死后再次启动,它将会被赋予一个新的、不同的PID。系统一般会尝试使用尚未使用的最小可用PID,但这不是保证的,因为PID的分配还受到PID回收策略和可能的PID限制的影响。总之,不应该依赖于一个程序在每次启动时都被分配相同的PID。

02.进程排序

ps aux --sort user/pid/%cpu/%mem/vsz/rss/tty/stat/start/time/command

ps aux --sort user/pid/%cpu/%mem/vsz/rss/tty/stat/start/time/command | head/tail -X (X的数值代表从头/尾显示X行)

03.进程的父子关系

ps -ef

云计算工程师系列 Day04 第四章 进程管理(超详细 持续更新中....)_第4张图片

PPID为X时 则X就是PID所代表的程序召唤出来的

04.自定义显示字段

ps axo(operation)  写你想要的列名(user/pid/ppid/%cpu/%mem/vsz/rss/tty/stat/start/time/command)多个时使用逗号隔开

ps axo user,pid,ppid,command

ps axo user,pid,ppid,command | head/tail -X(X的数值代表从头/尾显示X行)

云计算工程师系列 Day04 第四章 进程管理(超详细 持续更新中....)_第5张图片

云计算工程师系列 Day04 第四章 进程管理(超详细 持续更新中....)_第6张图片

(2)动态查看进程top

实时的 默认三秒更新一次(可以调节) 以动态形式查询我们的内容

01.上半部分

top - 01:57:01  up 1 day  6:38     5 users    load average: 0.09, 0.11, 0.07

程序名-系统时间      运行时间     登录用户数       CPU负载    1分钟 5分钟 15分钟(代表这三个时间点的CPU使用占比)

Tasks: 188 total   1 running   187 sleeping   0 stopped  0 zombie

总进程数             运行数         睡眠数       停止数     僵死数

%Cpu(s):   0.7 us   2.0 sy   0.0 ni   97.2 id   0.0 wa   0.0 hi   0.2 si   0.0 st

CPU占比      用户    系统     优先级    空闲      等待      硬件     软件    虚拟机

            user    system    nice              wait                soft

                            额外关照的

                           

存储 KiB Mem : 999720 total, 162580 free, 416016 used, 421124 buff/cache

内存 物理内存   总共大小         空闲         已使用       缓存硬盘内容大小

存储 KiB Swap: 2097148 total, 1743132 free, 354016 used. 374368 avail Mem

储存 交换分区   总共大小         空闲          已使用       下次可用的空间

02.下半部分

  1. PID:进程ID(Process Identifier),是用来唯一标示一个进程的数字。
  2. USER:启动该进程的用户的用户名。
  3. PR:优先级(Priority)。
  4. NI:nice值,影响进程的调度优先级。
  5. VIRT:虚拟内存使用量,即进程占用的虚拟内存总量(包括所有代码、数据以及分配但未使用的内存)。
  6. RES:常驻(真实)内存大小(Resident Size),该进程占用的实际物理内存大小,不包含交换出去的内存部分。
  7. SHR:共享内存大小(Shared Memory),指进程使用的可共享的内存的大小。
  8. S:进程的状态。常见状态有:S(睡眠中),R(运行中),Z(僵尸进程)等。
  9. %CPU:自从上一次更新以来,该进程占用的CPU使用比例。
  10. %MEM:进程当前占用的物理内存和总物理内存的百分比。
  11. TIME+:CPU总计时间,即自进程启动开始至今,CPU使用的总时间。
  12. COMMAND:启动进程的命令名称或命令行。
03.top技巧(直接在呼出的top程序直接按键使用)

h|?帮助

M 按内存的使用排序

P 按CPU使用排序

N 以PID的大小排序

<向前

>向后

z彩色,Z设置彩色,使用数字调整

动态查看进程top,像windows的任务管理器

[root@qianfeng ~]# top

[root@qianfeng ~]# top-d 1 //每1秒刷新。

//回车,立刻刷新。按z彩色显示,按F,通过光标设置列的顺序

[root@qianfeng ~]# top-d 1-p 10126 查看指定进程的动态信息

[root@qianfeng ~]# top-d1 -p 10126,1 查看10126和1号进程(用逗号隔开)

(3)使用信号控制进程kill

信号就是下达的命令

01.信号种类

给进程发送信号(kill-l列出所有支持的信号)

kill -l

云计算工程师系列 Day04 第四章 进程管理(超详细 持续更新中....)_第7张图片

编号 信号名

1) SIGHUP 重新加载配置

2) SIGINT 键盘中断Ctrl+C

3) SIGQUTT键盘退出Ctrl+\,类似SIGINT

9) SIGKILL 强制终止,无条件 适用于进程卡死 但是尽量少用 多用15

15) SIGTERM 终止(正常结束),缺省信号

18) SIGCONT 继续

19) SIGSTOP 暂停

20)SIGTSTP 键盘暂停Ctrl+Z

实例-使用18 19 可以继续/暂停程序

云计算工程师系列 Day04 第四章 进程管理(超详细 持续更新中....)_第8张图片

02.信号9,15 实例

云计算工程师系列 Day04 第四章 进程管理(超详细 持续更新中....)_第9张图片

01.创建文件file1 file2

02.vim file1 file2 不退出

03.kill -15 file1的进程

云计算工程师系列 Day04 第四章 进程管理(超详细 持续更新中....)_第10张图片

04.kill -9 file2的进程

云计算工程师系列 Day04 第四章 进程管理(超详细 持续更新中....)_第11张图片

(4)进程优先级nice

简介:Linux 进程调度及多任务 每个CPU在一个时间点上只能处理一个进程,通过时间片技术,来同时运行多个程序

01.优先级范围和特性
01.越小优先级越高(可以为负数)

02.系统中的两种优先级

PR优先级:系统内置的优先级 范围-99到39 PR值=Nice值+20

02.查看进程的nice(优先级)级别

ps axo pid,command,nice --sort=-nice

云计算工程师系列 Day04 第四章 进程管理(超详细 持续更新中....)_第12张图片

03.启动具有不同nice级别的进程

使用何种优先级启动:

在默认情况下 通常会继承父进程的nice级别,默认为0

nice -n -5 sleep 6000& (-n:number -5:数字 范围为-20到19 &代表后台运行)

04.更改现有进程的nice级别

修改nice值

renice -X 进程ID (-X的数值代表优先级大小 范围为-20到19)

第三节,作业控制Jobs(了解)

简介:作业控制通常是解决一种特性(后台运行)是一个命令行功能 关键词介绍:foreground(fg 前台运行) background (bg 后台运行)

(1)后台程序控制示例

01.观察占领前台的现象

运行一个程序 当前终端无法输入命令 大部分命令行的输入已经无效

ctrl+c 中止进程

02.运行后台程序 (运行后加 &
03.ps查询所有程序
04.jobs查看后台程序

jobs

05.调动后台程序至前台

fg 1 (将作业1调至前台 1可以是jobs最前面id的任何值)

Ctrl+z
06.消灭后台程序

kill %X (X的值为jobs的最前面的id)

(2)总结

01. & 后台运行程序
02.jobs 查询后台
03.kill %1 停止后台程序

第四节,虚拟文件系统Proc目录(了解)

简介:Proc(process)进程目录 虚拟文件系统 采集服务器自身 内核信息 硬件信息

[root@cxk ~]# cat /proc/XXXX

(1)CPU

/proc/cpuinfo

云计算工程师系列 Day04 第四章 进程管理(超详细 持续更新中....)_第13张图片

(2)内存

/proc/meminfo

云计算工程师系列 Day04 第四章 进程管理(超详细 持续更新中....)_第14张图片

(3)内核

/proc/cmdline

第四章总结:

本章涉及Linux进程管理的基础概念及实际操作技能。了解进程是操作系统中已启动程序的实例,具体学习了进程的生命周期、如何查看和管理进程,使用pstop命令来查看静态和动态进程信息,使用kill发送信号控制进程,以及作业控制和/proc目录的基本用法。重点内容如下:

  1. 进程是操作系统分配资源和调度运行的基本单位。
  2. 进程具有唯一的进程ID(PID),由父进程创建,可以有多个状态。
  3. ps和top命令用于查看系统中的进程及其属性。
  4. kill命令用来向进程发送信号以控制进程行为。
  5. nice和renice命令用于调整进程优先级。
  6. jobs、fgbg命令用于控制后台作业。
  7. /proc目录提供了一个接口来访问内核系统和进程信息。

课后思考:

如何区分进程和线程?

进程是系统进行资源分配和调度的独立单位,拥有独立的地址空间,而线程是进程的实际运作单位,是CPU调度的最小单位,线程共享它们所属进程的资源。

如何确定哪个进程占用了大量系统资源?

可以使用tophtop命令来观察系统资源的实时占用情况,通过排序功能找出CPU或内存占用最高的进程。

使用kill发送什么信号能够优雅地终止进程?

使用kill发送SIGTERM(信号15)通常可以优雅地终止进程,让进程有机会进行清理和保存状态后再关闭。

为何运行进程的优先级会影响系统性能?

运行进程的优先级会影响系统性能,因为高优先级的进程会更频繁地获得CPU时间,从而可能导致低优先级进程饿死或响应速度慢。正确设置优先级可以确保关键任务得到足够的CPU时间,同时使得系统的资源分配更加高效。

你可能感兴趣的:(Linux,云计算,linux,unix)