云计算基础大课笔记
第四章 进程管理
简介:Linux系统Centos7中程序的相关概念。进程管理工具ps&top的用法。kill控制进程。job控制作业的相关方式。
目标:掌握程序概念 掌握进程管理工具的使用/控制进程的方法
第一节,进程的简介
(1)灵魂三问
01.我是谁? 什么是进程
02.我从哪里来?进程从哪来
03.我要上哪去?进程上哪去
(2)进程三问
01.进程是什么
进程是++已启动++ 的++可执行程序++ 的++运行实例++,进程有以下组成部分:
1.已分配内存的地址空间;
2.安全属性,包括所有权凭据和特权;
3.程序代码的一个或多个执行线程;
4.进程状态。
程序:可以利用的运行起来的文件(二进制文件),静态/usr/bin/passwd,/usr/sbin/useradd
进程:运行起来的程序 也是程序运行的过程,动态,有生命周期及运行状态。
02.进程的生命周期
01.父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。
02.每个新进程分配一个,唯一的进程ID (PID ) ,满足跟踪安全性之需。
03.任何进程都可以创建子进程。
04.所有进程都是第一个系统进程的后代:
Centos5/6系统进程:init
Centos7系统进程:systemd
03.进程状态
第二节,进程的管理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
进程状态的常见参数
咱云工程师就靠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
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行)
(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.下半部分
- PID:进程ID(Process Identifier),是用来唯一标示一个进程的数字。
- USER:启动该进程的用户的用户名。
- PR:优先级(Priority)。
- NI:nice值,影响进程的调度优先级。
- VIRT:虚拟内存使用量,即进程占用的虚拟内存总量(包括所有代码、数据以及分配但未使用的内存)。
- RES:常驻(真实)内存大小(Resident Size),该进程占用的实际物理内存大小,不包含交换出去的内存部分。
- SHR:共享内存大小(Shared Memory),指进程使用的可共享的内存的大小。
- S:进程的状态。常见状态有:S(睡眠中),R(运行中),Z(僵尸进程)等。
- %CPU:自从上一次更新以来,该进程占用的CPU使用比例。
- %MEM:进程当前占用的物理内存和总物理内存的百分比。
- TIME+:CPU总计时间,即自进程启动开始至今,CPU使用的总时间。
- 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
编号 信号名
++1) SIGHUP 重新加载配置++
-
SIGINT 键盘中断Ctrl+C
-
SIGQUTT键盘退出Ctrl+\,类似SIGINT
++9) SIGKILL 强制终止,无条件++ 适用于进程卡死 但是尽量少用 多用15
++15) SIGTERM 终止(正常结束),缺省信号++
18) SIGCONT 继续
19) SIGSTOP 暂停
20)SIGTSTP 键盘暂停Ctrl+Z
实例-使用18 19 可以继续/暂停程序
02.信号9,15 实例
01.创建文件file1 file2
02.vim file1 file2 不退出
03.kill -15 file1的进程
04.kill -9 file2的进程
(4)进程优先级nice
简介:Linux 进程调度及多任务 每个CPU在一个时间点上只能处理一个进程,通过时间片技术,来同时运行多个程序
01.优先级范围和特性
01.越小优先级越高(可以为负数)
02.系统中的两种优先级
PR优先级:系统内置的优先级 范围-99到39 ++PR++ ++值=Nice值+20++
02.查看进程的nice(优先级)级别
ps axo pid,command,nice --sort=-nice
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
(2)内存
/proc/meminfo
(3)内核
/proc/cmdline
第四章总结:
本章涉及Linux进程管理的基础概念及实际操作技能。了解进程是操作系统中已启动程序的实例,具体学习了进程的生命周期、如何查看和管理进程,使用ps和top命令来查看静态和动态进程信息,使用kill发送信号控制进程,以及作业控制和/proc目录的基本用法。重点内容如下:
- 进程是操作系统分配资源和调度运行的基本单位。
- 进程具有唯一的进程ID(PID),由父进程创建,可以有多个状态。
- ps和top命令用于查看系统中的进程及其属性。
- kill命令用来向进程发送信号以控制进程行为。
- nice和renice命令用于调整进程优先级。
- jobs、fg和bg命令用于控制后台作业。
- /proc目录提供了一个接口来访问内核系统和进程信息。
课后思考:
如何区分进程和线程?
进程是系统进行资源分配和调度的独立单位,拥有独立的地址空间,而线程是进程的实际运作单位,是CPU调度的最小单位,线程共享它们所属进程的资源。
如何确定哪个进程占用了大量系统资源?
可以使用top或htop命令来观察系统资源的实时占用情况,通过排序功能找出CPU或内存占用最高的进程。
使用kill发送什么信号能够优雅地终止进程?
使用kill发送SIGTERM(信号15)通常可以优雅地终止进程,让进程有机会进行清理和保存状态后再关闭。
为何运行进程的优先级会影响系统性能?
运行进程的优先级会影响系统性能,因为高优先级的进程会更频繁地获得CPU时间,从而可能导致低优先级进程饿死或响应速度慢。正确设置优先级可以确保关键任务得到足够的CPU时间,同时使得系统的资源分配更加高效。