Linux的系统启动流程
引导系统:
第一步:
按下电源之后计算机首先会加载BIOS,然后进行硬件自检,发出一次”嘀”的声音说明硬件一切正常。
第二步:
接下来就是引导系统了,BIOS默认会从硬盘的第0柱面,第0磁道,第一个扇区读取MBR(主引导记录),引导程序占用446字节。Redhat centos默认会使用grub作为其引导操作系统的程序,由于grub本身比较大,所以讲grub的地址写入到MBR中,这样系统会载入grub作为操作系统的引导程序。
第三步:运行Grub(Grand Unified BootLoader)
grub的功能:根据配置文件加载kernel镜像。运行内核加载后的第一个程序/sbin/init ,这个程序会根据/etc/inittab来进行初始化工作。然后根据文件设定的置来确定系统将会运行的runlevel(默认的runlevel定义在”id:3:initdefault:”中,数字3代表运行的级别)
第四步:
Linux将根据/etc/inittab中定义的系统初始化配置si::sysinit:/etc/rc.d/rc.sysinit执行/etc/rc.sysinit脚本,该脚本会设置系统变量、网络配置,并启动swap、设定/proc、加载用户自定义模块、加载内核设置等。
第五步:
根据第三步读到runvel值来启动服务,如果值为3,则运行/etc/rc3.d/下的所有脚本,如果是5,则运行/etc/rc5.d/下的所有脚本。
第六步:运行/etc/rc.local。
第七步:生成终端等待用户登录。
服务启动脚本
简单举例
!/bin/bash
一个脚本开始的标记,必须用”#!/bin/bash”开头,含义提示系统在运行该脚本时使用/bin/bash作为执行该文件的解释器
/etc/rc.d/init.d/atd
说明自己的绝对路径
Starts the at daemon
chkconfig:345 95 5
代表含义:当运行的级别是345的时候默认开启atd,也就是Start ; 95是说明当默认设置为on的时候,运行优先级设为95 ;5是当默认设置为off的时候,停止优先级定为5
#
GRUB的启动分为两部分:
以stage1作为主引导程序,主要任务是定位和装载第二段引导程序,并转交控制权,即stage2.
Linux文件系统简单介绍
文件系统就相当于用户和磁盘之间的翻译*
Linux中采用的是文件系统+虚拟文件系统的解决方案
创建分区:fdisk /dev/sda或者sdb 然后输入字母n (new) ,选择p,再输入1,然后输入最后一个柱面的位置,最后输入w将这个分区的信息写入分区表。
格式化该分区的文件系统:mkfs -t ext3 /dev/sdb1 或者 mkfs.ext3 /dev/sdb1
挂载:mount 设备 挂载目录 (example :mount /dev/sdb1 /media)
查看可用空间 : df -h | grep sdb1
设置启动自动挂载 ::/etc/fstab
echo “dev/sdb1 /media ext3 defaults 0 0” >> /etd/fstab 双引号里边六部分:1、设备名 2、挂载目录 3、文件系统格式 4、系统挂载参数 5、决定dump命令在进行备份时是否将这个分区进行存档,默认为0 。 6、系统启动时是否fsck(磁盘检查) 0(不检查)1(保留给根分区)2(其他分区使用,检查完根分区后检查该分区)
fsck在进行磁盘检查的时候磁盘需是未挂载的状态,否则会导致文件系统损坏。
字符处理
管道:固定大小的缓冲区,大小为1页即4k字节
ls -l /etc/init.d | more
使用grep搜索文本
grep [-i,v,n,c 任选一] ‘需匹配的字符’ 文件名
-i(代表不区分大小写),-c(统计包含匹配的行数), -n(表输出行号),-v(反向匹配)
使用sort排序
sort [-ntkr 任选一] 文件名
-n 采取数字排序 -t指定分隔符 -k指定第几列 -r反向排序
cat 文件名 | sort —-排序
cat 文件名 | sort -r —-反向排序
cat 文件名 | sort -t ” 分隔符” -k 2 —-按照分隔符排序
cat 文件名 | sort -t ” 分隔符” -k 2 -n ——按照分隔符和数字来排序
使用uniq删除重复内容
uniq [-ic]
-i (忽略大小写) -c(计算重复行数)
cat 文件名 | uniq
cat 文件名 | sort | uniq —-对数据进行排序后再删除重复的内容
cat 文件名 | sort | uniq -c —-加上-c就会参数会在每行前面打印出改行重复的次数
使用cut截取文本
cut -f指定的列 -d ‘分隔符’
打印系统中的所有用户
cat /etc/passwd | cut f1 -d ’ : ’
打印出用户和用户的家目录:
cat /etc/passwd | cut f1,6 -d ’ : ’ —-数字6的部分可以改为一个范围 6-7或者6-20等等。。。
cut -c 指定列的字符
cat /etc/passwd | cut -c1-5,7-10 —–打印出每行的第1-5个字符,以及第7-10个字符的内容
使用tr做文本转换
cat /etc/passwd | tr ‘[a-z]’ ‘[A-Z]’ —将文件里的小写字母转换为大写字母
cat /etc/passwd | tr -d ’ : ’ —–然后再删除文本中的符号
使用paste做文本合并
使用paste合并两个文件
paste 文件a 文件b
paste -d : 文件a 文件b ——使用-d指定在合并文件时行间的分隔符
使用split分割大文件(二进制文件没有行的概念,所以不可按行分割,只能按大小分割)
split -l 500 源文件名 目标文件名 —-按照行进行分割,-l参数指定每500行为一个小文件
split -b 64m big_bin small_bin —–将文件分割为64m大小的多个文件
网络管理
网络接口配置
使用ifconfig检查和配置网卡
ifconfig eth0 192.168.159.130 netmask 255.255.255.0 或者 ifconfig eth0 192.168.159.130 /24 (手工指定eth0的IP地址)
关闭和启动网卡:ifconfig eth0 down(或者ifdown eth0), ifconfig eth0 up(或者ifup eth0)
将ip信息写入配置文件
Redhat和centos系统的网络配置文件目录为/etc/sysconfig/network-scripts/ 配置文件为ifcfg-eth0
修改之后需重启网络服务,也可以立即生效 :service network restart
路由和网关设置
添加和删除网关:route add(删除则将add替换为del) default gw 192.169.159.3
删除网关也可以为:route del default
查看当前系统的路由表:route -n
常见网络故障排查:
通常分为软件故障和硬件故障
硬件件故障:网卡物理损坏、链路故障等原因。
软件故障:网卡驱动故障
1、ping 127.0.0.1 如果ping不通则说明本机TCP/IP协议栈有问题
2、确认网卡是否出现了物理或驱动故障,使用ping本机IP的方式,若能ping通则说明本机设备和驱动都正常。
3、ping同网段的其他主机,确认二层网络设备(例如交换机)工作是否正常。
4、确认是否能ping通网关IP,如果数据包能正常到达网关,说明本机和网络工作都正常。
5、ping公网上的ip,如果可以则说明本地的路由设置正确,否则就要确认路由设备是否做了正确的nat或路由设置。
6、确认是否能ping通公网上的某个域名,ping通则说明DNS部分设置正确。