Liunx操作系统引导过程
引导过程总览
开始自检(BIOS)->MBR引导->GRUB菜单->加载内核(kernel)->init进程初始化
说明:开机自检完成就进入磁盘,MBR会从分区中调出记录的启动菜单,GRUB引导器提供用户可选择的操作系统,选择完成后,操作系统内核开始接管(/boot/vmLinuz...)。init初始化会调用/sbin/init
系统初始化进程
init进程
由Linux内核加载运行/sbin/init程序
init进程是系统中第一个进程
init进程的PID(进程标记)号永远为1
Systemd
Systemd是Liunx操作系统的一种init软件
CentOS7中采用全新的Systemd启动方式,取代传统的SysVinit
CentOS7中运行的第一个init进程是/lib/systemd/systemd
Systemd单元类型
运行级别所对应的Systemd目标
排除启动类故障
修复MBR扇区故障
故障原因:
病毒、木马等造成的破坏
不正确的分区操作、磁盘读写误操作
故障现象:
找不到引导程序,启动中断
无法加载操作系统,开机后黑屏
解决思路:
应提前作好备份文件
以安装光盘引导进入急救模式
从备份文件中恢复
实验:
表现是SDA的boot系统被错误覆盖,导致重启后,找不到操作系统(所有的分区不见了,SDA硬盘出错了),进入到虚拟机安装界面
模拟过程:
1.挂载一块新硬盘,备份SDA硬盘的内容
mkdir /backup
mount /dev/sdb1/backup
dd if=/dev/sda of=/backup/sda.mbr.bs=512 count=1
2.模拟MBR扇区故障,重启会找不到操作系统
dd if=/dev/zero of=/dev/sda bs=512 count=1
3.故障恢复
在虚拟机安装界面,选择:Troubleshooting,进入修复界面
选择Rescue... 的选项进入救援模式
此时系统会自动查找硬盘中的Linux系统及分区,并尝试挂载到/mnt/sysimage目录
进入shell命令行,输入以下命令:
fdisk -l /dev/sda 可以看到该硬盘下已没有任何分区
mount /dev/sdb1/tmpdir 由于系统无法正常启动,自动挂载不生效,新加的硬盘需要重新挂载
dd if=/tmpdir/sda.mbr.bak/dev/sda 把备份的内容恢复到sda硬盘中
exit 自动重启,即可修复系统
修复GRUB引导故障
故障原因:
MBR中的GRUB引导程序遭到破坏
grub.conf文件丢失、引导配置有误
故障现象:
系统引导停滞,显示“grub>” 提示符
解决思路:
尝试手动输入引导命令
进入急救模式,重写或者从备份中恢复grub.conf
向 MBR 扇区中重建grub程序
遗忘root用户密码
故障原因:
遗忘root用户的密码
故障现象:
无法进行需要root权限的管理操作
若没有其他可用帐号,将无法登录系统
解决思路:
进入急救模式,重设密码
服务控制及切换运行级别
系统服务控制
systemctl 控制类型 服务名称
控制类型
start:启动
stop:停止
restart:重新启动
reload:重新加载
status:查看服务状态
disable:禁用
……
Liunx系统的运行级别
查看运行级别
runlevel命令
systemctl工具
临时切换运行级别
init命令
systemctl工具
设置永久运行级别
优化启动过程
ntsysv工具:ntsysv --level 级别列表
提供一个交互式、可视化窗口
可以在字符终端运行
便于集中管理多个服务
PS:此工具只能使用图形化界面
systemctl工具
不提供交互式、可视化窗口
管理单个服务效率更高
查看系统服务的启动状态:systemctl is-enabled 服务名称
设置系统服务的启动状态:systemctl enable/disable 服务名称
进程和计划任务管理
进程:相对独立,具有一定的系统资源(CPU、内存、硬盘、网络等)调用权限,一般应用程序会对应一个或多个进程
线程:一般指的是系统执行的最小单元
进程的查看:ps命令,ps -aux;ps -ef; 可以辅用grep进行更精确的查看
top命令可以动态查看
pgrep可以只查看进程与应用的对应关系,也可以指定用户或连接
进程的开启:由应用程序的执行命令来开启(如果是瞬时命令,则用户无法观察到),持续命令才可以观察
进程的关闭:如果是瞬时命令,执行完成后,进程直接关闭;如果是持续命令,要么是持续结束了,或者是程序关闭了造成的进程关闭
进程的强行关闭:kill -9 强行杀死进程
pkill -U 用户 -t 终端 应用名 杀死对应用户对应终端的应用所占进程
Ctrl+z可以暂停正在运行的程序(进程)
jobs可以查看程序的执行情况(一般是看暂停的),fg可以恢复已暂停的进程
Ctrl+c可以中断正在运行的程序
计划任务管理:
at一次执行,crontab周期式执行
at:需要提前下载at应用,执行atd来运行at服务
at 时:分 年-月-日 进入到at命令行
at>输入要执行的指令
at><edf> ctrl+d提交任务
atq可以查看未执行的任务计划
atrm可以删除未执行的计划任务
crontab:
crontab五颗星:* * * * *,每颗星对应代表不同的时间单位:分,时,日,月,周
最小运行周期对应单位最大的那一项的周期,一般推荐把单位更小的周期项指定具体值。
*代表任意时间
,代表不连续的多个时间点
-代表连续的范围
/代表执行的频率
crontab -e 进行设置
30 8-20 * * * 要执行的命令