六、管理Linux系统中的进程
6.1 进程理解
6.1.1 进程
- 程序是静态文件
- 进程时运行中的程序的一个副本
- 进程存在生命周期(准备,运行,终止)
6.1.2 进程状态
状态 | 定义 |
---|
R(TASK_RUNNING | 可执行状态(RUNNING,REDAY |
S(TASK_INTERRUPTIBLE) | 可唤醒睡眠状态 |
D(TASK_UNINTERRUPTABLE) | 不可唤醒睡眠状态 |
T(TASK_STOPPED) | 暂停状态 |
Z(EXIT_ZOMBLE) | 僵死态 |
6.2 进程查看
6.2.1 查看进程树(pstree)
[root@localhost Desktop]$ pstree
6.2.2 显示当前命令执行时进程状态(ps)
命令 | 效果 |
---|
ps a | 显示与终端相关进程(BSD) |
ps x | 显示所有与终端无关进程(BSD) |
ps u | 以用户为归类来显示进程状态信息(BSD) |
ps f | 层级结构显示进程信息 |
ps o | 指定查看选项 pid comm.nice,pri,pcpu,stat,ppid |
ps -e | 显示所有进程(unix) |
ps -f | 显示完整格式信息(unix) |
ps -H | 层级结构显示进程的相关信息 |
ps -o | 指定查看选项,pid comm,nice ,%cpu,%mem |
[root@localhost Desktop]$ ps auf
[root@localhost Desktop]$ ps -eo pid,comm,nice,%cpu
字段 | 解释 |
---|
USER | 用户名称 |
PID | 进程id |
%CPU | CPU用量百分比 |
%MEM | 内存用量百分比 |
VSZ | 占用虚拟内存大小 |
RSS | 常驻内存集大小 |
TTY | 字符终端 |
STAT | 进程状态 |
START | 运行时间 |
TIME | 占用CPU时间 |
COMMAND | 进程名称 |
6.2.2 显示指定信息进程(pgrep)
命令 | 效果 |
---|
pgrep -u + ‘uid’ | 显示指定用户进程 |
pgrep -U+‘name’ | 显示指定用户进程 |
pgrep -t+‘tty’ | 显示指定终端进程 |
pgrep -l | 显示进程名称 |
pgrep -a | 显示完整格式进程名 |
pgrep -P+ ‘pid’ | 显示指定进程的子进程 |
[root@localhost Desktop]$ pgrep -u 1000
[root@localhost Desktop]$ pgrep -U student
[root@localhost Desktop]$ pgrep -t pts/0
[root@localhost Desktop]$ pgrep -lu 1000
[root@localhost Desktop]$ pgrep -aU student
[root@localhost Desktop]$ pgrep -P 0 显示0进程的子进程
6.2.3 根据进程名称获取pid (pidof)
pidof +进程名称 可以获取进程pid
[root@localhost Desktop]$ pidof vim
6.2.4 显示进程信息(top)
[root@localhost Desktop]$ top
参数 | 效果 |
---|
P | cpu百分比进行排序 |
M | 内存百分比排序 |
T | 累计占用CPU时间排序 |
l | 开启/关闭uptime信息 |
t | 开启/关闭task&cpu信息 |
s | 调整刷新频率(默认3S) |
k | 终止进程 |
u | 查看指定用户进程 |
q | 退出top |
d | 改变刷新时间 |
[root@localhost Desktop]$ top -d 5
[root@localhost Desktop]$ top -b
[root@localhost Desktop]$ top -n 10
命令 | 效果 |
---|
top -d+‘时间’ | 指定刷新间隔 |
top -b | 一批次方式显示 |
top -n +‘数量’ | 显示批次数量 |
top | 系统当前时间 |
---|
up | 系统运行时间 |
user | 登陆当前系统的用户数量 |
load average | 平均负载1分钟5分钟15分钟的队列长度(uptime) |
task | 任务 |
%cpu | cpu占用百分比 |
mem | 物理内存 |
swap | 交换分区占用 |
us | 用户空间 |
---|
sy | 内核空间 |
ni | nice调整空间 |
id | 空闲时间 |
wa | 等待 io |
hi | 处理硬件中断 |
si | 处理软件中断 |
st | 被虚拟化程序占用的百分比 |
6.3 进程优先级
6.3.1 按照资源占用划分进程的类型
资源使用量 | 进程类型 |
---|
cpu使用密集 | CPU-Bound |
I/O使用密集 | I/O-Bound |
6.3.2 优先级范围
- 对Linux而言优先级被划分成固定个数(0-139)
- 1-99为实时有优先级,数字越大优先级越高,不用手动处理系统自用
- 100-139为静态优先级,数字越小优先级越高
6.3.3 NICE 值
- NICE值:-20~19对用静态优先级
- 普通用户只可以调低优先级,超级用户任意调整
- 优先级命令
[root@localhost Desktop]$ ps ax -o nice,pid,comm
[root@localhost Desktop]$ nice -n 5 vim file
[root@localhost Desktop]$ renice -n 10 2988
6.4 进程前后台调用
指令 | 含义 |
---|
jobs | 查看后台任务 |
ctrl+Z | 将前台运行进程打入后台 |
bg | 激活后台进程 |
fg | 调回进程 |
& | 运行在后台 |
- 例子1 演示bg命令
- 例子2 演示fg命令
6.5 信号
[root@localhost Desktop]$ man 7 signal
可控信号 | 含义 |
---|
1 | 刷新 |
2 | 中断键盘输入 |
3 | 退出键盘 |
9 | 强制结束 |
15 | 正常关闭 |
18 | 激活进程 |
19 | 强制暂停 |
20 | 正常暂停 |
- 信号指令
kill + '-信号‘ +pid
pkill+ ’ -信号‘ +name
killall +‘-信号’+name 批量处理 - 例子
[root@localhost Desktop]$ kill -9 2988
[root@localhost Desktop]$ killall -9 vim
6.6 系统守护进程
6.6.1 守护进程的定义
- 守护进程就是通常讲的Daemon进程
- 是linux后台执行的服务进程
- 是独立控制终端,周期性的执行某种任务或等待处理某些发生事件
- 不会随终端关闭而停止,直到接受停止信息才会结束
6.6.2 守护进程类型
守护进程类型 | 使用系统及特点 |
---|
Sysv | 经典的守护进程类型延用到rhel6 |
upstart | 做到并行启动rhel6中应用 |
system | 独立完成启动,rhel7中使用 |
6.6.3 systemctl 用法
指令 | 用途 |
---|
systemctl list-unit-files | 查看服务开机运行情况 |
systemctl list-units | 查看服务当前运行情况 |
systemctl list dependencies | 查看服务依赖性 |
systemctl status service | 查看服务状态 |
systemctl start service | 开启服务 |
systemctl stop service | 关闭服务 |
systemctl reload service | 重新加载服务配置 |
systemctl restart service | 重新启动服务 |
systemctl enable service | 设定服务开启启动 |
systemctl enable -now service | 设定服务开机启动并开始服务 |
systemctl disable service | 设定服务开机关闭 |
systemctl set-default multi-user.target | 设定系统年运行级别为无图形网络模式 |
systemctl set-default graphical.target | 设定系统运行级别为图形网络模式 |
- 例子1 查看状态
- 例子2 查看开启关闭的服务
- 例子3 查看当前运行状态
- 例子4 在运行中查找服务 /+服务名称
- 例子5关闭服务