DAY23 查看进程与管理进程

189 阅读5分钟

1.进程是什么 ?

进程 -- 资源分配的最小单位。 计算机的核心是cpu,进程和线程都是一个时间段的描述,是CPU工作时间段的描述。我们打开浏览器,实际上就是打开了一个进程,它就会被载入内存空间,并在逻辑上产生一个独立的实例,这就是进程。进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。

进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。

2.线程是什么?

线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。

线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。

线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工作,称为多线程.

3.线程和进程之间的关系

线程和进程的区别在于,子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文.多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定. 线程的运行中需要使用计算机的内存资源和CPU。

ps命令

ps命令 ##查看静态的进程信息

选项1: ps aux

a:显示终端上所有进程

u:表示列出进程的用户

x:显示所有终端的进程

ps -T ##查看线程

image.png 各列的解释:

USER:进程的用户。PID:进程的ID。

%CPU:进程占用的cPU百分比。%MEM:占用内存的百分比。

Vsz:该进程使用的虚拟内存量(KB ) 。RSS:该进程占用的物理内存量(KB) 。

TTY:启动进程的终端名。不是从终端启动的进程则显示为?

STAT:该进程的状态(D:不可中断的休眠状态,R:正在运行状态;S:处于休眠状态,可被唤醒,T、停止状态,可能是在后台暂停或进程处于跟踪调试状态、z。僵尸进程,进程已经中止,但是部分程序还在内存当中)

START:该进程被触发启动时间。

TIME:该进程实际使用cPu运行的时间。

COMMAND:进程的启动命令。

选项2 : ps - elf

-e:显示系统内的所有进程信息

-l:使用长格式显示进程信息

-f:使用完整的格式显示进程信息

-a:显示所有进程pid

-T:查看线程信息

-aT:显示所有线程比并显示pid

image.png

top命令

top##查看进程动态信息

top常用命令:

P键:根据CPU使用百分比大小进行排序M钱建:根据驻留内存大小进行排序

N健:根据启动时间进行排序健:切换显示命令名称和完整命令行

h健:可以获得top程序的在线帮助信息

k 键:根据提示输入指定进程的 PID号并按Enter键终止对应的进程

q键:退出top程序

数字1键:显示cPU个数和状态

top -H:显示所有线程

top 一H-p :显示特定进程中的线程

image.png load average: cpu平均负载

扩展:

pgrep命令 ##过滤自己想要的进程信息

pstree命令##以树型结构排列查看进程信息

管理进程

ctrl z ##挂起进程

jobs -l ##查看后台进程

fg 进程序号 ##恢复后台进入前台

kill pid号 ##杀死进程

killall 进程名  (杀死名字相关所有进程)

kill -9 强制杀死

pkill 进程名 ##根据进程名杀死

pkill -U 用户 -L 终端

at 小时:分钟 年-月-日 ##指定一次性任务 (输入指令后ctrl d 提交)

atq ##查看已定时任务列表

crontab(如需使用需确保cround服务开启)

crontab -e ##编辑周期性任务

   -u可指定用户

分 时 日 月 周 命令绝对路径 (which)

* 任意
, 和
- 范围
/ 频率次数

每周一早上7:50

50 7 * * 1