一、Linux启动十步流
第一步:BIOS启动
BIOS的作用开机检测,主板检测(BIOS检测)
第二步:MBR引导程序
硬盘的引导程序启动
MBR硬盘引导程序(硬盘引导区前512K,主引导程序是1-446 64分区表一共4个区4*16,剩2个校验码)
第三步:GRUB菜单启动(操作系统的引导菜单)
grub菜单的配置文件:/boot/grub/grub.conf
快捷方式:/etc/grub.conf
第四步:kernel操作系统的内核,启动操作系统的核心
第五步:启动操作系统的主进程init
负责执行kernel的任务
进程用来执行计算结果
第六步:读取/etc/inittab配置文件
确定开机以哪一个模式启动
设定Linux开机时默认的启动模式
runlevel 看当前系统运行模式
第七步:执行/etc/rc.d/rc.sysinit初始化脚本
在临时目录生成刚开机时必须有的东西
/proc目录是临时存放内存数据的目录
/proc目录里既有目录也有文件,好多目录都是数字,那么这些数字目录到底是什么呢?都是进程
ps命令:直接显示进程 每个进程都有PID号的
ps -ef命令:看很多进程, PID号(进程号)从1开始 1是主进程
UID是用户; GID是组的;
UUID是设备的,每个设备都有UUID号;UUID0是超级用户的
PID是进程的,每个进程都有PID号;
PPID是这个进程的上级进程。
如果只把眼光站在运维的角度看问题,那么你只能看到进程这个东西。
通常来说,站在运维的立场,进程到底是什么,进程就是程序。
但是,假如我们把眼光看的更深一些,其实进程里还有很多叫做线程的东西,然后真正干活的不是进程,而是线程。然而,对于运维来说,是看不到线程的。只有你做了开发人员才能看得到线程。
如果面试时,面试官问你,进程是什么,你说进程是程序,也可以。
如果面试的是开发,那么你一定要说,进程什么都不是,它只是一个目录,存放资源的目录,这些资源是提供给线程进程调用的资源,真正干活的是线程,因此,线程才是程序
第八步:执行/etc/rc.d/rc脚本
去某个目录执行文件
cd /etc/rc3.d/ ls 都是高权限文件
chkconfig 开机自启动
chkconfig | grep "3:on"
工作中chkconfig精简化配置,只开5个,其他特殊需要开启的在个人脚本里写
postfix关的话 rc3.d对应的文件是K打头
postfix开的话 rc3.d对应的文件是S打头
如果是K打头就改成S,如果是S打头就改成K
告诉Linux开机时候哪个服务需要启动
当启动模式是3模式,那么Linux进入/etc/rc3.d/目录下,就会执行里面所有以S开头的脚本。
所以,chkconfig这个命令所查看的内容,其实是即时生成的。然而并不是保存于某个文件里。
因此,我们是无法对chkconfig的启动下做备份的。
在运维工作中,我们并不建议以chkconfig的方式来管理Linux操作系统的开机自启动项,因为运维需要安全,安全就要备份。
正确做法是,只开启5个服务,其他在/etc/rc.d/rc.local/里写
/etc/fastab 开机自动挂载,我们也是不推荐的,我们推荐的是/etc/rc.local
其实,我们也可以通过命令的方式去启动服务,如果/etc/rc.local这个脚本每次开机都先启动的话,里面的命令也会被先执行,其实也就是开机自启动。
运维规则:就是有理由即可!!
第九步:执行/etc/rc.d/rc.local个人配置脚本
/etc/init.d/服务名 start/stop 当前立刻启动/关闭程序(能用TAB)
reload(平滑重启) 让玩游戏的人不掉线,不是先开后关,很平滑
service postfix start/stop 启动/关闭程序(这个不能TAB不推荐)
第十步:启动mingetty进程
终端进程
二、进程管理
1、SSHD(socket)守护进程:
24小时不间断监听某个固定端口的进程
默认监听端口是22端口,我们Xshell连接默认的也是22端口
(用于远程连接)
当我们的xshell连接上Linux以后,sshd主进程会临时生成一个sshd子进程来接待我们所发起的远程连接。
sshd子进程,为了让我们友好的方式进行远程操作,sshd子进程会再生成一个bash的界面进程,其实我们命令模式所操作的界面就是bash这个界面。
2、/proc目录:临时存放内存数据的目录
/proc目录是临时存放内存数据的目录
/proc目录里既有目录也有文件,好多目录都是数字,那么这些数字目录到底是什么呢?都是进程
3、系统中的bash
bash主要是用来解析命令,是人和机器交互的中介
bash再生成进程,也就是一个一个的命令,命令帮我们工作
4、设置grub菜单密码及其配置文件位置
配置文件/etc/grub.conf(快捷方式)
/boot/grub/grub.conf (原文件)
两者都能用
grub菜单设置密码:教案设置的第二层密码不对,passwd需要往下移,在移动到一个位置就对了
kerel和root之间
5、Linux操作系统中的两个特殊文件
/dev/null 和 /dev/zero文件
/dev/null 我们称作黑洞文件,不论什么文件内容被重定向到了这个文件里,内容就都消失了,所以也被称为垃圾箱文件
/dev/zero 我们称为无限数据流文件,不论要从文件里取多大的数据,都能取得出来,然而取出的数据没有任何内容显示,就是纯粹的占大小。
三、dd命令
1、dd抽取命令
dd if=/dev/sda of=/backup/sda.mbr.bak bs=512 count=1(此命令在进行备份那512)
从/dev/sda系统盘查找数据,输出到根下的/backup叫做/sda.mbr.bak抽前512字节,抽count 1次
把这个盘的前512字节备份出来,count几次 就是备份几次
(if从哪来, of到哪去)
2、dd覆盖命令(破坏)
dd if=/dev/zero of=/dev/sda bs=512 count=1
从无限数据流文件,取出文件,输出到/dev/sda的前512字节文件里,相当于把这个文件覆盖了
这公司就倒闭了
3、dd检测磁盘读写速度用法:
dd if=/dev/zero of=/dev/sda bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节已复制,0.000206154 秒, 2.5MB/秒
四、忘记root密码与开机自启动chkconfig用法
1、如忘记root密码
清除Linux各种密码
方法一:
重启,读秒状态下,按Esc,按e 选第二个 e 空格 1 回车 再按b
进入1模式,可直接登录
# passwd
设置新密码
# reboot
方法二:
进入急救模式shell修改密码
执行passwd root命令,修改root密码即可
方法三:
修改/etc/shadow/文件
# vim /etc/shadow
删除密文,x!(强制保存退出)
2、chkconfig用法和需自启动的五个服务
chkconfig查看开机自启动
一般和过滤一起用
chkconfig | grep post
chkconfig --list post 单一查找
chkconfig postfix on/off 默认2345模式下开启和关闭
chkconfig --level 3 postfix on 指定在3模式下开启
service 服务名 start|stop|restart(重启)|reload(平滑重启)|status(查看)
查看当前服务当前是否启动
service postfix status 查看开启/关闭状态
is running....代表正在启动
is stopped....代表已经关闭了
service postfix stop 停止程序
service postfix start 启动程序(这个不能TAB不推荐)
/etc/init.d/服务名 start 当前立刻/关闭启动程序(这个推荐,能用TAB)
虽然我们经常用这个方式来控制服务的当前启动状态;但是,假如我们忘记了postfix或者其他服务名字;这种方式TAB
那么我们用什么方式来控制服务呢??
利用一个路径/etc/init.d/
ls /etc/init.d/里面是一个一个的服务,这些是服务的启动脚本
/etc/init.d/加TAB postfix就出来了
如果我们没记住服务的名字,还是用这个路径来启动或者关闭比较好。
五、系统故障修复
1、修复MBR扇区故障
故障原因:
病毒、木马等造成的破坏;不正确的分区操作,磁盘读写误操作
故障现象:
找不到引导程序,启动中断,无法加载操作系统,开机后黑屏
解决思路:
应提前做好备份文件,以安装光盘引导进入应急模式,从备份中恢复
eg:(提前对系统盘进行备份)
挂载/dev/sdb1到/backup,将MBR扇区备份至此,毁坏MBR扇区,重启
(备份数据)
# mkdir /backup
# mount /dev/sdb1 /backup
# dd if=/dev/sda of=/backup/sda.mbr.bak bs=512 count=1
# ls /backup
(破坏数据)
# dd if=/dev/zero of=/dev/sda bs=512 count=1
(重启)
# reboot
(进行故障修复)
进入安全模式
rescue installed system
(进入命令行)
# fdisk -l | grep "/dev/"
# mkdir /backup
# mount /dev/sdb1 /backup
# ls /backup
# dd if=/backup/sda.mbr.bak of=/dev/sda bs=512 count=1
# reboot
2、修复grub引导故障
==============================================
3、修复grub引导故障
故障原因:
MBR中的grub引导程序遭到破坏;grub.conf文件丢失,引导配置有误
故障现象:
系统引导停滞,显示“grub>”提示符
解决思路:
方法一:尝试手动输入
方法二:进入急救模式,重建grub程序
方法三:若无MBR备份,进入急救模式,重新安装grub程序
eg:
方法一:手动输入(需记下内核的UUID或存储的绝对路径)
# cat /boot/grub/grub.conf
记下UUID,kernel的路径
将grub.conf文件备份,重启
###########################
# mount /dev/sdb1 /backup
# cd /boot/grub
# cp grub.conf /backup
# mv grub.conf grub.conf.bak
# ls
# reboot
此时,出现“grub>”提示符,手动输入
grub>root(hd0,0)
grub>kernel /vmlinuz-2.6.32-431.e16.x86-64 ro root=/dev/mapper/vg www-lv root
grub>initrd /initramfs-2.6.32-431.e16.x86-64.img
grub>boot
进入系统后修改grub.conf文件
# cd /boot/grub
# mv grub.conf.bak grub.conf
方法二:
进入急救模式,重建grub程序,需提前备份MBR前446字节
(进行破坏)
# dd if=/dev/zero of=/dev/sda bs=446 count=1
# reboot
进入急救模式:ok,ok,shell start shell,ok
进入shell后,将根路径修改为/mnt/sysimage (chroot/mnt/sysimage)
bash-4.1# chroot /mnt/sysimage
bash-4.1# fdisk -l | grep "/dev/"
bash-4.1# mount /dev/sdb1/ /backup
bash-4.1# dd if=/backup/sda.mbr.bak of=/dev/sda bs=446 count=1
bash-4.1# exit
bash-4.1# reboot
至此,进入安全模式进行grub引导的修复完成
方法三:若无MBR备份,进入急救模式,重新安装grub程序
# dd if=/dev/zero of=/dev/sda bs=446 count=1(模拟破坏)
# reboot
进入安全模式shell 同方法三
改变磁盘根目录到/mnt/sysimage
重新安装grub引导程序
退出重启
bash-4.1# chroot /mnt/sysimage
bash-4.1# fdisk -l /dev/sda
bash-4.1# grub -install /dev/sda
Disk /dev/mapper/vg-www-lv-root
sh-4.1# ls /boot/
initramfs-2.6.32-431.e16.x86-64.img
vimlinuz-2.6.32-431.e16.x86-64
sh-4.1# ls /boot/grub/
sh-4.1# vim /boot/grub/grub.conf (手动建立grub.conf文件)
末行输入
root (hd0.0)
kernel /vimlinuz-2.6.32-431.e16.x86-64 ro root=/dev/mapper/vg-www-lv-root rhgb quiet
initrd /initramfs-2.6.32-431.e16.x86-64.img
退出
sh-4.1# exit
bash-4.1# reboot
===============================================