默认教学计划
931人加入学习
(20人评价)
Linux运维基础
价格 ¥ 599.00
该课程属于 高校公益行 | 网络安全实践训练营 请加入后再学习
Linux内核与内核模块:
内核:/boot/vmlinuz-version
initramfs:/boot/initramfs-kernel_version
内核模块:/lib/modules/kernel_version/kernel
内核源码:/usr/src/kernels/kernel_version
内核版本:/proc/version
系统内核功能:/proc/sys/kernel
 
Linux关于内核的命令:
# lsmod:查看系统中加载的内核模块
结果解释:
第一列:module:模块的名称
第二列:size:模块的大小
第三列:userd by:此模块是否被其他模式使用(依赖关系)
 
# depmod:更新模块的依赖关系并创建依赖关系文件
  /lib/modules/kernel_version/modules.dep:解决linux模块依赖关系的文件
      -A:查找比/lib/modules/kernel_version/modules.dep新的模块,如果有,才会更新,并写入改文件
      -n:不写入依赖关系文件,直接输出到屏幕上
      -e:显示当前已经加载的但不可执行的模块名称
 
# modinfo:查看模块的信息
   modinfo modules_name
 
# insmod:加载模块
   insmod 模块绝对路径
   如:# insmod /lib/modules/2.6.32-642.el6.x86_64/kernel/fs/cifs/cifs.ko
 
# rmmod:删除模块
   rmmod 模块名称
 
# modprobe:加载删除模块(不需要模块的完整路径)
   -c:列出目前系统中的所有的模块
   -l:列出/lib/modules/2.6.32-642.el6.x86_64/kernel当中所有模块的完整文件名
   -f:强制加载
   -r:删除某个模块,类似于rmmod
 
        Linux内核模块额外的参数设置目录:/etc/modprobe.d/
        Linux启动时所用的重要的目录:/etc/sysconfig
 
 
 
 
 
init:
init:系统中第一个进程,PID是1,配置文件/etc/inittab
   Sys V:init CentOS5:把所有的功能都集成到一个文件中/etc/inittab,启动速度非常慢
   Upstart:CentOS6:采用事件驱动(event driven),把功能并行执行
 
Upstart 相关概念和术语:
Upstart 的基本概念和设计清晰明确。
UpStart 主要的概念是 job 和 event。
 
工作 Job 就是一个工作单元,用来完成一件工作,比如启动一个后台服务,或者运行一个配置命令。每个 Job 都等待一个或多个事件,一旦事件发生,upstart 就触发该 job 完成相应的工作。
Job 就是一个工作的单元,一个任务或者一个服务。可以理解为 sysvinit 中的一个服务脚本。有三种类型的工作:
task job:代表在一定时间内会执行完毕的任务,比如删除一个文件
service job:代表后台服务进程,比如 apache httpd。这里进程一般不会退出,一旦开始运行就成为一个后台精灵进程,由 init 进程管理,如果这类进程退出,由 init 进程重新启动,它们只能由 init 进程发送信号停止。它们的停止一般也是由于所依赖的停止事件而触发的,不过 upstart 也提供命令行工具,让管理人员手动停止某个服务;
Abstract job:仅由 upstart 内部使用,仅对理解 upstart 内部机理有所帮助。我们不用关心它。
 
除了以上的分类之外,还有另一种工作(Job)分类方法。Upstart 不仅可以用来为整个系统的初始化服务,也可以为每个用户会话(session)的初始化服务。系统的初始化任务就叫做 system job,比如挂载文件系统的任务就是一个 system job;用户会话的初始化服务就叫做 session job。
 
Job 生命周期:Upstart 为每个工作都维护一个生命周期。一般来说,工作有开始、运行和结束这几种状态。为了更精细地描述工作的变化,Upstart 还引入了一些其它的状态。比如开始就有开始之前(pre-start),即将开始(starting)和已经开始了(started)种不同的状态,这样可以更加精确地描述工作的当前状态。
工作从某种初始状态开始,逐渐变化,或许要经历其它几种不同的状态,最终进入另外一种状态,形成一个状态机。在这个过程中,当工作的状态即将发生变化的时候,init 进程会发出相应的事件(event)。
 
