学习目标:评估和控制运行在红帽企业 Linux 系统上的进程
学习内容:
1 . 列出进程
进程 process 是正在运行的程序,包括:
- 分配的内存地址空间
- 安全属性,包括所有权和特权
- 一个或多个线程
- 进程状态
进程的环境包括:
- 本地和全局变量
- 当前调度上下文,
- 分配的系统资源,如文件和网络端口
描述进程状态
多任务操作系统中,每个 CPU 同一时间处理一个进程,进程运行时具有
不同状态
列出进程
ps 命令用于列出当前进程,包括: - 运行进程的用户 UID
- 进程 PID
- CPU 在其上运行时间
- 分配的内存量
- 进程的 stdout 位置,称为控制终端
2 . 控制作业
描述作业和会话
job control 是 shell 的一种功能,允许单个 shell 实例运行和管理多个命令
一个终端同一时间只能对一个作业发送信号和读取信息,这个作业进程成为该终端的前台进程
可以将作业进程放入后台,可以运行也可以暂停
每个 terminal 就是一个会话,里面可能含有一个前台进程和任意数量的后台进程。一个作业只能属于一个会话
ps 输出中有些进程由系统启动,而不是由 shell 提示符启动,这种进程没有 terminal,无法切换到前台,在 ps 中显示为?
在后台运行作业
在命令后加 & 即可在后台启动,shell 继续显示提示符。
jobs 命令可以显示作业列表。
fg %jobid 可将后台作业转至前台。
ctrl+z 可将前台进程放到后台,并暂停运行。
ps j 命令显示作业信息,如果进程状态是 T,表示暂停。
bg %jobid 可以在后台继续运行作业。
3 . 中断进程
signals 指的是发给进程的软件中断,signals 向执行中的程序报告事件,
生成 signals 的事件可以使错误或者外部事件
使用信号控制进程
一般 signals 分为三种类型:- Term 立即关闭
- Core 保存程序的内存映像(核心转储),然后终止
- Stop 程序暂停运行,等待恢复运行
通过键盘发送 signals 的命令:
- 暂停 Ctrl-z ----stop 终止或等待恢复
- 中断 Ctrl-c ----term 立即终止并退出
- 核心转储 Ctrl-\ ---- core 程序保存内存映像,然后终止
- signal 可以通过名称(如 -HUP 或 -SIGHUP)或编号(如-1 或 -9)指定
- 使用 kill 命令来向进程发送 signals
使用 kill 命令来向进程发送 signals : - kill 命令可以向进程发送任何 signals
- kill -l 查看可以发生的 signals
4 . 监控进程活动
uptime 命令可以显示当前 load average,lscpu 可以显示 cpu 数量。
将 load average 除以 cpu 数量,如果负载接近 1,表示 cpu 负载非常高。
top 命令默认每隔 5 秒刷新动态负载。
top 还能输出:PID、进程所有者 USER、虚拟内存 VIRT、物理内存 RSS、进程状态、CPU 时间TIME(自启动以来总处理时间)、进程命令名称COMMAND。