进程:在Linux中每一个执行的程序称为进程,每一个进程都有一个pid(进程号)
进程:可以以前台和后台的方式存在,前台的进程(在显示器中显示),后台的进程(在后台运行)
Linux进程类型:
交互进程:由shell启动的进程,既可在前台运行,也可在后台运行;
批处理进程:与终端没有联系,是一个进程序列;
- 守护进程:linux系统启动时启动的进程,并在后台运行;
ps查看系统执行的进程
ps -a | 显示当前终端的所有进程信息 |
ps -u | 以用户的格式显示进程信息 |
ps -x | 显示后台进程运行的参数 |
ps -aux | 查看全部进程 |
ps -ef | 全格式显示所有进程(-e全部进程,-f全格式) |
下面对参数的解释:
USER | 使用者 |
PID | 进程号 |
%CPU | 占用cpu的比例 |
%MEM | 占用物理内存的比例 |
VSZ | 占用的虚拟内存(kb) |
RSS | 占用物理内存(kb) |
TTY | 终端 |
STAT | 运行状态 |
START | 执行的开始时间 |
TIME | 占用cpu时间 |
COMMAND | 进程名 |
STAT的几种状态:
S- 随眠 s-先导进程 N-优先级较低 R-正在运行
D-短期等待 Z-僵尸进程 T-被追踪或停止
pidof查询PID
用法:pidof [选项] [服务名称]
kill 终止进程
kill [选项] 进程号 结束进程
killall [选项] 进程名称 可以结束多个进程
pkill [-t 终端号] 进程名 用于踢出登录用户
交互信号: 查看信号 kill -l
信号 | 名称 | 功能 |
1 | SIGHUP | 挂起进程 |
2 | SIGINT | 终止进程 |
3 | SIGQUIT | 停止进程 |
9 | SIGKILL | 无条件终止进程 |
15 | SIGTERM | 尽可能终止进程 |
17 | SIGSTOP | 无条件停止进程,但不是终止进程 |
18 | SIGSTP | 停止或暂停进程,但不终止进程 |
19 | SIGCONT | 继续运行停止的进程 |
例子:
kill -9 进程编号 强制杀死该进程
trap 捕获信号
格式: trap command signals singnals 可以使用信号数值,也可以使用信号名
注意:
例如:
trap "echo good" SIGINT 执行Ctrl+C时,不会终止进程,会输出 good
trap "echo exit" EXIT 脚本退出前 执行 exit
修改或移除捕获:
要想在脚本中的不同位置进行不同的捕获处理,只需重新使用带有新选项的trap命令。
trap "echo ' Sorry... Ctrl-C is trapped.'" SIGINT
#
count=1
while [ $count -le 5 ]
do
echo "Loop #$count"
sleep 1
count=$[ $count + 1 ]
done
#
trap "echo ' I modified the trap!'" SIGINT
#
count=1
while [ $count -le 5 ]
do
echo "Second Loop #$count"
sleep 1
count=$[ $count + 1 ]
done
移除捕获:
trap -- signals
trap - signals
pstree查看进程树
pstree[选项]
选项 | 含义 |
-p | 显示进程号 |
-u | 显示所属用户 |
lsof 列出进程调用的文件信息
格式: lsof [选项]
选项 | 功能 |
-c 字符串 | 只列出以字符串开头的进程打开的文件 |
+d 目录名 | 列出某个目录中所有被进程调用的文件 |
-u 用户名 | 只列出某个用户的进程打开的文件 |
-p pid | 列出某个 PID 进程打开的文件 |
进程优先级:
进程优先级由 PRL 和 NI 决定
PRI 由内核决定,NI可以通过用户修改
NI越小进程越快执行,NI越大进程越慢执行
NI 值时有几个注意事项:
- NI 范围是 -20~19。
- 普通用户调整 NI 值的范围是 0~19,而且只能调整自己的进程。
- 普通用户只能调高 NI 值,而不能降低。如原本 NI 值为 0,则只能调整为大于 0。
- 只有 root 用户才能设定进程 NI 值为负值,而且可以调整任何用户的进程。
关键词 | 用法 |
nice [-n NI] 命令 | 给要启动的进程赋予NI值 |
renice [NI] PID | 进程运行时修改其 NI 值 |
当输入一条指令时 最后加上 & 代表放后台执行
当一条指令运行时输入以下指令:
ctrl + z | 将前台执行的指令放到后台并暂停 |
fg | 将后台中的命令调至前台继续运行 |
bg | 将一个后台暂停的命令,继续运行 |
fg %工作号
- %号可以省略
- 直接 fg 的话,只会把带 + 的后台任务恢复到前台
bg%工作号
- % 可以省略
nohup后台命令脱离终端运行
nohup 命令的作用就是让后台工作在离开操作终端时,也能够正确地在后台执行
格式: nohup command &
由于nohup命令会解除终端与进程的关联,nohup命令会自动将STDOUT和STDERR的消息重定向到一个名为nohup.out的文件中。
jobs 查看正在运行的作业
格式: jobs [选项]
选项 | 描述 |
-l | 列出进程的PID以及作业号 |
-n | 只列出上次shell发出的通知后改变了状态的作业 |
-p | 只列出作业的PID |
-r | 只列出运行中的作业 |
-s | 只列出已停止的作业 |
- - 代表下一个默认作业
- + 代表默认作业
注意: 任何时候只有一个 - 进程 和一个 +进程
动态监控进程
top 查看正在执行的进程,动态监控
top [选项]
选项 | 功能 |
-d 秒数 | 指定top命令每隔几秒更新,默认为三秒 |
-i | 使top不显示闲置或僵尸进程 |
-p | 指定监控进程ID来仅仅监控某个进程的状态 |
上面的解释为:
交互操作:输入top 后载页面中输入操作
操作 | 功能 |
P | 以cpu使用率排序(默认) |
M | 以内存的使用率排序 |
N | 以PID排序 |
q | 退出top |
u 之后再输入 用户名 | 监视特定用户 |
k 之后输入进程号 | 终止特定进程 |