shell,系统启动和内核管理

shell中的for和while循环,Linux的组成,系统启动的步骤,以及内核的管理

一、shell中的for和while循环

(1)for循环:

格式:    for  变量名  in 列表;do

循环体

done

执行机制:

依次将列表中的元素赋值给“变量名”; 每次赋值后即执
行一次循环体; 直到列表中的元素耗尽,循环结束

例子:1. 打印九九乘法表

for i in {1..9};do
for j in `seq $i`;do
echo -n “$j*$i=$[i*j] ”
done
echo
done

2.0

例子:2.打印等腰三角形

read -p “Please input ni xisng yao de ceng shu: ” k
for i in `seq $k`;do
n=$[k-i]
for j in `seq $n`;do
echo -n ” ”
done
l=$[2*i-1]
for m in `seq $l`;do
echo -ne “\033[5m*\033[0m”
done
echo

done

2.1

 

(2)while循环

while CONDITION; do
循环体
done

例子:1. 打印九九乘法表

i=1
while [ “$i” -le 9 ];do
j=1
while [ “$j” -le “$i” ];do
echo -n “$j*$i=$[i*j] ”
let j+=1
done
echo
let i+=1
done

3.0

例子:2.打印三角形

read -p “Please Input length : ” n
i=1
while [ “$i” -le “$n” ];do
k=1
m=$[n-i]
while [ “$k” -le “$m” ];do
echo -n ” ”
let k+=1
done
j=1
l=$[2*i-1]
while [ “$j” -le “$l” ];do
echo -n “*”
let j+=1
done
echo
let i+=1
done

3.1

二、Linux的组成

1. Linux由kernel内核+rootfs 组成

(1)kernel的功能:进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能

(2)rootfs:程序和glibc库文件

库文件就是函数集合,function,调用接口

过程调用:procedure,无返回值

函数调用:function

程序:二进制执行文件

2.内核设计流派:

(1)单内核:Linux ————>把所有功能都集成于同一个程序

(2)微内核:Windows,Solaris—->每种功能使用一个单独子系统实现

3.Linux内核特点:

(1)支持模块化:.ko(内核对象)如:文件系统,硬件驱动,网络协议等

(2)支持内核模块的动态装载和卸载

(3)组成部分:

核心文件:/boot/vmlinuz-VERSION-release

ramdisk:辅助的伪根系统

CentOS 5: /boot/initrd-VERSION-release.img

CentOS 6,7: /boot/initramfs-VERSION-release.img

模块文件:/lib/modules/VERSION-release

三、系统启动的步骤

(1)步骤:POST加电自检——>MBR引导——>GRUB——>加载内核——>启动init进程

——>读取/etc/inittab文件 /etc/init/*.conf文件——>……

(2) CentOS6步骤:

1.加载BIOS的硬件信息,获取第一个启动设备

2.读取第一个启动设备MBR的引导加载程序(grub)的启动信息

3.加载核心操作系统的核心信息,核心开始解压缩,并尝试驱
动所有的硬件设备

4.核心执行init程序,并获取默认的运行信息

5.init程序执行/etc/rc.d/rc.sysinit文件

6.启动核心的外挂模块

7.init执行运行的各个批处理文件(scripts)

8.init执行/etc/rc.d/rc.local

9.执行/bin/login程序,等待用户登录

10.登录之后开始以Shell控制主机

(3)POST:Power-On-Self-Test,加电自检,是BIOS功能的一个主要部
分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、串并行接
口、键盘、CD-ROM光驱等硬件情况的检测。

(4)ROM:BIOS,Basic Input and Output System,保存着有关计
算机系统最重要的基本输入输出程序,系统信息设置、开机加电自检程序和
系统启动自举程序等。

(5)RAM:CMOS互补金属氧化物半导体,保存各项参数的设定
按次序查找引导设备,第一个有引导程序的设备为本次启动设备

(6) bootloader:

Windows: ntloader

Linux:

LILO

GRUB

(7)MBR:

446:bootloader ,64:分区表,2:55AA

(8)GRUB:

primary boot loader : 1st stage,1.5 stage
secondary boot loader :2nd stage,分区文件

(9)kernel:
自身初始化:
探测可识别到的所有硬件设备
加载硬件驱动程序(借助于ramdisk加载驱动)
以只读方式挂载根文件系统
运行用户空间的第一个应用程序:/sbin/init

(10)ramdisk:

内核中的特性之一:使用缓冲和缓存来加速对磁盘上的文件访
问,并加载相应的硬件驱动

ramdisk文件的制作:

mkinitrd命令:

mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)

0.0

0.1

(11)init程序的类型

init读取其初始化文件:/etc/inittab
初始运行级别(RUN LEVEL)
系统初始化脚本
对应运行级别的脚本目录
捕获某个关键字顺序
定义UPS电源终端/恢复脚本
在虚拟控制台生成getty
在运行级别5初始化X

CentOS 7:

1.0

CentOS 6:

1.2

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/90469

(0)
zss123456zss123456
上一篇 2017-12-21 13:07
下一篇 2017-12-22 23:32

相关推荐

  • 【原创】Tengine+LUA+Nginx-GridFS+jemalloc编译安装

    操作系统 ubuntu 14.04 LTS Nginx-GridFS为nginx直接访问mongoDB的扩展模块,目前只支持到mongodb2.6.12 mongodb安装请自己百度 #安装依赖包保平安 apt-get install root-system-bin autoconf automake gcc c++ libgeoip-devlibxml++…

    Linux干货 2016-11-30
  • Linux文本处理工具grep

    文件查看工具:cat     将[文件]或标准输入组合输出到标准输出。               -A, –show-all       &nbs…

    Linux干货 2016-08-10
  • Gitlab代码管理仓库安装部署

    GitLab是利用 Ruby on Rails一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查…

    2016-07-26
  • 实时获取MySQL的TPS、QPS(输出到屏幕)

    这个脚本挺好用的,例如我们在主库执行了一个大事务,结果导致从库的show slave status\G 一直卡在 system lock状态,我们用下面这个脚本就能知道到底是hang住了,还是只是执行缓慢(反应在脚本执行结果里面就是qps\tps是不停变动的)。 当然,从库一直处于system lock 状态,一般是因为我们从库也设置双1导致,只要…

    Linux干货 2017-05-07
  • Varnish的配置与部署

          Varnish与一般服务器软件类似,分为master(management)进程和child(worker,主要做cache的工作)进程。master进程读入命令,进行一些初始化,然后fork并监控child进程。child进程分配若干线程进行工作,主要包括一些管理线程和很多woker线程。 va…

    2017-07-27
  • C语言的整型溢出问题

    整型溢出有点老生常谈了,bla, bla, bla… 但似乎没有引起多少人的重视。整型溢出会有可能导致缓冲区溢出,缓冲区溢出会导致各种黑客攻击,比如最近OpenSSL的heartbleed事件,就是一个buffer overread的事件。在这里写下这篇文章,希望大家都了解一下整型溢出,编译器的行为,以及如何防范,以写出更安全的代码。 什么是整型溢出 C语言…

    Linux干货 2016-06-03