一、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进程

终端进程

 

 

二、进程管理

1SSHDsocket守护进程:

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需要往下移,在移动到一个位置就对了

 

kerelroot之间

5、Linux操作系统中的两个特殊文件

/dev/null  /dev/zero文件

 

/dev/null 我们称作黑洞文件,不论什么文件内容被重定向到了这个文件里,内容就都消失了,所以也被称为垃圾箱文件

 

/dev/zero 我们称为无限数据流文件,不论要从文件里取多大的数据,都能取得出来,然而取出的数据没有任何内容显示,就是纯粹的占大小。

 

三、dd命令

1dd抽取命令

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到哪去)

 

2dd覆盖命令(破坏)

dd if=/dev/zero of=/dev/sda bs=512 count=1

从无限数据流文件,取出文件,输出到/dev/sda的前512字节文件里,相当于把这个文件覆盖了

这公司就倒闭了

 

3dd检测磁盘读写速度用法

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!(强制保存退出)

 

 

2chkconfig用法和需自启动的五个服务

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

记下UUIDkernel的路径

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程序,需提前备份MBR446字节

(进行破坏)

# dd if=/dev/zero of=/dev/sda bs=446 count=1

# reboot

进入急救模式:okokshell start shellok

 

进入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

===============================================