Linux速通06 系统的初始化服务和监控
Linux系统引导的顺序
# 掌握 Linux系统引导的顺序
* BIOS的工作是检查计算机的硬件设备,如CPU、内存和风扇速度等
* MBR会在启动盘的第一个块中,大小为512B,其中前446B是引导信息,中64B是分区信息,后2B是结束标志位
* kernel主要是装载计算机设备的驱动程序以便操作系统可以控制计算机上的设备,并且以只读的方式挂载根文件系统,也就是说此时的操作系统只能读到根文件系统所在的分区
* init程序的进程 id为1,即 Linux操作系统执行的第一个程序
BIOS的初始化和引导加载程序
# BIOS的定义:BIOS(Basic Input/Output System 基本输入输出设备),是硬件和软件之间的接口
GRUB程序和 grub.conf文件
# GRUB的定义:GRUB是 Grand Unified Bootloader(多重操作系统启动管理器)的缩写
# GRUB的配置文件:grub.conf
* 设置 grub Md5加密命令 grub-MD5-crypt
* Password = 明文或 Password = 密文(编辑 grub配置文件的密码)
* Title red hat 标题
* Password = 明文或 Password = 密文(加载内核系统引导必须的密码)
内核的初始化和 init的初始化
# init的配置文件:/etc/inittab
# 了解 init程序要做的工作:
* 决定预设(默认)要使用哪个 run levels(运行级别)
* 执行一些系统初始化的脚步(程序)来初始化操作系统
* 根据 run level的设置来执行所对应目录中的程序,以决定要启动哪些服务
* 设定某些组合键
* 定义 UPS不间断电源系统,即当电源出现问题时或电源恢复时要执行哪些程序
* 产生6个virtual consoles,也就是 tty1~tty6
run level(运行级别)
# 所有的运行级别及每个运行级别对应的功能
* 在 /etc/inittab文件中设置默认的启动级别
run level | 功能 |
0 | 关机,不能设置为 initdefault(默认运行级别) |
1 | 单用户模式,只有root用户可以登录,用于系统维护 |
2 | 多用户模式,但是没有启动网络的功能 |
3 | 多用户模式,启动了网络功能,时文字界面 |
4 | 多用户自定义模式,默认与 run level 3相同 |
5 | 与 run level 3相同,但是启动了 X11(图形界面) |
6 | 重新启动系统,不能设置为initdefault |
关闭系统及重启系统
# 常用的可以关闭系统的命令:
* shutdown -h now
* halt
* poweroff
* init 0
# 常用的可以重启系统的命令:
* shutdown -r now
* reboot
* init 6
* ctrl + alt + delete
单用户模式
# 在开机读秒界面任意按键,进入如下界面
# 按 e 进入选择界面
# 选择 kernel 按 e
# 输入 空格 和 1(表示 init 1 的模式开机),回车后按 b,进入到单用户模式
GRUB加密
# 在 /etc/grub.conf文件下新增一行:password=密码内容
* 密码可用 grub-md5-crypt加密,将加密后内容复制到密码内容中也可以
# 加密后再想进入 GRUB就需要先按 p输入密码,再按 e
破解 GRUB加密
# 在开机界面按 F2进入 BIOS界面,设置成 CD/DVD引导或外部存储引导
# 选择救援模式
# 一路点击 OK,原系统文件被挂载到了 /mnt/sysimage目录下
# 修改 grub.conf文件,删除密码
# 重启后改回 BIOS即可正常进入 GRUB界面
BIOS加密
# 重启后 按 F2 进入BIOS界面
# 设置 supervisor password
# 再次进入 BIOS后就会要求用户输入密码
系统进程监视工具
# top 命令:top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器
# 使用 top命令显示的系统状态(默认每5秒刷新一下屏幕上的显示结果)
* 第一行:任务队列信息
信息 | 含义 |
20:41:23 | 当前时间 |
up 1 min | 系统运行时间,格式为 时 :分 |
1 user | 当前登录用户数 |
load average:0.12, 0.05, 0.02 | 系统负载,三个数值分别时 1分钟、5分钟、15分钟前到现在的平均值 CPU负载 <=1:能正常运行 CPU负载 > 1:超负荷运转 多核CPU,load average <= CPU核数 * 0.7 |
* 第二三行:进程和CPU信息
信息 | 含义 |
Tasks:74 total | 进程总数 |
1 running | 正在运行的进程数 |
73 sleeping | 睡眠的进程数 |
0 stopped | 停止的进程数 |
0 zombie | 僵尸状态的进程数 |
Cpu(s):0.0%us | 用户空间占用CPU百分比 |
0.3%sy | 内核空间占用CPU百分比 |
0.0%ni | 用户进程空间内改变过优先级的进程占用CPU百分比 |
99.7%id | 空闲CPU百分比 |
0.0%wa | 等待输入输出的CPU时间百分比 |
0.0%hi | 硬件中断占用CPU时间的百分比 |
0.0%si | 软件中断占用CPU时间的百分比 |
* 第四五行:内存信息
* 进程信息
信息 | 含义 |
PID | 进程 id |
PPID | 父进程 id |
RUSER | Real User Name |
UID | 进程所有者的用户 id |
USER | 进程所有者的用户名 |
GROUP | 进程所有者的组名 |
TTY | 启动进程的终端名,如果不是从终端启动的进程则显示为? |
PR | 优先级 |
NI | nice值,负值表示高优先级,正值表示低优先级 |
P | 最后使用的CPU,仅在多CPU环境下有意义 |
%CPU | 上次更新到现在的CPU时间占用百分比 |
TIME | 进程使用的CPU时间总计,单位秒 |
TIME+ | 进程使用的CPU时间总计,单位 1/100 秒 |
%MEM | 进程使用的物理内存百分比 |
VIRT | 进程使用的虚拟内存总量,单位 kb,VIRT = SWAP + RES |
SWAP | 进程使用的虚拟内存中,被换出的大小,单位 kb |
RES | 进程使用的虚拟内存中,未被换出的大小,单位 kb,RES = CODE + DATA |
CODE | 可执行代码占用的物理内存大小,单位 kb |
DATA | 可执行代码以外的部分(数据段 + 栈)占用的物理内存大小,单位 kb |
SHR | 共享内存大小,单位 kb |
nFLT | 页面错误次数 |
nDRT | 最后一次写入到现在,被修改过的页面数 |
S | 进程状态,D=不可中断的睡眠状态,R=运行状态,S=睡眠状态,T=跟踪/停止,Z=僵尸进程 |
COMMAND | 命令行/命令名 |
WCHAN | 若该进程在睡眠,则显示睡眠中的系统函数名 |
Flags | 任务标志,参考 sched.h |
系统进程控制工具 - free
# free 命令:显示内存的使用状态
# 各个字段含义:
* 物理内存 FO[2][1] = 1906280KB
* 物理内存中被使用的内存 FO[2][2] = 171396KB
* 可以使用内存 FO[2][3] = 1734884KB
* 等式:FO[2][1] = FO[2][2] + FO[2][3]
* 共享内存 FO[2][4] = 224KB,表示几个进程共享的内存(数据共享)
* 已分配但仍未使用的 buffers 大小 FO[2][5] = 6132KB
* 已分配但仍未使用的 cached 大小 FO[2][6] = 41040KB
* buffer的解释:A buffer is something that has yet to be "written" to dis
* cached的解释:A cache is something that has been "read" from the disk and stored for later use.
* 也就是说,buffer 时用于存放要输出到 disk(块设备)的数据的,而 cache是存放从 disk上读出的数据。二者提高了 I/O性能,并由OS管控
# free命令的所有输出值都是从 /proc/meminfo 中读出的
系统中进程的监控 - ps 命令
# 进程的定义:进程是程序的一次动态执行
# 守护进程的定义:守护进程是在后台运行并提供系统服务的一些进程
# 父进程、子进程的定义:当一个进程创建另一个进程时,第一个进程被称为新进程的父进程,新进程被称为子进程。
# ps 命令的功能:用来显示当前进程的状态
* 例:ps -aux :显示所有的与用户相关的完整信息
pstree命令
# 功能:以树状图显示程序
# 举例:
* 列出PID为4729的进程的进程状态数的命令:pstree 4729
kill 命令
# 功能:把一个信号发送给一个或多个进程,默认发送终止信号
# 举例:
* 杀死 PID为3906的进程的命令:kill -9 3906
pgrep命令
# 功能:通过名称或属性查找进程
# 举例:
* 查找名为 firefox的进程的命令:pgrep firefox
pkill 命令
# 功能:通过名称或其他属性发送信号给进程
# 举例:
* 杀死名为 firefox的进程的命令:pkill firefox