系统管理部分(看鸟哥私房菜该部分笔记)

一:启动关机的流程与加载程序

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核心编译与管理

什么是内核:其实内核就是系统上的一个文件而已,这个文件包含了驱动主机各项硬件的检测程序与驱动模块

核心加载之后所做的事情:通过加载程序的辅助,加载核心文件到主存储器中,此时核心文件解压缩后,会开始检测硬件的各项配置,并加载适当的驱动模块来让硬件生效..

posted @ 2013-01-11 10:48  ..空白  阅读(221)  评论(0)    收藏  举报