进程管理
一、 什么是进程
1、进程与程序
1)程序与进程关系
-
程序:可执行的二进制文件,通常以物理文件形式存在。
-
进程:正在执行的程序。
程序转换成进程过程如下:
2)子进程与父进程 PID PPID
在当前bash环境中,生成第二个bash,执行ps -l查看进程相关信息。
发现原bash(父进程)的 PID 和 新bash(子进程)的 PPID 相同。
说明第二个进程是由第一个进程产生的。
3)fork and exec 程序调用流程
-
fork :复制子进程(多一个PPID)
-
exec:临时进程以exec方式来执行世界要执行的程序,成为一个子进程。
流程如下:
2、多人多任务环境
多重登录:ALT+ F1 … F6。
关闭死掉的文件:先 ps -aux 找出错误,然后 kill。
二、任务管理
1、什么是任务管理
当我们登录系统获取 bash shell 后,在单一终端同时执行多个任务的操作管理。
执行bash任务管理的限制:
- bash:任务触发的进程必须来自你shell的子进程(只管理自己的bash)
- 前台:可以让你操作的环境。
- 后台:自动执行的。
- input:后台不能等待 终端 和 shell 的输入
2、job control 的管理
-
后台运行: &
特殊情况:后台执行 vim 时,无法看到提示字符,且无法ctrl c停止。
解决方法:利用数据流重定向,将输出数据传送。 -
前台暂停:ctrl z
-
查看后台任务状态:jobs
- -l (显示命令串 + PID)
- -r(显示后台运行的任务)
- -s(后台暂停的任务)
- +是默认使用任务
- -是第二个任务
-
后台拿到前台:fg (%) 任务号
在后台执行一个休眠100秒任务,任务号为4号。使用 fg 4 命令,将它调到前台执行 -
后台运行:bg % 任务号
仍是这个休眠任务,在前台执行后停止,再使用 bg 4 命令在后台执行 -
管理后台当中的任务:kill
- kill - l(显示能适应的信号有哪些)
- kill - 1(重新读取)
- kill - 9 (强制删除)
- kill - 15(正常删除,默认值)
杀死一个休眠1000秒的程序:
3、脱机管理问题
在脱机和注销后希望任务能继续执行:
- nohup [命令与参数] ( 在终端前台执行 )
- nohup [命令与参数] &( 在终端后台执行 )
会出现如下情况:
nohup与终端无关,该信息会被重定向到【~/nohup.out】。
nohup 不支持 bash内置的命令,命令必须是外部命令
三、进程管理
- 进程权限与能否执行任务相关。
- 如何寻找最耗费系统资源的进程,使系统正常使用。
- 如何找出有问题的进程。
- 如何让优先级高的先运行。
1、查看进程
- 静态显示进程:ps
参数指令 | 作用 |
---|---|
-A | 显示所有进程 |
-e | 同上 |
-a | 不显示与终端有关的进程 |
-u | 使用者进程 |
- x | 与a连用 |
输出格式:
- -l:详细信息
- -j:任务的格式
- -f:更完整的输出
两个常用指令:
ps -l:查看自己bash进程
ps aux:所有系统运行进程
- 动态显示进程:top
指令 | 作用 |
---|---|
-d | 后面跟刷新的秒数,默认5秒 |
-b | 以批量的方式执行top |
-n | 与b搭配使用,执行次数 |
-p | 指定某个PID |
-
每四秒刷新一次top
进入top后的 按键命令:
参数指令 | 作用 |
---|---|
- ? | 显示所有可使用的命令 |
- P | 以cpu排序 |
- M | 同时列出每个进程的PID |
- - N | 以PID排序 |
- - T | 使用CPU时间排序 |
- - k | 给PID信号 |
- - r | 给PID nice值 |
- q | 退出 |
指定某PID查看:
修改NICE值:
- 寻找进程之间相关性:pstree
参数指令 | 作用 |
---|---|
- A | 以ASCII字符连接 |
- U | 以Unicode字符链接 |
- p | 同时列出每个进程的PID |
- u | 列出进程所属用户 |
-
使用命令时可能会遇到这种情况:
说明pstree未安装我们可以通过这条指令安装pstree
2、进程管理
代号 | 名称项目 | 内容 |
---|---|---|
1 | SIGHUP | 启动被终止的进程 |
2 | SIGINT | 中止进程 |
9 | SIGKILL | 强制终止,保留半成品 |
15 | SIGTERM | 正常终止 |
19 | SIGSTOP | 暂停 |
-
kill -signal PID
PID两种模式:
1、直接输入数字
2、% jobnumber 专门用于进行任务管理 -
killal -signal 命令名称
例如:杀死所有sleep进程。
例如:依次选择性杀死所有bash进程
3、进程执行顺序
-
PRI 与 NICE 值
PRI:优先级,PRI越低,优先级越高。
NICE: PRI通过系统内核动态调整,用户无法自行调整。修改NICE值,调整优先级。
PRI 和 NICE 相关性: 新PRI = 原PRI + NICE
当 NICE 为 负 的时候,PRI会优先处理
注意:
- nice 值的范围为 :-20 ~ 19
- root可以随意调整进程的 nice 值。
- 一般用户可调整的 nice 不能为 负,仅能调大不能调小。
-
赋予一个进程NICE值
-
nice:新执行的命令给予nice值
指令如下:
首先转换为root用户,参照之前的注意事项进行操作。
-
renice:已经存在的进程调整nice值
成功修改。
-
4、系统资源
好多好多 记不住细节 man 一下看看
-
free:查看内存使用
-
uname:查看系统内核
-
uptime:查看系统时间和任务负载
-
netstat:追踪网络 或 socket 文件
-
dmesg:分析内核产生信息
-
vmstat:检测系统资源变化
统计主机CPU状态,每秒一次,共三次:
磁盘读写状态:
总结
本章主要介绍了进程和任务管理的相关操作。
其中任务管理的相关操作,如 &、ctrl-z、jobs、fg、bg、kill 等。
还有与进程管理的 ps、top、pstree、kill、killal 等。
但是操作太多,记忆并不是非常深刻,还需熟练。