Upstart 中 Job 的可能状态
Waiting:初始状态
Starting:Job 即将开始
pre-start:执行 pre-start 段,即任务开始前应该完成的工作
Spawned:准备执行 script 或者 exec 段
post-start:执行 post-start 动作
Running:interim state set after post-start section processed denoting job is running (But it may have no associated PID!)
pre-stop:执行 pre-stop 段
Stopping:interim state set after pre-stop section processed
Killed:任务即将被停止
post-stop:执行 post-stop 段
 
 
事件 Event
顾名思义,Event 就是一个事件。事件在 upstart 中以通知消息的形式具体存在。一旦某个事件发生了,Upstart 就向整个系统发送一个消息。没有任何手段阻止事件消息被 upstart 的其它部分知晓,也就是说,事件一旦发生,整个 upstart 系统中所有工作和其它的事件都会得到通知。
 
Event 可以分为三类: signal,methods 或者 hooks。
Signal 事件是非阻塞的,异步的。发送一个信号之后控制权立即返回。
Methods 事件是阻塞的,同步的。
Hooks 事件是阻塞的,同步的。它介于 Signals 和 Methods 之间,调用发出 Hooks 事件的进程必须等待事件完成才可以得到控制权,但不检查事件是否成功。
事件是个非常抽象的概念,下面我罗列出一些常见的事件,希望可以帮助您进一步了解事件的含义:
系统上电启动,init 进程会发送"start"事件
根文件系统可写时,相应 job 会发送文件系统就绪的事件
一个块设备被发现并初始化完成,发送相应的事件
某个文件系统被挂载,发送相应的事件
类似 atd 和 cron,可以在某个时间点,或者周期的时间点发送事件
另外一个 job 开始或结束时,发送相应的事件
一个磁盘文件被修改时,可以发出相应的事件
一个网络设备被发现时,可以发出相应的事件
缺省路由被添加或删除时,可以发出相应的事件
 
 
CentOS6上Upstart大致的一个启动过程:
1.内核启动init,读取配置文件/etc/inittab,在CentOS6只定义了运行级别
2.系统初始化:(/etc/init/rcS.conf exec /etc/rc.d/rc.sysinit)
3.init找到/etc/inittab文件,确定默认的运行级别(X) (/etc/init/rcS.conf exec telinit $runlevel)
4.触发相应的runlevel事件(/etc/init/rc.conf exec /etc/rc.d/rc $RUNLEVEL)
5.开始运行/etc/rc.d/rc,传入参数X
6./etc/rc.d/rc脚本进行一系列设置,最后运行相应的/etc/rcX.d/中的脚本
7./etc/rcX.d/中的脚本按事先设定的优先级依次启动
8.最后执行/etc/rc.d/rc.local
9.加载终端或X-Window接口
 
 
/etc/init:目录定义了系统初始化的配置文件
/proc/cmdline:系统内核设置的参数
/etc/rc.d/rc.sysinit:系统初始化主要配置文件
 
/etc/rc.d/rc.sysinit 这个文件做了哪些工作:
1、获得网络环境
2、挂载设备
3、开机启动画面Plymouth(取替了过往的 RHGB)
4、判断是否启用SELinux
5、显示于开机过程中的欢迎画面
6、初始化硬件
7、用户自定义模块的加载
8、配置内核的参数
9、设置主机名
10、同步存储器
11、设备映射器及相关的初始化
12、初始化软件磁盘阵列(RAID)
13、初始化 LVM 的文件系统功能
14、检验磁盘文件系统(fsck)
15、磁盘配额(quota)
16、重新以可读写模式挂载系统磁盘
17、更新quota(非必要)
18、启动系统虚拟随机数生成器
19、配置机器(非必要)
20、清除开机过程当中的临时文件
21、创建ICE目录
22、启动交换分区(swap)
23、将开机信息写入/var/log/dmesg文件中   
 
 
/etc/init/rc.conf:sysv运行级别
/etc/rc.d/存放每个运行级别所需要的服务,比如/etc/rc.d/rc3.d/目录定义的运行级别3所学药的服务   
   命名:  K+数字+服务名
          S+数字+服务器
          K:kill结束服务
          S:start开启服务
          数字:代表启动结束的优先级,数字越小优先级越高  
/etc/rc.d/rc.local:系统启动加载的最后一个脚本(用户的脚本)
 
 
sysv init:chkconfig:定义系统服务在每个级别的运行状态
     --list:查看系统中所有服务的状态
     chkconfig --level 2345 httpd on
     chkconfig --level 2345 httpd off    
 
服务分类:
    独立服务:应用程序自己控制
    超级服务:依赖于xinetd进程来管理
控制服务:
  service service_name  start|stop|restart|reload|status
  start:启动服务
  stop:停止服务
  restart:重新启动
  reload:重新加载服务
  status:查看服务状态
 
upstart:
  initctl start|stop|restart|reload|status service_name
[展开全文]

授课教师

课程特色

视频(102)
下载资料(1)