C6开机启动流程
1.内核引导,加电自检(通电后检查内核):检查bios的配置,检测硬件
装好系统之后才会进行以下内容
MBR 引导 (3.2.1...)
GRUB菜单 (选择不同的系统)(按e,进入单用户模式)
c6改密码很简单,可以直接改
2.运行init
- 0:关机(系统加载到init 0 ,会开关机)
- 1:单用户模式(修改密码或开机死循环)(单用户工作状态,root权限,用于系统维护,禁止远程登陆)(开机按E进入单用户命令行模式之后,vim /etc/inittab 修改左下角重启就好)(开机按e进入单用户命令行模式之后,echo xx |passwd --stdin root 可以修改密码
- 2:多用户模式(没有文件系统和网络)
- 3:多用户模式(命令行,默认模式)(纯命令行模式)
- 4:没有使用的模式(废物模式)
- 5:多用户模式(图形化界面)
- 6:重启(默认运行级别不能设为6,否则不能正常启动,死循环)
c6:
查看当前运行的级别,c6,c7都可以使用runlevel查看运行级别
[root@oldboy ~]# vim /etc/inittab # 可以看到左下角的运行级别
[root@zls ~]# runlevel 上一次的运行级别和现在的级别
N 3
临时切换运行级别
[root@zls ~]# init 5 切换,没有图形化界面则不会切换
[root@zls ~]# runlevel
3 5
永久切换运行级别
[root@zls ~]# vim /etc/inittab
id:3:initdefault
c7:
[root@oldboy ~]# vim /etc/inittab
# inittab is no longer used when using sy@R_502_6063@d.
使用sy@R_502_6063@d时不再使用inittab。
# ADDING CONfigURATION HERE WILL HAVE NO EFFECT ON YOUR SY@R_502_6063@.
在此处添加配置不会对您的系统产生任何影响。
# Ctrl-Alt-Delete is handled by /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/ctrl-alt-del.target
Ctrl Alt Delete由/usr/lib/sy@R_502_6063@d/sy@R_502_6063@/Ctrl-Alt-del.target处理
# sy@R_502_6063@d uses 'targets' instead of runlevels. By default, there are two main targets:
sy@R_502_6063@d使用“targets”而不是runlevels。默认情况下,有两个主要目标:
# multi-user.target: analogous to runlevel 3
multi-user.target:类似于runlevel 3
# graphical.target: analogous to runlevel 5
graphical.target:类似于runlevel 5
# To view current default target, run:
要查看当前默认目标,请运行:
# sy@R_502_6063@ctl get-default
#
# To set a default target, run:
要设置默认目标,请运行:
# sy@R_502_6063@ctl set-default TARGET.target
[root@oldboy ~]# sy@R_502_6063@ctl set-default multi-user.target # 永久
=init 3:多用户模式(命令行,默认模式)(纯命令行模式)
[root@oldboy ~]# ll /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/|grep '.target$'
-rw-r--r--. 1 root root 402 Aug 8 2019 shutdown.target 0
-rw-r--r--. 1 root root 486 Aug 8 2019 rescue.target 1
-rw-r--r--. 1 root root 492 Aug 8 2019 multi-user.target 234
-rw-r--r--. 1 root root 558 Aug 8 2019 graphical.target 5
-rw-r--r--. 1 root root 552 Aug 8 2019 poweroff.target 6
3.系统初始化(启动相关服务)
在init的配置文件中(/etc/inittab)有这么一行: si::sysinit:/etc/rc.d/rc.sysinit 它调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。
它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。
l5:5:wait:/etc/rc.d/rc 5
这一行表示以5为参数运行/etc/rc.d/rc,/etc/rc.d/rc是一个Shell脚本,它接受5作为参数,去执行/etc/rc.d/rc5.d/目录下的所有的rc启动脚本,/etc/rc.d/rc5.d/目录中的这些启动脚本实际上都是一些连接文件,而不是真正的rc启动脚本,真正的rc启动脚本实际上都是放在/etc/rc.d/init.d/目录下。
而这些rc启动脚本有着类似的用法,它们一般能接受start、stop、restart、status等参数。
/etc/rcn.d 下面以S开头的 (软连接)是开机启动的服务的顺序,以K开头的是停止(开机不启动)的服务
# c6可以使用以下命令,c7不能使用(add,可以使用runlevel)(可以使用chkconfig --list,废物)
chkconfig --list 列出所有的系统服务 # c6c7都可以使用
chkconfig --add httpd 增加httpd服务 # 先添加,后选择级别
chkconfig --del httpd 删除httpd服务
chkconfig命令提供了一种简单的方式来设置一个服务的运行级别。例如,为了设置MysqL服务器在运行级别3和4上运行,# 你必须首先将MysqL添加为受chkconfig管理的服务:
chkconfig --add MysqL
现在,我们在级别3和5上设定服务为“on”
chkconfig --level 35 MysqL on # 纯命令模式和图形化模式
或
chkconfig MysqL on # 默认是3 上 on ,开机--/etc/inittab--/rc.sysinit--/etc/rcN.d 然后按有没有,按顺序(按链接)进行启动服务
在其他级别上设为off
chkconfig --level 01246 MysqL off
为了确认你的配置被正确的修改了,我们可以列出服务将会运行的运行级别,如下所示:
#chkconfig --list MysqL
MysqL 0:off 1:off 2:off 3:on 4:off 5:on 6:off
-------------------------
[root@oldboy ~]# ll /etc/sy@R_502_6063@d/sy@R_502_6063@/multi-user.target.wants/ 查看开机自启动服务
[root@oldboy ~]# chkconfig --level 35 Nginx on
lrwxrwxrwx 1 root root 37 Apr 25 08:49 Nginx.service -> /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/Nginx.service 系统自动创建了软连接(开机自启动)
-----------------------
# c7 添加服务到开机自启动 (这个时候源码Nginx要 可以使用sy@R_502_6063@ctl,也就是说运行过那个脚本,如果脚本里面指定有创建/usr/lib/sy@R_502_6063@d/sy@R_502_6063@/Nginx.service脚本并写入了,启动信息就可以!)
sy@R_502_6063@ctl enable 服务名
[root@oldboy ~]# sy@R_502_6063@ctl enable Nginx (状态改变,才会输出)
Created symlink from /etc/sy@R_502_6063@d/sy@R_502_6063@/multi-user.target.wants/Nginx.service to /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/Nginx.service.
创建了从/etc/sy@R_502_6063@d/sy@R_502_6063@/multi-user.target.want/Nginx.service到/usr/lib/sy@R_502_6063@d/sy@R_502_6063@/Nginx.service的符号链接。(# 前提的Nginx.service存在)
[root@oldboy ~]# reboot
[root@oldboy ~]# sy@R_502_6063@ctl status Nginx
● Nginx.service - The Nginx HTTP and reverse proxy server (绿色,开机自启动了)
[root@oldboy ~]# chkconfig --list 这个时候用这个命令是看不到Nginx开机启动服务的
# 使用软连接让服务加入开机自启动
[root@oldboy ~]# ll /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/
-rw-r--r-- 1 root root 635 Apr 24 08:26 Nginx.service
[root@oldboy ~]# ll /etc/sy@R_502_6063@d/sy@R_502_6063@
drwxr-xr-x. 2 root root 87 Apr 18 22:09 default.target.wants
ln -s /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/Nginx.service /etc/sy@R_502_6063@d/sy@R_502_6063@/multi-user.target.wants/Nginx.service
[root@oldboy ~]# ll /etc/sy@R_502_6063@d/sy@R_502_6063@/multi-user.target.wants
total 0
lrwxrwxrwx. 1 root root 38 Apr 18 22:10 auditd.service -> /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/auditd.service
4.建立终端(tty)
tty1~6,是centos系统(init服务)默认创建的6个终端,是内核需要用到的终端,(可以在命令行使用 init N 实现终端之间的切换)
pts/0 , pts/1 xshell远程连接的终端
启动mingetty 进程
(1)命令行登录(虚拟机)
(2)ssh登录
(3)图形界面登录
## 关机命令
init 0 立马关机
halt 立马关机
shutdown -h Now 立马关机
shutdown -h 20:20
shutdown -h +10
shutdown -a 取消关机设置
poweroff 立马关机
## 重启命令
init 6
reboot
shutdown -r Now
shutdonw -r 20:20
shutdown -r +10
C7
1.BIOS(开机自检)
打开系统电源后,它将读取所有设备设置并执行开机自检(开机自检)过程,以识别硬件设备,以测试和初始化系统硬件组件。成功后处理后,它将加载MBR(主引导记录)以进行下一个引导处理。
2.MBR ( Master Boot Record 主引导记录)
主引导记录放在Linux引导硬盘的第一个扇区中,MBR的大小只有512个字节,它包含用于引导操作系统的机器代码指令,称为引导加载程序,以及分区表
3.GRUB2 Bootloader(引导菜单)
言简意赅:grub2菜单,如果装了双系统会让你进行选择
grub2配置文件位于/boot/grub2/grub.cfg中,由grub2 mkconfig使用/etc/grub.d中的模板和/etc/default/grub中的设置自动生成。不建议编辑GRUB2配置文件
4.Kernel(内核引导)
Linux内核是操作系统的核心,它是系统上第一个加载的程序。当系统启动时,内核从initrd.img加载所有必要的内核模块和驱动器,以加载Linux7中的系统第一个进程sy@R_502_6063@d,在6里面,init是爸爸,在7里面换了个爸爸,那就是sy@R_502_6063@d
**
[root@oldboy ~]# top
1 root 20 0 125324 3852 2608 S 0.0 0.4 0:02.38 sy@R_502_6063@d
[root@oldboy ~]# ll /etc/init.d/ 只能用绝对路径的方式启动/etc/init.d/下的2个服务,所以centos7里面,大多数服务都是用sy@R_502_6063@ctl这个命令 启动
total 40
-rw-r--r--. 1 root root 18281 Mar 29 2019 functions
-rwxr-xr-x. 1 root root 4569 Mar 29 2019 netconsole
-rwxr-xr-x. 1 root root 7923 Mar 29 2019 network
-rw-r--r--. 1 root root 1160 Aug 8 2019 README
#centos7上使用centos6的命令:
[root@oldboy ~]# /etc/init.d/network restart
Restarting network (via sy@R_502_6063@ctl): [ OK ]
[root@oldboy ~]# service network restart
Restarting network (via sy@R_502_6063@ctl): [ OK ]
[root@oldboy ~]# vim a.sh 判断/syy 是否存在
#!/bin/bash
. /etc/init.d/functions
if [ -d /root/syy ];then
action '该目录已存在' /bin/true
else
action '该目录不存在' /bin/false
fi
[root@oldboy ~]# sh a.sh
该目录已存在 [ OK ]
5.Sy@R_502_6063@d (不再使用init,改成了sy@R_502_6063@d)
sy@R_502_6063@d使用“targets”而不是runlevels。默认情况下,有两个主要级别:
1) multi-user(多用户).target: analogous to runlevel 3
#查看运行级别
[root@zls ~]# sy@R_502_6063@ctl get-default
multi-user.target
2) graphical(图形化).target: analogous to runlevel 5
#设置默认运行级别
[root@zls ~]# sy@R_502_6063@ctl set-default graphical.target
Removed symlink /etc/sy@R_502_6063@d/sy@R_502_6063@/default.target.
Created symlink from /etc/sy@R_502_6063@d/sy@R_502_6063@/default.target to /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/graphical.target.
#查看默认界面
[root@zls ~]# sy@R_502_6063@ctl get-default
graphical.target
[root@zls ~]# vim /etc/inittab
# inittab is no longer used when using sy@R_502_6063@d.
使用sy@R_502_6063@d时不再使用inittab
# ADDING CONfigURATION HERE WILL HAVE NO EFFECT ON YOUR SY@R_502_6063@.
在此处添加配置不会对您的系统产生任何影响
# Ctrl-Alt-Delete is handled by /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/ctrl-alt-del.target
Ctrl Alt Delete由/usr/lib/sy@R_502_6063@d/sy@R_502_6063@/Ctrl-Alt-del.target处理
# sy@R_502_6063@d uses 'targets' instead of runlevels. By default, there are two main targets:
sy@R_502_6063@d使用“targets”而不是runlevels。默认情况下,有两个主要目标:
# multi-user.target: analogous to runlevel 3
multi-user.target:类似于runlevel 3
# graphical.target: analogous to runlevel 5
graphical.target:类似于runlevel 5
# To view current default target, run:
要查看当前默认目标,请运行
# sy@R_502_6063@ctl get-default
#
# To set a default target, run:
要设置默认目标,请运行:
# sy@R_502_6063@ctl set-default TARGET.target
CentOS7中的运行级别:(runlevel:运行级别的意思)
# init 0~6
runlevel0.target -> poweroff.target # 关机
runlevel1.target -> rescue.target # 单用户模式 (救援模式)
runlevel2.target -> multi-user.target # 多 (没有文件系统和网络)
runlevel3.target -> multi-user.target # 多 (命令行,默认模式)(纯命令行模式)
runlevel4.target -> multi-user.target # 多
runlevel5.target -> graphical.target # 图形化模式
runlevel6.target -> reboot.target # 重启
(234一样)
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2:多用户运行级别(没有文件系统)
运行级别3:完全的多用户状态(有文件系统),登陆后进入控制台命令行模式
运行级别4:多用户运行级别
运行级别5:X11控制台,登陆后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
6.Runlevel-Target (运行级别)
运行级别:
init 0.target -> poweroff.target # 关机
init 1.target -> rescue.target # 单用户模式
init 2.target -> multi-user.target # 多用户模式(没有文件系统和网络)
init 3.target -> multi-user.target # 多用户模式(命令行模式,默认模式)
init 4.target -> multi-user.target # 多用户模式(还是没有被使用)
init 5.target -> graphical.target # 图形化模式
init 6.target -> reboot.target # 重启
(234一样)
# 获取当前默认的运行级别
[root@qls ~]# sy@R_502_6063@ctl get-default
multi-user.target
# 修改运行级别
[root@qls ~]# sy@R_502_6063@ctl set-default poweroff (可以分开成两条命令,手动设置)
[root@oldboy ~]# ll /etc/sy@R_502_6063@d/sy@R_502_6063@/
lrwxrwxrwx. 1 root root 37 Apr 18 22:12 default.target -> /lib/sy@R_502_6063@d/sy@R_502_6063@/multi-user.target
[root@oldboy ~]# ll /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/
lrwxrwxrwx. 1 root root 16 Apr 18 22:09 default.target -> graphical.target# 不管
-rw-r--r--. 1 root root 552 Aug 8 2019 poweroff.target
-rw-r--r--. 1 root root 486 Aug 8 2019 rescue.target
-rw-r--r--. 1 root root 492 Aug 8 2019 multi-user.target
-rw-r--r--. 1 root root 558 Aug 8 2019 graphical.target
-rw-r--r--. 1 root root 543 Aug 8 2019 reboot.target
[root@oldboy ~]# ll /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/|grep '^l'
lrwxrwxrwx. 1 root root 15 Apr 18 22:09 runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 root root 13 Apr 18 22:09 runlevel1.target -> rescue.target
lrwxrwxrwx. 1 root root 17 Apr 18 22:09 runlevel2.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 Apr 18 22:09 runlevel3.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 Apr 18 22:09 runlevel4.target -> multi-user.target
lrwxrwxrwx. 1 root root 16 Apr 18 22:09 runlevel5.target -> graphical.target
lrwxrwxrwx. 1 root root 13 Apr 18 22:09 runlevel6.target -> reboot.target
c7看 /etc/sy@R_502_6063@d/sy@R_502_6063@/default.target 链接关系找 对应的运行级别,/usr/lib/sy@R_502_6063@d/sy@R_502_6063@/multi-user.target,(找运行级别)
#/etc/sy@R_502_6063@d/sy@R_502_6063@/default.target.wants 目录下的xx.service文件,连接到/usr/lib/sy@R_502_6063@d/sy@R_502_6063@/xx.service (找服务)
c6看 配置文件中(/etc/inittab),调用执行了/etc/rc.d/rc.sysinit,然后选择对应的运行级别
rcN.d 实现光速切换系统开机运行服务的级别
## 使用两条命令修改默认运行级别---------运行级别原理
[root@qls ~]# rm -f /etc/sy@R_502_6063@d/sy@R_502_6063@/default.target
[root@qls ~]# ln -s /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/poweroff.target /etc/sy@R_502_6063@d/sy@R_502_6063@/default.target
## 相关目录
[root@qls ~]# ll /etc/sy@R_502_6063@d/sy@R_502_6063@ (默认的运行级别)
[root@qls ~]# ll /usr/lib/sy@R_502_6063@d/sy@R_502_6063@ (运行级别和服务启动 脚本)
CentOS7进入单用户模式
[root@qls ~]# sy@R_502_6063@ctl set-default poweroff
c7进入单用户模式
出现2行内容的时候,按e进入单用户模式,q退出来,回车进入系统,
linux16这一行UTF-8后面输入enforcing=0 init=/bin/bash (顺序不重要)
可以手动修改ro 为 rw ,(这样可以使用sy@R_502_6063@ctl了)
ctrl + x 真正进入单用户模式
## 修改默认启动方式
bash-4.2# mount -o rw,remount / 重新挂载根目录(英文逗号)(改成读写权限)
bash-4.2# systectl set-default multi-user.target (不能用sy@R_502_6063@ctl)(只能分开执行)
bash-4.2# rm -f /etc/sy@R_502_6063@d/sy@R_502_6063@/default.target
bash-4.2# ln -s /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/multi-user.target /etc/sy@R_502_6063@d/sy@R_502_6063@/default.target
bash-4.2# exec /sbin/init 重新引导init后可以使用sy@R_502_6063@ctl
## 修改密码
bash-4.2# mount -o rw,remount /
bash-4.2# echo 123|passwd --stdin root
bash-4.2# exec /sbin/init
进入正经模式,要重新修改密码
方法2:
linux16这一行UTF-8后面输入 rd.break (这种方法只能修改启动级别,不能修改密码,无论的交互还是非交换,有的系统可以改)
switch_root:/# mount -o rw,remount /sysroot 重新挂载/sysroot
switch_root:/# chroot /sysroot 获取root权限,命令提示符改变
sh-4.2# sy@R_502_6063@ctl set-default multi-user.target 可以使用sy@R_502_6063@ctl
sh-4.2# exit 退出
switch_root:/# reboot 重启
[root@qls ~]# sy@R_502_6063@ctl set-default poweroff
c7进入单用户模式
linux这一行UTF-8后面输入enforcing=0 init=/bin/bash
linux这一行 ro (只读)改成 rw (可读可写)(这样可以使用sy@R_502_6063@ctl了)
ctrl + x 进入
改就完事了
总结
# 查看默认运行级别
sy@R_502_6063@ctl get-default
runlevel
# 设置默认运行级别
sy@R_502_6063@ctl set-default multi-user.target ###
rm -f /etc/sy@R_502_6063@d/sy@R_502_6063@/default.target
ln -s /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/multi-user.target /etc/sy@R_502_6063@d/sy@R_502_6063@/default.target
# 设置开机自启动--------------------------------- 开机自启原理
1. sy@R_502_6063@ctl enable Nginx
sy@R_502_6063@ctl disable Nginx 取消服务的开机自启
2. ln -s /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/Nginx.service /etc/sy@R_502_6063@d/sy@R_502_6063@/multi-user.target.wants/Nginx.service
#注意,/usr/lib/sy@R_502_6063@d/sy@R_502_6063@/下得有Nginx.service,也就是运行了ngin-rpm -d指定的那个脚本,执行了那个脚本,/usr/lib/sy@R_502_6063@d/sy@R_502_6063@/就有有Nginx.service
同样,如果服务开机自启,那么,/etc/sy@R_502_6063@d/sy@R_502_6063@/multi-user.target.wants/下就有Nginx.service,
3. /app/Nginx/sbin/Nginx
总结:(服务的开机自启)
1. 要存在 /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/服务.service #启动脚本文件
2. 软链接 ln -s /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/Nginx.service /etc/sy@R_502_6063@d/sy@R_502_6063@/multi-user.target.wants/Nginx.service
所以说sy@R_502_6063@cl enable Nginx ,就是做出来一个软链接而已
单用户模式
CentOS7忘记root密码,进入单用户模式
1.重启系统
3.方法一:
在linux16内容的行末写enforcing=0 init=/bin/bash
按Ctrl + x
正式进入单用户模式
4.重新挂载 /
目录,权限设置为可读可写(rw)
mount -o rw,remount /
echo 1|passwd --stdin root
6.重新加载sy@R_502_6063@d
exec /sbin/init
reboot
3.方法二:
在linux16内容的行末写rd.break
按Ctrl + x
开机
4.重新挂载sysroot
目录设置可读可写权限(rw)
mount -o rw,remount /sysroot
5.获取root权限
chroot /sysroot
6.设置root密码
echo 123|passwd --stdin root
7.退出sh-4.2
exit
8.重启服务器
reboot
# 进入命令行模式记得再次修改用户密码,不然就不能改用户密码了(一次性??),只能修改运行级别
救援模式
救援模式的作用
-不损坏数据的前提下,修复磁盘(/dev/sda),,,密码,运行级别
-修复grub2菜单(/boot/grub2/grub2.cfg)
1.打开电源进入BIOS
2.选择boot界面,将CD-ROM(光驱),放在第一行(,选择,按 + )
3.按F10保存退出,把CD提到第一位,按f10,这样保存之后,重启系统的话,我们将会从光驱进入系统,这样可以选择是否进入救援模式
同样的,如果在服务器上插入USB(U盘),bios一般也可以扫描到U盘,所以,我们也可以在这里选择是否从U盘进入系统,修复系统。(前提是U盘上有相应的镜像)
4.选择yes
5.进入救援模式
install centos7 就是安装centos7,安装系统也可以达到修复系统的目的,但是会导致数据清空
选择install centos 7 按TAB键可以修改默认网卡名(eth),dell(戴尔服务器)net.ifnames=0 biosdevname=0,如果不是戴尔服务器,net.ifnames=0
选择硬盘启动的话,直接进入系统(常用的那个)
回车
救援模式是通过第二行进入的,单用户模式是通过--从硬盘启动---grub菜单---按e----进入的,
<font color=red>救援模式:1.修复磁盘。2.修复grub菜单,3.修改运行级别,修改密码</font>
<font color=red>单用户模式:1.修改运行级别。2.修改忘记的密码</font>
6.进入救援模式之后,选择(1)继续
输入,随便输入回车 (获取root权限)
输入 chroot /mnt/sysimage(xxx不用输入)
可以修改密码,修改运行级别了
exit
reboot
选择救援模式(3)---救援模式(2)--输入修改后的密码进入系统(修改xshell密码,远程连接),,,当然也可以选择开机进入固件,选择硬盘进入系统(回去解放前)
删根了只有快照可以救
模板机删了不影响克隆机
场景二:损坏MBR(磁盘损坏,无法进入系统),进入救援模式解决
多种方法进入命令行模式
## 损坏MBR
[root@oldboy ~]# ll /dev/sda*
brw-rw---- 1 root disk 8, 0 Apr 24 16:39 /dev/sda #磁盘
brw-rw---- 1 root disk 8, 1 Apr 24 16:39 /dev/sda1 #分区
brw-rw---- 1 root disk 8, 2 Apr 24 16:39 /dev/sda2
brw-rw---- 1 root disk 8, 3 Apr 24 16:39 /dev/sda3
[root@qls ~]# dd < /dev/zero >/dev/sda bs=1 count=446 (默认单位是b字节) 损坏磁盘的前 512b(小心不是bs=1M count=10 哈哈)
446+0 records in
446+0 records out
446 bytes (446 B) copied, 0.00032064 s, 1.4 MB/s
选救援模式
选从本地硬盘启动 (假装若无其事)
刚刚对磁盘的写入已经损坏了磁盘前512b,无法找到操作系统
遇到这一步的解决方法,1.重装系统(但是数据没了),windows可以用pe,linux不能用pe
2.
进入救援模式
选第二个,进入救援模式
输入以下内容
sh-4.2# chroot /mnt/sysimage 提权
bash-4.2# grub2-install /dev/sda 修复
bash-4.2# exit 退出
sh-4.2# reboot
修复磁盘扇区成功,可以重新进入系统(数据不变)
选择从本地硬盘启动,进入正常的操作系统(去看看有没有真的修好
## 场景3:误删除GRUB菜单(啥都没了),进入救援模式
```bash
[root@oldboy ~]# ll /boot/
total 91920
-rw-r--r--. 1 root root 152976 Aug 8 2019 config-3.10.0-1062.el7.x86_64
drwxr-xr-x. 3 root root 17 Apr 18 22:09 efi
drwxr-xr-x. 2 root root 27 Apr 18 22:09 grub
drwx------. 5 root root 97 Apr 23 21:41 grub2 #
[root@oldboy ~]# cd /boot/grub2
[root@oldboy grub2]# ll
total 32
-rw-r--r--. 1 root root 84 Apr 18 22:12 device.map
drwxr-xr-x. 2 root root 25 Apr 18 22:12 fonts
-rw-r--r--. 1 root root 4261 Apr 18 22:13 grub.cfg #
[root@qls ~]# rm -fr /boot/grub2/
[root@qls ~]# reboot
从硬盘进入(假装若无其事)
grub2菜单被删除,简单的ll,ls,命令都不能使用
grub2菜单被删除,就肯定进不去单用户模式,单用户模式是进入grub2菜单之后,按e进入的
再次进入救援模式
输入以下内容,看右下角,alt+tab 可以切换窗口
```bash
sh-4.2# chroot /mnt/sysimage 提权
bash-4.2# grub2-install /dev/sda
bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg 创建配置文件
bash-4.2# exit
sh-4.2# reboot
选从本地硬盘启动,进入正经系统
可以进入系统了,说明/boot/grub2/grub.cfg已经做好了
如果不想再进入光驱系统了,那么关闭虚拟机,选择打开电源进入固件,进入bios。选择boot
把Hard Drive 提到第一位,f10保存退出,这样重新启动,虚拟机将会直接从本地硬盘进入系统
C6 C7
sy@R_502_6063@d进程管理
sy@R_502_6063@d优势
1.最新系统都采用sy@R_502_6063@d管理(RedHat7,CentOS7,Ubuntu15...)
2.CentOS7 支持开机并行启动服务,显著提高开机启动效率
3.CentOS7关机只关闭正在运行的服务,而CentOS6,全部都关闭一次。
4.CentOS7服务的启动与停止不在使用脚本进行管理,也就是/etc/init.d下不在有脚本。
5.CentOS7使用sy@R_502_6063@d解决原有模式缺陷,比如原有service不会关闭程序产生的子进程。
什么是sy@R_502_6063@d
sy@R_502_6063@d即为sy@R_502_6063@ daemon守护进程,为系统的启动和管理提供一套完整的解决方案。
/usr/lib/sy@R_502_6063@d/sy@R_502_6063@ #类似C6系统的启动脚本目录/etc/init.d/
/etc/sy@R_502_6063@d/sy@R_502_6063@/ #类似C6系统的/etc/rc.d/rcN.d/
/etc/sy@R_502_6063@d/sy@R_502_6063@/multi-user.target.wants/
Linux一直以来都采用init进程作为爸爸,但是init有两个缺点:
1.启动时间长,init进程是串行启动,只有前一个进程启动完,才会启动下一个进程。
2.启动脚本复杂,初始化完成后,系统会加载很多脚本,脚本都会处理各自的情况,这回让脚本多而复杂
sy@R_502_6063@d 相关文件
相关文件 | CentOS6 | CentOS7 |
---|---|---|
服务启动脚本存放路径 | /etc/init.d | /usr/lib/sy@R_502_6063@d/sy@R_502_6063@ |
开机自启服务存放路径 | /etc/rcN.d | /etc/sy@R_502_6063@d/sy@R_502_6063@/N.target.wants |
默认运行级别 | /etc/inittab | /etc/sy@R_502_6063@d/sy@R_502_6063@/default.target |
sy@R_502_6063@d启动相关命令
sy@R_502_6063@ V init CentOS6 | sy@R_502_6063@d CentOS7 | 作用 |
---|---|---|
/etc/init.d/Nginx start | sy@R_502_6063@ctl start Nginx | 启动Nginx服务 |
/etc/init.d/Nginx stop | sy@R_502_6063@ctl stop Nginx | 停止Nginx服务 |
/etc/init.d/Nginx status | sy@R_502_6063@ctl status Nginx | 查看服务的启动状态 |
/etc/init.d/Nginx restart | sy@R_502_6063@ctl restart Nginx | 重启服务 |
/etc/init.d/Nginx reload | sy@R_502_6063@ctl reload Nginx | 不停止服务,重新加载Nginx配置文件 |
sy@R_502_6063@ctl is-acvite Nginx | 判断Nginx服务是否存活(写脚本用) | |
sy@R_502_6063@ctl mask Nginx | 禁止服务运行 | |
sy@R_502_6063@ctl unmask Nginx | 取消禁止 | |
service Nginx start | service Nginx start | 启动Nginx服务 |
service不能TAB,c6c7都可以使用service命令(向下兼容)
restart 停止服务,重新加载Nginx配置文件,然后再启动,reload 不停止服务,重新加载Nginx配置文件,只有Nginx可以使用reload(reload报错就用重启restart试试)
./Nginx -t 或者 /app/Nginx/sbin/Nginx -t 检查Nginx配置文件有没有问题,有错误的话就显示错误的位置,不能Nginx -t 是因为Nginx没有加入到环境变量(PATH)
[root@oldboy ~]# sy@R_502_6063@ctl is-active Nginx
unkNown
[root@oldboy ~]# sy@R_502_6063@ctl start Nginx
[root@oldboy ~]# sy@R_502_6063@ctl is-active Nginx
active
[root@oldboy ~]# vim Nginx.sh
panduanjieguo=$(sy@R_502_6063@ctl is-active Nginx)
if [ $panduanjieguo == 'active' ];then
echo 'Nginx存活'
else
echo 'Nginx不存活'
fi
[root@oldboy ~]# sy@R_502_6063@ctl mask Nginx
Created symlink from /etc/sy@R_502_6063@d/sy@R_502_6063@/Nginx.service to /dev/null.
创建了从/etc/sy@R_502_6063@d/sy@R_502_6063@/linix.service到/dev/null的符号链接。(#软链接)
[root@oldboy ~]# sy@R_502_6063@ctl start Nginx
Failed to start Nginx.service: Unit is masked.
[root@oldboy ~]# sy@R_502_6063@ctl unmask Nginx
Removed symlink /etc/sy@R_502_6063@d/sy@R_502_6063@/Nginx.service.
sy@R_502_6063@d开机自启动相关命令
C6 | C7 | 作用 |
---|---|---|
chkconfig --list | sy@R_502_6063@ctl list-unit-files | 查看开机自启的服务 |
chkconfig Nginx on(2345) | sy@R_502_6063@ctl enable Nginx | 加入开机自启动 |
chkconfig Nginx off | sy@R_502_6063@ctl disable Nginx | 关闭开机自启动 |
chkconfig --list Nginx | sy@R_502_6063@ctl is-enabled Nginx | 查看指定服务是否被开机自启 |
chkconfig --add Nginx | sy@R_502_6063@ctl daemon-reload | 当我们手写脚本时让系统认识 |
[root@oldboy ~]# chkconfig --list|grep 3:on #在c6好用
Note: This output shows SysV services only and does not include native
sy@R_502_6063@d services. SysV configuration data might be overridden by native
sy@R_502_6063@d configuration.
If you want to list sy@R_502_6063@d services use 'sy@R_502_6063@ctl list-unit-files'.
To see services enabled on particular target use
'sy@R_502_6063@ctl list-dependencies [target]'.
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@oldboy ~]# sy@R_502_6063@ctl list-unit-files
[email protected] enabled
blk-availability.service disabled
brandbot.service static
sy@R_502_6063@d服务状态
服务状态 | 状态说明 |
---|---|
loaded | 服务单元的配置文件已经被处理 |
active(running) | 服务的一个或多个进程在运行中 |
active(exited) | 一次性运行的服务成功被执行并退出(服务运行后完成任务,相关进程会自动退出) |
active(waiting) | 服务已经运行但在等待某个事件 |
inactive | 服务没有在运行 |
enable | 服务设定为开机运行 |
disabled | 服务设定为开机不运行 |
static | 服务不能被设定开机启动,但可以由其他服务启动该服务 |
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。