系统管理部分(看鸟哥私房菜该部分笔记)
一:启动关机的流程与加载程序
1.加载Bios的硬件信息
2.读取第一个启动设备的MBR的引导加载程序(grub,lilo)的启动信息
3.加载内核,尝试驱动所有硬件设备
4.执行init程序
Bios解释:BIOS是英文"Basic Input Output System"的缩略语,直译过来后中文名称就是"基本输入输出系统"。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。
上面的解释是不是有点晕呢,那么下面将进行详细的解释:
其实简单的说BIOS就是被“固化”在计算机硬件中的一组程序,它为你的计算机提供最低级的、最直接的硬件控制。BIOS实际上相当于计算机硬件与软件程序之间的一座桥梁,它本身其实就是一个程序也可以说是一个软件。我们对它最直观的认识就是POST(Power On System Test)功能,当计算机接通电源后,BIOS将进行检验其内部所有设备的自检,包括对CPU、内存、只读存储器、系统主板、CMOS存储器、并行和串行通信子系统、软盘和硬盘子系统以及键盘进行测试。自检测试完成后,系统将在指定的驱动器中寻找操作系统,并向内存中装入操作系统。
启动程序init之后,首先读取/etc/inittab的文件信息来获取运行级别..
/etc/inittab文件内容详解:
id:4:initdefault: 设置系统默认的运行级别
si::sysinit:/etc/rc.d/rc.sysinit 开始启动运行等级的服务前, 使用检测与初始化系统环境的设置文件
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6 七个不同的运行等级启动脚本的路径
ca::ctrlaltdel:/sbin/shutdown -t3 -r now 是否允许 ctrl+alt+delete 按键来重启系统
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6 本系统启动的终端个数
x:5:respawn:/etc/X11/prefdm -nodaemon 在x window环境下运行的脚本文件 (实际上就是桌面资源管理器程序)
/etc/rc.d/rc.sysinit文件的主要工作有:
1.获取网络环境与主机类型 首先读取网络设置文件/etc/sysconfig/network,获取主机名和默认网关等网络环境
2.测试与载入内存设备/proc及usb设备/sys 除载入内存设备/proc之外,还会主动检测系统上是否有usb的设备,若有则会主动加载usb的驱动程序,并且尝试载入usb的文件系统
3.决定是否启动SElinux
4.接口设备的检测与即插即用(PnP)参数的测试 根据核心在启动时检测的结果开始进行ide/scsi/网络/音效等接口设备的检测,以及利用已加载的核心模块进行PnP设备的参数测试
5.用户自定义模块的加载 用户可以在/etc/sysconfig/modules/*.modules加入自定义的模块,此时会加载到系统中
6.加载核心的相关设置 系统会主动去读取/etc/sysctl.conf文件的设置值,使核心功能符合我们的要求
7.设置系统时间
8.设置终端控制台的字形
9.设置Raid与LVM等硬盘功能
10.以fsck检验磁盘文件系统
11.进行磁盘配额quota的转换(非必要)
12.重新以可读取模式载入系统磁盘
13.启动quota功能
14.启动系统随机数设备(产生随机数功能)
15.清除启动过程中的临时文件
16.将启动相关信息加载到/var/log/dmesg文件中
系统开机启动的服务是有chkconfig程序来管理的
开机后要执行的shell脚本文件有/etc/rc.d/rc.local 因此需要开机后执行的工作可以放入该shell脚本中
1:2345:respawn:/sbin/mingetty tty1
/sbin/mingetty tty1 是启动终端的命令
respawn的init是表示后面的命令被终止时,init会重新启动该项目
用户自定义的模块放在 /etc/sysconfig/modules目录下
对模块进行一些参数设计的文件 /etc/modprobe.conf
随系统启动的服务的相关配置文件都在系统的配置文件目录下/etc/sysconfig
介绍两个文件:
/etc/sysconfig/network 设置主机名和网关等信息
/etc/sysconfig/network-scripts 主要是设置网卡
这里需要注意的是,内核安装在磁盘上是压缩文件,因此在使用内核之前,就要将它解压缩后,才加载到内存中
核心和核心模块的存放位置:
核心压缩文件:/boot/vmlinuz-2.6.18-194.el5
核心模块:/lib/modules/`uname -r`/kernel
核心源码:/usr/src/redhat
核心解压缩所需的RamDisk:/boot/initrd-2.6.18-194.el5.img
下面进行详细的解释:
grub>root (hd0,0) --root指令为grub指定了一个根分区
grub>kernel /vmlinuz-2.6.18-194.el5 --kernel指令将操作系统内核载入内存
grub>module /vmlinuz-2.6.18-194.el5xen ro root=/dev/sda2 --module指令加载指定的模块
grub>initrd / initrd-2.6.18-194.el5.img --指定initrd文件
grub>boot --boot 指令调用相应的启动函数启动OS内核
当执行grub>boot指令后,grub载入内核vmlinuz并解压缩到指定位置(后面会讲到vmlinuz是如何解压缩的),同时载入initrd.img到内存,系统启动的控制权移交给kernel。kernel会立即初始化系统中各设备并做相关配置工作,就有了我们后面的故事。
对应内核映像,我还要多说几句。这里的vmlinuz,"vm"表示virtual memory,表示虚拟内存,z表示zip(压缩)。vmlinuz的建立有两种方式。一是编译内核时通过“make zImage”创建,然后通过:“cp /usr/src/linux-2.6.34/arch/x86/linux/boot/zImage /boot/vmlinuz”产生。zImage适用于小内核的情况,他的存在是为了向后的兼容性。二是内核编译时通过命令make bzImage创建,然后通过:“cp/usr/src/linux-2.6.34/arch/x86/linux/boot/bzImage /boot/vmlinuz”产生。bzImage是压缩的内核映像。
需要注意,bzImage不是用bzip2压缩的,bzImage中的bz容易引起误解,bz表示“big zImage”。 zImage和bzImage都是用gzip压缩的,他们不仅是个压缩文件,而且在这两个文件的开头部分内嵌有gzip解压缩代码。所以你不能用gunzip 或 gzip ?dc解压缩vmlinuz。
注意到,最后一行还有个initrd /initrd-2.6.18-194.el5.img参数。initrd是“initial ramdisk”的简写。initrd一般被用来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态。参数中的initrd-2.6.18-194.el5.img主要是用于加载ext3等文件系统及scsi设备的驱动。
initrd是一种基于内存的文件系统,启动过程中,系统在访问真正的根文件系统时,会先访问initrd文件系统。比如,使用的是scsi硬盘,而内核vmlinuz中并没有这个scsi硬件的驱动,那么在装入scsi模块之前,内核不能加载根文件系统,但scsi模块存储在根文件系统的/lib/modules下。为了解决这个问题,能引导一个能够读实际内核的initrd内核并用initrd修正scsi引导问题。initrd-2.6.18-194.el5.img是用gzip压缩的文件,initrd实现加载一些模块和安装文件系统等功能。
initrd映象文件是使用mkinitrd命令创建的。mkinitrd实用程式能够创建initrd映象文件。这个命令是RedHat专有的。其他Linux发行版或许有相应的命令。这是个非常方便的实用程序。具体情况请看帮助:man mkinitrd下面的命令创建initrd映象文件。
如果核心被加载到系统中,那么就会有几个信息记录下来:
核心版本:/proc/version
系统核心功能:/proc/sys/kernel
如果一个新硬件,操作系统不支持,怎么办?
重新编译核心,并加入最新的硬件驱动程序源码
将该硬件的驱动程序编译为模块,在启动的时候加载该模块
核心模块与依赖性
/lib/modules/`uname -r`/kernel 中还分成几个重要的目录:
arch:与硬件平台有关的项目,例如cpu的等级
crypto:核心所支持的加密技术,例如md5或des等
drivers:一些硬件的驱动程序,例如显卡,网卡等
fs:核心所支持的文件系统,例如vfat,nfs,ext3等
lib:一些函数库
net:与网络有关的各项协议数据,还有防火墙模块
sound:与音效有关的各模块
核心支持各模块之间的依赖性的解决方案就是检查/lib/modules/`uname -r`/modules.dep文件,它记录了核心支持的模块之间的各项依赖性
就是通过该文件中各模块之间的路径来搜索模块,以解决模块之间的依赖性,如果加入了新的模块需要内核支持的话,把相应的模块移动到内核存放模块相应的目录下,然后使用depmod命令向modules.dep文件中更新路径即可,然后内核就能识别该模块.
lsmod:查看当前核心加载了多少模块
modinfo:查看某个模块的相关信息 modinfo pcnet32
核心模块的加载和删除:insmod modprobe rmmod
insmod是只单独的加载某个模块 insmod /lib/modules/2.6.18-194.el5/kernel/fs/ext4/ext4.ko 需要模块的全路径
modprobe比insmod要方便一些,此命令会去读取modules.dep文件,因此加载模块的时候会加载模块需要的其它模块解决模块的依赖性
rmmod是删除已加载的模块
如果需要安装多重操作系统的话,必须先安装windows操作系统再安装Linux操作系统,因为windows的引导加载程序会强制安装在MBR或超级块中,而linux的引导程序可以选择性的安装,因此应该先安装windows再安装linux
grub的设置文件/boot/menu.lst与安装类型
grub.conf是menu.lst的连接文件
menu.lst文件详解:
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-194.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-194.el5 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.18-194.el5.img
default=0:表示在启动过程中没有选择其它的启动项目,就按title1的内核文件进行启动,
timeout=5:启动的时候菜单显示的秒数
splashimage=(hd0,0)/grub/splash.xpm.gz:启动菜单显示的图片或相关的影像文件
hiddenmenu:表示隐藏菜单的意思,如果想显示菜单就把这个命令注释掉
什么是开放源码,编译器与可执行文件
可执行文件:从用户的角度来看,可执行文件是文件属性具有X权限,而系统真正认识的可执行文件是二进制文件
怎样查看文件是否是二进制文件呢?下面来看看
使用file /bin/bash
/bin/bash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
如果是二进制文件可执行时,它就会显示文件的类别( ELF 32-bit LSB executable),同是是否使用动态函数库(uses shared libs)
file /etc/init.d/syslog
/etc/init.d/syslog: Bourne-Again shell script text executable
如果是一般的脚本文件那么它会显示(script text executable)
在编译过程中产生的目标文件(object file),这些文件的扩展名为*.o C语言的源文件通常是以*.C作为扩展名
在编译过程中程序中还会使用了某些函数库,那么编译器就会做一个连接在最终的可执行二进制文件内.
软件的更新分为两类
直接以源码通过编译来安装与升级;
直接以编译好的二进制文件来安装与升级;
tar软件安装的命令执行方式:
1. ./configure
2. make clean (如果不清楚之前的一些目标文件,如果目标文件重复的话,那么就不会去重新编译,然而对编译过程会造成影响)
3. make
4. make install
在安装的时候建议将软件安装在/usr/local下,因为在默认情况下man 程序回去/usr/local下搜索相关的帮助文档
因为/usr/local目录下有bin etc lib share/man 这几个目录,如果就安装在/usr/local下,程序安装多了的情况下 就难以查找文件的来源,所以在安装的时候每个软件创建一个独立的目录用来存放程序本身,本身也会产生以上几个目录.
源码安装的软件,直接删除安装目录就可以算是成功删除该程序了
加上man path
在单独安装某个软件的时候,会导致使用man page的时候man程序去默认路劲搜索文档的时候搜索不到相关文档,这个时候就需要将Man page的路径加到/etc/man.config中.以rp-pppoe这个软件为例,该程序安装在/usr/local/rp-pppoe中,通常man page会放在/usr/local/rp-pppoe/man中,因此只需在/etc/man.confg中加入MANPATH /usr/local/rp-pppoe/man这样就可以使用帮助文档了..
不过redhat的系统man page是放在/usr/share/man和/usr/local/share/man中
在使用tar来解包的时候需要注意的是:将源码包解压到指定目录,只需要先切换到指定目录,然后解压缩的时候使用压缩包的全路径进行解压缩.就可以解压到当前目录
静态与动态函数库
1.静态函数库
扩展名:这类函数库的扩展名类似于libxxx.a
编译行为:在编译的时候将整个函数库的数据整合到执行文件中,所以利用静态函数库编译的文件会比较大一些
2.动态函数库
扩展名:这类函数库的扩展名类似于libxxx.so
编译行为:动态函数库在编译的时候,只在执行文件中加入一个动态函数库的一个引用(一个指针而已),动态函数库并没有加入到执行文件中,因此文件会小一些.
绝大多数的函数库都是放在/lib /usr/lib
内核的函数库放在/lib/modules/2.6.18-194.el5/kernel/lib中 类似于libxxx.ko 也可以叫模块
ldconfig与/etc/ld.so.conf
使用ldconfig执行文件与/etc/ld.so.conf配置文件就可以将动态函数库加载到内存中,这样在平凡使用的函数库的时候就会提高一些效率.
只需要在/etc/ld.so.conf中加入某个程序函数库所在的目录,如Mysql的函数库目录在/usr/lib/mysql中再执行ldconfig就可以将mysql需要的函数库先行加载到内存中
找出某个文件使用了哪些动态函数库:ldd /usr/bin/passwd
检查文件的正确性:md5sum md5sum grep-2.5.1-7.8.i386.rpm
patch的主要功能是更新源码,所以更新源码之后,还需要进行重新编译(只是更新源码的文本文件,并没有生成目标文件和可执行文件)
硬件平台 平台名称的含义
i386 几乎使用于所有的x86平台,i指的是Intel兼容的cpu,386是cpu的等级 这个类型的文件可以在任何机器上安装
i586 586等级的计算机
i686 686等级的计算机
noarch 没有任何硬件等级的限制,一般来说这中类型的RPM文件,里面应该没有二进制文件的存在
x86是cpu的一种指令集(是用于控制芯片运行的一个程序)
32位的操作系统是针对32位处理器设计的:32位的cpu只支持4G内存的寻址空间(32位系统只能使用4G的内存空间)
64位的操作系统针对64位的处理器设计的:支持内存的寻址空间是2的64次方(目前AMD和Inter的64位CPU并不是真正意义上的64CPU,只是进行了部分64位的改进,比如64位的内存寻址等。)要是真的全部都是64位的了,那么现在市场上的软件将全部被淘汰不能使用了~呵呵,想像一下会是什么样子。
什么是守护程序与服务
守护程序就是在后台中执行的程序
守护程序的分类:
独立启动的:如httpd
超级守护程序:xinet 它的作用就是管理一些服务(在开机启动的状态下),如ftp:在没有ftp的请求的时候,ftp会处于睡眠状态,在有请求的时候,请求会先到xinet然后由xinet转给ftp程序,此时唤醒内存中的ftp程序,由它自己来处理请求.
这就是超级守护程序的优点,在没有请求的状态下程序会处于睡眠状态(sleeping),但是响应速度相应的较慢,因为需要花时间去唤醒该程序
守护程序的命名规则:
通常在服务名称后面加上一个d,例如httpd,atd,crond 这些都是守护程序
系统的守护程序的位置
独立启动的守护程序:/etc/init.d/ 或 /etc/rc.d/init.d下
超级守护程序:即xinet,xinet本身也是一个独立启动的守护程序,挂在xinet中的服务的设置文件在/etc/xinetd.conf与/etc/xinetd.d/*目录的任何文件中
如何启动一个守护程序:/etc/rc.d/init.d/sshd start或service sshd start,前者是使用脚本去寻找相关的执行文件来执行程序,后者是通过service这个shell脚本
来执行/etc/init.d下面的相应的脚本而已,相比之下后者比起前者要多一步...
/etc/xinetd.conf:这个文件就是xinet程序的参数文件
/etc/xinetd.d/*:这个目录里面的所有文件就是由xinet来管理的服务
解析超级守护程序的配置文件
xinetd.conf
先来看看默认的xinetd.conf文件的内容
defaults
{
log_type = SYSLOG daemon info 登录后会记录到登录文件的信息
log_on_failure = HOST 如登录失败,记录的信息是什么
log_on_success = PID HOST DURATION EXIT 成功登录时,记录的信息有哪些
cps = 50 10 同一秒内,最大的联机数为50台,若超过50台则该服务会暂停10秒
instances = 50 同一服务的同是联机数最多可达50台
per_source = 10
v6only = no
groups = yes
umask = 002
}
includedir /etc/xinetd.d 更多的设置值在/etc/xinetd.d目录中
我们可以通过由xinet管理的程序,由/etc/xinetd.d目录下相关的文件来控制用户对该服务的访问
192.168.1.0/24和192.168.0.0/16分别的意思是:前者是255个ip地址,后者是255*255个地址
TCP_Wrappers
这是一个软件名,安装之后的程序是/usr/sbin/tcpd,/etc/hosts.allow和/etc/hosts.deny是该程序的设置文件,该程序是用来分析进入系统的Tcp的数据包从而进行一些控制.allow是允许,deny是拒绝.通过相应的文件来进行相应的控制
只有自定义支持TCP_Wrappers的功能,否则无法使用它.. 例如:
在/etc/hosts.deny文件中加入
sshd:192.168.1.0/255.255.255.0 只要加入了这一行一网段的ip都无法使用ssh来连接该主机了
还有需要注意的是:tcpd程序会先读取/etc/hosts.allow文件信息去进行相应的操作,而后才是去读取/etc/hosts.deny文件中的信息
设置开机后立即启动的程序
先来复习一下系统的启动过程
BIOS加电自检
MBR
加载内核
启动init
初始化脚本(/etc/rc.d/sysinit)
启动守护程序(etc/rc.d/rc[0-6].d/*)
本地设置(/etc/rc.d/rc.local)
整个启动过程中,启动程序的地方就两处(init除外),启动守护程序(/etc/rc.d/rc[0-6].d/)只要将想要开机就启动的程序放入/etc/init.d下面并且使用
chkconfig --add server name(/etc/init.d下面的脚本文件需要固定格式,相关资料参考鸟哥私房菜462页)就会开机之后启动了,/etc/rc.d/rc.local文件是shell脚本文件,也是一样将想要启动的程序写入该文件即可.
chkconfig列出的有两部分,前部分是独立启动的守护程序,后部分是由超级守护程序来管理的程序.
ls /etc/rc.d/rc3.d 列出了一堆以S和K开头的文件,S代表开机时启动,K代表关机时关闭
ntsysv可以直接使用图形化的界面来操作,开机启动的程序.
认识与分析登录文件
为什么要分析登录文件:这是由于登录文件有几个重要的功能:
解决系统故障:启动过程中检测到的硬件数据会记录到内存中,由于这些检测的信息可以让我们了解硬件,所以如果系统发生问题,可以执行dmesg命令,看看硬件检测是否出现错误.另外,如果出现系统资源耗尽,核心活动发生错误等事件,则系统登录文件会将错误信息记录到登录文件中(/var/log/messages),这些都可以用来获取错误发生时的信息,并帮助你解决问题
解决网络故障问题:
记录登录信息
常见的登录文件有:
/var/log/secure:记录登录系统访问数据的文件,例如pop3,ssh,telnet,ftp等都会记录在此文件中.
在这补充一点:清空文件内容可以用cat /dev/null >/var/log/secure 此命令来清空文件内容不留一点数据
/var/log/wtmp:记录登录者的信息数据,由于本文件已编码过,所以必须使用last命令来取出文件的内容
/var/log/messages:只要是系统的错误信息(或是重要的信息)都会记录在这个文件中
/var/log/boot.log:记录开机或一些服务启动时所显示的启动或关闭信息.
/var/log/maillog或/var/log/mail/*:记录邮件访问或往来的用户信息
/var/log/cron:记录crontab例行性服务的内容
在真实的linux服务器中,比如提供httpd服务的服务器,一个月下来的日志文件的记录信息数据量会很大, 如果一个文本文件变的很大的情况下,来记录该程序相关的程序(此程序就是syslogd)在向该文件中写入信息会很慢(因为ASCII格式的数据文件写入比较麻烦).因此出现了一个解决方案(logrotate,也就是轮替当前的日志文件,将旧的日志文件改名并创建新的日志记录文件)
/etc/syslog.conf是syslogd程序的配置文件该文件中记录了哪些程序需要记录什么样的信息
信息的等级
系统将信息分为7个重要的等级,按顺序是这样的(由不重要到重要):
(1)info:基本的信息说明
(2)notice:比info更需要注意的一些信息
(3)warning或warn:警告信息,可能有问题,但还不至于影响到守护程序运行的信息,基本上,info,notice,warning这3个信息都是在告诉一些基本信息,应该不会造成一些系统运行问题.
(4)err或error:一些重大的错误信息,例如设置文件的某些设置值造成某些服务无法启动的信息,可以了解到该服务无法启动的原因
(5)crit:比error还要严重的错误信息,这个crit是临界点的缩写,这个错误已经严重了.
(6)alert:警告,比crit还要严重的问题.
(7)emerg或panic:疼痛等级,意指系统几乎要死机,非常严重的错误信息,通常大概只有硬件出现问题,导致整个内核无法顺利运行的时候,才会出现这样等级的信息
除了这些信息之外,还有两个特殊的等级,就是Debug(错误检测)与none(不需记录),要做一些错误检测,或者是忽略某些服务的信息时,就用他们.
特别注意,在信息等级之前还有.=!连接符号,它们表示:
(.):表示比后面还要高的等级(含该等级)都记录下来,例如mail.info表示只要是mail的信息,而且该信息高于info的就会记录下来
(.=):表示所需要的等级就是后面的等级,其它的不要
(.!):表示不等于,即除了该等级之外的其它等级都记录
需要注意的是:使用vim打开/var/log/messages文件之后并wq退出之后,syslogd程序会误判该文件已被修改过而不会去写入新的数据,解决的方法是重启syslogd或者给该文件增加特殊权限a使该文件只能增加不能修改..但是在使用logrotate程序来替换的时候还是无法移动该文件并修改文件名的,唯一的办法就是在使用logrotate的时候该a权限取消,该程序工作完成之后再加上a权限..
/etc/syslog.conf:是syslogd程序的记录信息等级文件,也可以叫记录信息的配置文件
/etc/sysconfig/syslog:是syslogd程序启动的时候需要读取的设置文件(该程序已什么样的方式启动,都可以在该文件中设置)
让syslogd接受其它主机发送过来的日志信息只需要按一下的步骤即可:
1.syslogd主机,看一看/etc/services下面有没有syslog 514/udp,没有增加即可(该文件中记录的是各程序默认启动的端口号)
2.vim /etc/sysconfig/syslog把SYSLOGD_OPTIONS="-m 0" 改成SYSLOGD_OPTIONS="-m 0 -r"(应该就是启动服务端程序)
3.重新启动syslogd程序,此时的syslogd程序已经作为网络程序存在于后台进程中(因为不加-r参数的话,原本是以本地程序启动在本机的)
4.客户端只需要在/etc/syslog.conf文件中指定记录信息发送的主机ip地址即可,如:*.* @192.168.1.2
如何使用logrotate程序
可以在/etc/logrotate.d/syslog中增加
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
sharedscripts
prerotate
/usr/bin/chattr -a /var/log/messages (这里的命令使用使用全路径,应该是该程序没有使用环境变量搜索的功能)
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true (让syslog程序挂起,目的是让在该程序再此启动的时候重新载入一下参数配置文件,好让该程序让新的文件中写入信息)
endscript
}
常见的系统分析命令:last,lastlog,dmesg
dmesg:是查看记录中内存中的硬件检测信息
last:该命令读取的记录在/var/log/wtmp中的信息(该文件记录的是过去到现在登录系统用户的相关信息)
lastlog:读取/var/log/lastlog内的信息,显示当前系统每个帐号最近一次登录系统的时间
Linux备份策略
完整备份使用的工具:tar cpio dump
cpio最大的好处就是,连设备文件都可以复制,所以选择cpio是进行完整备份是很好的选择,但需要注意的是cpio需要配合find才可以正常操作,另外使用cpio时需要配合另一个用来备份的硬件设备(硬盘或磁带机)
1.使用cpio来备份和还原
find / print | cpio-covB >/dev/st0 备份到磁带机
cpio -iduv </dev/st0 还原
2.使用tar来备份和还原
tar --exclude /proc --exclude /mnt --exclude /tmp -zcvpf host.tgz
tar -zxvf host.tgz
3.用dd备份一模一样的硬盘
dd if=/dev/hda of=/dev/hdb
部分备份的基础工具:可以使用tar
tar -zpcvf mysql.`date +%Y-%m-%d`.tgz /var/lib/mysql (注意date后面要接空格,还有注意加上p选项来保留文件的原有属性,不会因为使用者而改变)
X window
X window 启用的流程
1.开始的检测界面:startx
其实X window系统就是X服务器+X客户端
startx就是一个shell脚本,它的作用就是:在执行的时候,会主动寻找用户家目录下面的.xinitrc和.xserver这两个文件(redhat没有)
.xinitrc是X客户端的设置数据文件
.xserver是X服务器的设置数据文件
但是用户不一定会有这两个文件,如果没有,那么startx就会主动以系统默认的设置文件来启用这两个设置文件分别在:
/etc/X11/xinit/xinitrc与/etc/X11/xserver中.不论是自己的xinitrc还是系统的xinitrc,最后都会有一个X客户端与一个X服务器的设置文件被采用,但用户家目录下的xinitrc与xserver具有优先权.在获取这两个文件之后,接下来就以xinit程序来执行X客户端与X服务器的启动.
2.开始启动X的xinit
事实上,实际在启动X的是xinit程序.通过startx找到适当的xinitrc与xserver后,就交给xinit来执行.在默认的情况下用户没有那两个文件时,输入startx,就等于执行xinit /etc/X11/xinit/xinitrc /etc/X11/xinit/xserver命令
3.启动X客户端的文件:xinitrc
假设家目录没有.xinitrc,此时X客户端会以/etc/X11/xinit/xinitrc作为启动X客户端的默认脚本.xinitrc文件会引入很多其它文件参数,包括/etc/X11/xinit/xinitrc-common,/etc/X11/xinit/xclients以及/etc/sysconfig/desktop,重点是xinitrc会依据上述文件的判断,搜索出要启动的窗口管理器是哪一个,在FC4下面会分析/etc/sysconfig/desktop来决定启动kde还是gnome
附加一条:x:5:respawn:/etc/X11/prefdm -nodaemon 这一行是说明在级别5启动的时候默认附加执行的程序(该程序是通过分析/etc/sysconfig/desktop来默认执行的窗口管理器)
硬件检测与维护
linux提供几个简单的命令将核心检测到的硬件信息调出来
hdparm:观察硬盘信息
lspci:检查整个系统pci接口的各设备
dmesg:观察核心运行过程中所显示的各项消息记录
iostat:检查整个cpu与接口设备的输入输出状态
Linux核心编译与管理
什么是内核:其实内核就是系统上的一个文件而已,这个文件包含了驱动主机各项硬件的检测程序与驱动模块
核心加载之后所做的事情:通过加载程序的辅助,加载核心文件到主存储器中,此时核心文件解压缩后,会开始检测硬件的各项配置,并加载适当的驱动模块来让硬件生效..

浙公网安备 33010602011771号