一、开机启动的完整过程
bios加电自检测-------mbr------grub----------加载内核文件------------启动第一个进程
简述:加电后bios程序会自检硬件,硬件无故障,会根据第一启动项去找内核,一般来说,第一启动项是硬盘,找到硬盘后,会根据mbr的指引找到完整的grub程序,再根据grub的配置文件找到内核文件的具体位置,然后将内核文件加载到内存中运行,内存加载好后,会启动第一个程序。
bios作用:检测硬件是否正常,然后根据biso中的启动项设置,去找内核文件
boot:开机启动顺序(你可以把内核文件放在何处?)
1.硬盘
2.移动设备(u盘移动硬盘,光驱)
3.网络启动
mbr(二进制):因为grub程序太大,第一个扇区存不下所有的grub程序,所以分为两部分,指引硬件找到内核文件
grub:根据grub配置文件(grub.cfg)中记录的位置,去找到内核文件(高级语言)
加载内核:把内核运行在内存中
启动进程:启动第一个祖宗进程
centos6:init
centos7:启动systemd
1.1区别
init:串行启动后续的程序,一个一个按顺序启动
systemd:并行启动程序,全部一起启动
1.2systemd
systemd:是系统级的程序,代为管理系统上的程序
systemd:保姆级
yum以及rpm安装的软件可以直接使用systemctl去启动关闭,重启,开机自启等功能; 编译安装,不可以直接使用systemctl命令去管理程序,需要手写一个配置文件
systemd **unit(单元)--------描述一个软件的作用和基本信息**,systemd方便管理程序,将程序按照特定的功能分成了很多单元;
服务单元---写配置
systemctl get-default------查看默认运行级别
systemctl set-default------设置默认的级别
rpcbind:启动后,会监听111端口
1.3linux操作系统的运行级别
0:关机
1:单用户,类似于windows的急救模式
2:字符界面,少些功能 (nfs)
3:字符界面
4:字符界面,从来没用过
5:图形界面
6:重启
runlevel:查看当前运行级别
实验1:模拟破坏mbr和分区表,然后修复
1:新建一块硬盘
fdisk分区一下
格式化一下:
mkfs.xfs /dev/sdb1
挂载到mnt下:
mount /dev/sdb1 /mnt/
2:将备份文件备份到新盘
dd if=/dev/sda of=/mnt/mbr count=1 bs=512
进入mnt下:cd /mnt
3.模拟破坏:
dd if=/dev/zero of=/dev/sda count=1 bs=512
4.reboot-----重启一下
5.然后进入急救模式修复:3 2 1
6.mkdir bak
7.mount /dev/sdb1 bak
8.dd if=bak/mbr.bak of=/dev/sda count=1 bs=512
9.reboot---重启服务
实验2:修复grub文件及程序
1.cd /boot/ cd grub2/
2.模拟破坏 grub.cfg 配置文件
mv grub.cfg /opt
3.重启一下---reboot
4.
5.
6
7
8.
9.先切换根,从光盘的根切换到 自己系统的根
chroot /mnt/sysimage
10.重新安装grub2程序,在sda磁盘
grub2-install /dev/sda
11.重新生成配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg
12.退到光驱的根下----exit
13.重启----reboot
实验3:破解密码
第一种:有光驱
1.
2.
3.
4.
5.
6.切换根目录
chroot /mnt/sysimage
7.修改密码
passwd
8.最后,exit退出,reboot--重启一下
2.无光驱情况
1.重启
2.
3.进入了grup程序里,输入命令
rd.break
4.挂载
mount -o remount,rw /sysroot
5.切根,修改密码
chroot /sysroot
passwd
6.刷新一下,打个标记
touch /.autorelabel
7.exit退出去;reboot重启
实验4:编译安装nginx-systemctl
1.cd /data/-----切换到data下
2.编辑文件
vim test.sh
cd /opt
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar xf nginx-1.18.0.tar.gz
cd nginx-1.18.0
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel
#请使用网络源
mkdir /ky35/nginx -p
./configure --prefix=/ky35/nginx
makemake install
ln -s /ky35/nginx/sbin
#做软链接 可以补全
3.
bash test.sh
4.
vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=The nginx HTTP and reverse proxy server[Service]
PIDFile=/ky35/nginx/logs/nginx.pid #根据pid号方便操作注释:nginx.pid---放在nginx主进程中;pid号:识别应用程序
ExecStart=/ky35/nginx/sbin/nginx #使用绝对路径注释:第一个nginx:文件夹名字;后一个nginx:最后得到的一个可执行文件
ExecStop=/usr/bin/kill -s TERM $MAINPID #杀死进程注释:-s TERM:发送一个信号;$MAINPID:当前nginx程序的主id号
ExecReload=/ky35/nginx/sbin/nginx -s reload #重新加载注释:后一个nginx:一个命令,有自己的选项;
-s:给自己发送一个重新加载的信号,只能发送:stop,quit,reopen,reload
[Install]
WantedBy=multi-user.target #安装字符界面注释:WantedBy:在哪个级别运行
multi-user.target:字符界面
5. 要 告诉 systemd 我加入你了
systemctl daemon-reload-----nginx
6.开启nginx
systemctl start nginx
二、服务程序管理
1.介绍
什么是服务程序?
1.一旦运行一直运行,不会退出
2.一般是后台运行,不会影响前台的操作
管理服务程序
开启
关闭
重启
重新加载配置文件
开机自启
开机不自启
2.chkconfig centos6
service 服务程序 start
service 服务程序 stop
service 服务程序 restart
service 服务程序 reload
service 服务程序 status
在 /etc/init.d/ 写一个同名文件的脚本 (必须要有 执行权限)
chkconfig --level 35 服务程序 on/off 开机自启和关闭
3.chkconfig centos7
systemctl start 服务名
systemctl stop 服务名
systemctl status 服务名
systemctl reload 服务名
systemctl restart 服务名
开机自启
systemctl enable 服务名
开机自启,并立即启动
systemctl enable --now 服务名
开机不自启
systemctl disable 服务名
开机自启,并立即关闭
systemctl disable --now 服务名
如果用yum 安装 以及 rpm 安装,会自动生成一个配置文件,不需要手动加入
systemd会自动加入