进程管理
【前言】
程序:
(比如公司)
- 保存在硬盘、光盘等介质可执行代码
- 静态保存的代码(二进制)
进程:
(比如部门)
- 在CPU及内存中运行的过程
- 动态的代码(有生命周期和状态)
- 有父、子进程
线程(比如员工)与进程:
- 资源分配与调度
- 进程是资源调配的基本单位
- 线程是程序执行的最小单位
一、查看进程信息
1.1 查看静态的进程统计信息——ps
ps -aux(参数)
参数 | 说明 |
---|---|
-u | 列出进程的用户 |
-a | 显示终端上的所有进程 |
-x | 所有的终端进程 |
名称 | 描述 |
---|---|
USER | 启动该进程的用户账号名称 |
PID | 进程的ID,当前系统中是唯一的 |
%CPU | 占用的CPU百分比 |
%MEM | 占用内存的百分比 |
VSZ | 该进程使用的虚拟内存量(KB) |
RSS | 该进程占用的物理内存量(KB) |
TTY | 启动进程的终端名。不是从终端启动的进程则显示为? |
STAT | 该进程的状态。(见表格下详解) |
START | 该进程被触发启动时间 |
TIME | 该进程实际使用CPU运行的时间 |
COMMAND | 进程的启动命令 |
僵厂进程:
僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。如果父进程先退出 ,子进程被init接管,子进程退出后init会回收其占用的相关资源
1.2 查看静态的进程统计信息——ps -elf
ps -elf(参数)
参数 | 说明 |
---|---|
-e | 系统内所有进程 |
-l | 长格式显示 |
-f | 完整的格式显示 |
名称 | 描述 |
---|---|
F | 内核分配给进程的系统标记 |
s | 进程的状态 |
UID | 启动这些进程的用户 |
PID | 进程的进程ID,每个进程都有一个唯一的PID |
PPID | 父进程的进程号(如果该进程是由另—个进程启动的) |
C | 进程生命周期中的CPU利用率 |
PRI | 进程的优先级(越大的数字代表越低的优先级) |
NI | 谦让度值用来参与决定优先级 |
ADDR | 进程的内存地址 |
sz | 假如进程被换出,所需交换空间的大致大小 |
WCHAN | 若该进程在睡眠,则显示睡眠中的系统函数名 |
STIME | 进程启动时的系统时间 |
TTY | 进程启动时的终端设备 |
TIME | 运行进程需要的累计CPU时间 |
CMD | 进程的启动命令 |
2.3 查看动态的进程排名信息——top
[root@Kiro]# top
top命令
命令 | 说明 |
---|---|
P键 | 根据CPU使用百分比大小进行排序 |
M键 | 根据驻留内存大小进行排序 |
N键 | 根据启动时间进行排序 |
c键 | 切换显示命令名称和完整命令行 |
h键 | 可以获得top程序的在线帮助信息 |
k键 | 根据提示输入指定进程的PID号并按Enter键终止对应的进程 |
q键 | 退出top程序 |
数字1键 | 显示CPU个数和状态 |
top各行解释
第一行:任务队列信息
信息 | 说明 |
---|---|
12:45:44 | 系统时间 |
up 3:55 | 系统已运行时长 |
3 users | 当前登录用户数 |
load average: 0.08, 0.04, 0.05 | 系统负载,即单位时间内系统处理的任务数,后面三个数值分别为8分钟、4分钟、5分钟前到现在的平均值 |
第二行:进程信息
信息 | 说明 |
---|---|
Tasks | 总进程数 |
running | 正在运行的进程数 |
sleeping | 休眠的进程数 |
stopped | 中止的进程数 |
zombie | 僵死的进程数 |
第三行:CPU的信息
信息 | 说明 |
---|---|
us | 用户占用 |
sy | 内核占用 |
ni | 优先级调度占用 |
id | 空闲CPU,要了解空闲的 CPU 的百分比,主要看 %id 部分 |
wa | I/O 等待占用 |
hi | 硬件中断占用 |
si | 软件中断占用 |
st | 虚拟化占用 |
第四行:内存的信息
信息 | 说明 |
---|---|
total | 总内存空间 |
free | 空闲内存 |
used | 已用内存 |
buff/cache | 物理内存和交换内存的缓冲区总和 |
第五行:交换空间的信息
信息 | 说明 |
---|---|
total | 总交换空间 |
free | 空闲交换空间 |
used | 已用交换空间 |
avail Mem | 可用物理空间 |
2.4 根据特定条件查看进程信息——pgrep
[root@Kiro opt]# pgrep -l -U kiro
18505 gnome-keyring-d
18510 gnome-session-b
18519 dbus-launch
18520 dbus-daemon
参数 | 说明 |
---|---|
-l | 显示进程名 |
-U | 指定特定用户 |
-t | 指定终端 |
2.4 以树形结构列出进程信息——pstree
pstree命令可以查看当前系统的进程树,包括个各进程对应的PID号、用户名、完整命令等信息
选项 | 意义 |
---|---|
-A | 各进程树之间的连接以ASCII字符来连接 |
-u | 各进程树之间的连接以Unicode字符来连接,在某些终端界面下可能会有错误 |
-p | 同时列出每个进程的PID |
-u | 同时列出每个进程的所属账号名称 |
不用加-u 因为已经指定用户信息了
二、进程的启动与控制
2.1 启动进程
2.1.1 手工启动
- 前台启动:用户输入命令,直接执行程序
- 后台启动:在命令行尾加入“&”符号
输出信息中包括后台任务序号、PID号
进程启动后会直接放入后台,而不占用前台的命令操作界面,方便用户进行其他操作:
2.1.2 调度启动
- 使用at命令 :一次性计划任务
服务脚本名称:/etc/init.d/atd
eg:在当天的23:00关闭电脑
- 使用crontab命令,设置周期性计划任务
2.1.3 进程的前后台调度(Ctrl + Z 组合键、 jobs命令和fg命令)
- Ctrl + Z 组合键: 将当前进程挂起,即调入后台并停止执行
- jobs命令: 查看处于后台的任务列表
[-l]选项显示PID号
- fg命令: 将后台进程恢复到前台运行,可指定任务序列号
[root@localhost ~]# jobs
[1]- Stopped cp /dev/cdrom mycd.iso
[2]+ Stopped top
[root@localhost ~]# fg 1
2.1.4 终止进程的运行
- Ctrl+C组合键
- kill、killall命令
- pkill命令
-U | 根据进程所属的用户名终止相应进程 |
---|---|
-t | 根据进程所在的终端终止相应进程 |