进程管理
什么是进程?
进程是已启动的可执行程序的运行实例;
是程序运行的过程, 动态,有生命周期及运行 状态。
进程有以下组成部分:
• 已分配内存的地址空间;
• 安全属性,包括所有权凭据和特权;
• 程序代码的一个或多个执行线程;
• 进程状态。
进程管理
1.静态查看进程 ps
(1)ps aux
命令参数说明:
ps a 显示现行终端机下的所有程序
ps u 以用户为主的格式来显示程序状况。
ps x 不以终端机来区分。
ps aux 输出的字段的含义
(2)进程排序
以CPU占比升序排列
ps aux --sort %cpu
以CPU占比降序排列(减号是降序)
ps aux --sort -%cpu
(3)进程的父子关系
ps -ef
PPID指的是该进程的父进程的PID
(4)自定义显示字段
ps axo
要看什么就用什么字段
2.动态查看进程top
动态查看进程 top,像windows的任务管理器
top #回车,立刻刷新。按z彩色显示,按F,通过光标设置列的顺序
top -d 1 #每1秒刷新
top -d 1 -p 10126 #查看指定进程的动态信息
top -d 1 -p 10126,1 #查看10126和1号进程
3.使用信号控制进程kill
给进程发送信号(kill -l列出所有支持的信号)
相对重要的就两个:
kill -9 #强行杀死进程
kill -15 #正常终止进程
4.进程优先级
Linux 进程调度及多任务
每个CPU在一个时间点上只能处理一个进程,通过时间片技术,来同时运行多个程序。
(1)优先级范围和特性
1)系统中的两种优先级
在top中显示的优先级有两个,PR值和nice值
NI: 实际nice值
PR(+20): 将nice级别显示为映射到更大优先级队列,-20映射到0,+19映射到39
2)优先级特性
nice 值越大: 表示优先级越低,例如+19
nice 值越小: 表示优先级越高,例如-20
(2)查看进程的nice级别
ps axo pid,command,nice --sort=-nice
(3)启动具有不同nice级别的进程
默认情况:启动进程时,通常会继承父进程的 nice级别,默认为0
手动启动不同nice
nice -n -5 sleep 6000 &
nice -n -10 sleep 7000 &
ps axo command,pid,nice | grep sleep
(4)更改现有的进程的nice级别
先创建一个睡眠示例程序
sleep 8000 &
修改他的nice值
renice -20 1687 #数字是PID
5.查看进程的其他命令:pstree -aup
pstree:以树状图的方式展现进程之间的派生关系,显示效果比较直观。
选项:
作业控制 jobs
作业控制是一个命令行功能,也叫后台运行。
关键词介绍:
foreground(fg):前台进程:是在终端中运行的命令,占领终端。
background(bg):后台进程:没有控制终端,它不需要终端的交互。看不见,但是在运行。
后台程序控制示例
1.观察占领前台的现象
sleep 2000 #这是一个类似倒计时的程序,这是倒计时2000秒
运行一个程序,当前终端无法输入。观察占领前台的现象:大部分命令行输入已经无效。
ctrl + c 终止进程
2.运行后台程序
sleep 3000 & #&符号的作用是让该sleep程序在后台运行
3.ps查询该程序
ps aux |grep sleep
4.jobs查看后台进程
+,-代表,使用fg时,默认调动至前台的进程。先是+,后是-
5.调动后台程序至前台
fg 1 #数字1是后台作业序号1
把程序调回前台后,又无法对终端进行控制了
6.消灭后台进程
kill %1
注意:“kill 1” 和 “kill %1” 不同,前者终止PID为1的进程,后者杀死作业序号为1的后台程序。