Liunx的引导过程与服务控制

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 * * * 要执行的命令

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2023-12-14 21:30:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-14 21:30:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-14 21:30:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-14 21:30:02       20 阅读

热门阅读

  1. idea快捷键和vscode快捷键对比

    2023-12-14 21:30:02       36 阅读
  2. 算法:校验二叉树是否相同

    2023-12-14 21:30:02       42 阅读
  3. C++相关闲碎记录(11)

    2023-12-14 21:30:02       35 阅读
  4. canvas中实现画布内元素的拖拽(下)

    2023-12-14 21:30:02       50 阅读
  5. 算法:合并两个有序数组

    2023-12-14 21:30:02       39 阅读
  6. 工作之踩坑记录

    2023-12-14 21:30:02       45 阅读
  7. 音频筑基:总谐波失真THD+N指标

    2023-12-14 21:30:02       55 阅读
  8. 面向对象—继承

    2023-12-14 21:30:02       31 阅读
  9. 面试准备篇(持续更新)

    2023-12-14 21:30:02       40 阅读