Linux学习之进程管理

学习源

什么是进程

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

进程是已启动的可执进程序的运行实例

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

进程组成

  • 已分配内存的地址空间

  • 安全属性,包括所有权凭据个特权

  • 程序代码的一个或多个执行进程

  • 进程状态

进程属性

  • 进程ID(PID):是唯一的值,用来区分进程

  • 父进程(PPID)

  • 启动进程的用户ID(UID)和所归属的组(GID)

  • 进程状态:分为运行R,休眠S,僵尸Z

  • 进程执行的优先级

  • 进程所连接的终端名

  • 进程资源占用:如内存、CPU等

进程状态

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

进程家族

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

终止进程

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

孤儿进程

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

僵尸进程

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

查看进程

静态任务管理器

语法

ps [options]

命令选项:

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

u: 基于用户的格式显示

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

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

A: 显示所有程序

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

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

o: 自定义输出格式
ps aux

在这里插入图片描述

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

在这里插入图片描述

第一行当前时间


	运行时间
	
	当前登陆系统的用户数量,
	
	load average后面的三个数字分别表示距离现在一分钟,五分钟,十五分钟的负载情况。

第二行:


	Tasks: 119 total 总进程数为119
	
	1 running 正在运行的进程数
	
	118 sleeping 睡眠的进程数
	
	0 stopped 停止的进程数
	
	0 zombie 僵尸进程数

第三行:


	0.2 us 系统用户进程使用CPU百分比
	
	0.2 sy 内核中的进程占用CPU百分比
	
	0.0 ni 用户进程空间内改变过优先级的进程占用CPU百分比
	
	99.5 id 空闲的CPU百分比
	
	0.2 wa CPU等待I/O完成的时间总量
	
	0.0 hi 硬中断占比
	
	0.0 si 软中断占比
	
	0.0 st 虚拟机占用物理的时间,例如物理机运行了KVM,则表示KVM占用物理机的CPU时间

第四行:


	Mem:物理内存
	
	3881692 total 物理内存总量
	
	240764 free 空闲内存总量
	
	683188 used 使用的物理内存总量
	
	2957740 buff/cache 内核缓存内存量

第五行:


	Swap: 交换内存
	
	0 total 交换分区总量
	
	0 used 使用的交换分区总量
	
	0free 空闲交换分区总量
	
	2886156 cached 可利用内存总量

第六行:


	PID 进程号
	
	USER 进程管理用户
	
	PR 进程优先级
	
	NI nice值 负值表示高优先级,正值表示低优先级
	
	VIRT 虚拟内存
	
	RES 物理内存
	
	SHR 共享内存
	
	S 进程状态
	
	%CPU 上次更新到现在的CPU时间占用百分比
	
	%MEM 进程使用的物理内存百分比
	
	TIME+ 进程使用的CPU时间总计,单位1/100秒
	
	COMMAND 进程名称

top快捷键

top快捷键:

s: 			默认三秒刷新一次,按s修改刷新时间

空格: 		立即刷新

q: 		退出

P			按CPU排序按CPU排序

M: 		按内存排序

T: 		按时间排序

数字1: 		显示每个内核的CPU使用率

u/U: 		指定显示的用户

h: 			帮助


进程管理

kill

语法

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 -9 `lsof -t -u lucy`  //杀死指定用户所做的一切事情
kill -0 检测进程是否存在

如何调整优先级

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

killall

Linux系统中的killall命令用于杀死指定名字的进程

命令格式:

killall[选项][进程名]

命令选项:

-I 忽略小写

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

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

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

-q 不输出警告信息

-s 发送指定的信号

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

-w 等待进程死亡

—help 显示帮助信息

—version 显示版本显示

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

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

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

nice

nice    是给未启动的进程设置优先级
    -20 ~ 19  数字越小优先级越高
    -n        设定一个优先级,默认是10
    
    nice -n 19 firefox
    nice -19 firefox
    
    nice -n -19 firefox &
    nice --19 firefox &

renice

renice    是给已启动的进程设置优先级
    -n    指定优先级
    -p    给某个进程设置优先级
    -u    给这个用户的所有进程设置优先级
    
    renice -n 19 -p 5666
    renice -19 -u root
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值