系统启动和内核管理-1

1、Linux 组成

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

rootfs: 程序和glibc

内核设计流派:

单内核(monolithic kernel)-Linux-把所有功能集成于同一个程序

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

1)、Linux内核特点:

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

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

2)、内核组成部分:

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

ramdisk辅助的伪根系统(工具程序mkinitrd):

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

CentOS6,7: /boot/initramfs-VERSION-release.img

/boot/initramfs-2.6.32-642.el6.x86_64.img

$ mkinitrd initramfs-`uname -r`.img `uname -r`可以恢复丢失的ramdisk系统

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

          /lib/modules/2.6.32-642.el6.x86_64

2、centos6 启动流程

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

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

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

4).核心执行init 程序并获取运行信息

5).Init执行/etc/rc.d/rc.sysinit 文件

6).启动核心的外挂模块(/etc/modprobe.conf)

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

8).Init执行/etc/rc.d/rc.local

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

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

启动流程:

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

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

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

bootloader:引导加载器,引导程序

windows:ntloader,仅是启动OS

linux:功能丰富,提供菜单,允许用户选择要启动系统或不同的内核版本,把用户选定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核

LILO:Linux Loader

GRUB:GRand Unified Bootloader

GRUB 0.X:GRUB Legacy,GRUB2

MBR(446-bootloader,64-分区表,2-55aa)

GRUB:

primary boot loader: 1st stage,1.5 stage

secondary boot loader:2nd stage,分区文件

stage1: mbr

stage1_5: mbr之后27扇区,让stage1中bootloader能识别stage2所在的分区上的文件系统

stage2:磁盘分区(/boot/grub/)

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

启动流程(到/etc/rc.d/rc.sysinit的任何步骤出现问题,系统均不能正常启动):

POST(BIOS)加电自检–>

BootSequence(BIOS)选取确定引导设备(磁盘、优盘、光盘等等)–>

Bootloader(MBR)第一阶段读取引导设备mbr的446字节即是bootloader, 在5/6上是grub程序,目的是在未来引导boot分区;一点五阶段读取mbr的后续27个扇区的数据,识别boot所在的分区,进而加载boot分区驱动等;第二阶段读取grub文件夹文件–>kernel(ramdisk)–>

rootfs识别根系统(只读)–> switchroot

启动第一个进程init(systemd)–>(/etc/inittab)–>设置默认运行级别–>

运行系统初始脚本/etc/rc.d/rc.sysinit完成系统初始化–>

关闭对应级别下需要关闭的服务,启动需要启动的服务–>设置登录终端

3、init 程序的类型及配置文件:

SysV: init,CentOS5之前

配置文件/etc/inittab

Upstart: init,CentOS6

配置文件/etc/inittab

/etc/init/*.conf

Systemd:systemd,CentOS7

配置文件/usr/lib/systemd/system

/etc/systemd/system

4、/sbin/init (CentOS6之前)

运行级别:为系统运行或维护等目的而设定0-6共7个级别

0:关机

1:单用户模式(root自动登录),single,维护模式

2: 多用户模式,启动网络功能,但不会启动NFS,维护模式

3:多用户模式,正常模式,文本界面

4:预留级别,可同3 级别

5:多用户模式,正常模式,图形界面

6:重启

默认级别:3, 5

切换级别:init #

查看级别:runlevel; who -r

Init的初始化即是读取其配置文件:/etc/inittab

[root@localhost ~]# runlevel

N 5

[root@localhost ~]# init 3

[root@localhost ~]# runlevel

5 3

[root@localhost ~]# who -r

run-level 3  2016-09-08 21:44  last=5

[root@localhost ~]# init 6 重启系统

[root@localhost ~]# init 0 关闭系统

5、inittab和相关文件

1)、CentOS5的inittab文件

配置文件:/etc/inittab

每一行定义一种action以及与之对应的process,格式如下:

id:runlevel:action:process

action:

wait: 切换至此级别运行一次

respawn:此process 终止,就重新启动之

initdefault:设定默认运行级别,process省略

sysinit:设定系统初始化方式,此处一般为指定系统初始化脚本/etc/rc.d/rc.sysinit

ca::ctrlaltdel:/sbin/shutdown -t3 -r now,为了防止重启误操作,可把此行注释掉

id:3:initdefault:

si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc0.d

l1:1:wait:/etc/rc.d/rc1.d

……

l6:6:wait:/etc/rc.d/rc6.d

说明:rcN –>意味着读取/etc/rc.d/rcN.d/,其中的文件都是软链接,指向/etc/init.d中的文件

 K##*:##运行次序,数字越小,越先运行,并且数字越小的服务,通常依赖到别的服务

S##*:##运行次序,数字越小,越先运行,数字越小的服务,通常为被依赖到的服务

关于K##*与S##*文件的开机处理,可参看#cat /etc/rc.d/rc文件:

for srv in /etc/rc.d/rcN.d/K*;do

$srv stop

done

for srv in /etc/rc.d/rcN.d/S*;do

$srv start

Done

2)、CentOS6的inittab和相关文件

/etc/inittab

设置系统默认的运行级别id:3:initdefault:

/etc/init/control-alt-delete.conf

/etc/init/tty.conf

/etc/init/start-ttys.conf

/etc/init/rc.conf

/etc/init/prefdm.conf

6、系统初始化脚本/etc/rc.d/rc.sysinit-开机执行

(1) 设置主机名

(2) 设置欢迎信息

(3) 激活udev 和selinux

(4) 挂载/etc/fstab文件中定义的文件系统

(5) 检测根文件系统,并以读写方式重新挂载根文件系统

(6) 设置系统时钟

(7) 激活swap设备

(8) 根据/etc/sysctl.conf文件设置内核参数

(9) 激活lvm 及software raid设备

(10)加载额外设备的驱动程序

(11)清理操作

7、chkconfig命令

查看服务在所有级别的启动或关闭设定情形:

#chkconfig [–list] [name]

[root@localhost ~]# chkconfig –list atd

atd   0:off   1:off   2:off   3:on    4:on    5:on    6:off

如果要添加服务在系统启动时于特定级别下自动运行,可以进行如下步骤:

首先添加的自定义服务SysV脚本放置于/etc/rc.d/init.d (/etc/init.d)

然后执行如下命令加载服务进入级别列表#chkconfig –add name

服务脚本的格式如下:

#!/bin/bash

#LLLL表示初始在哪个级别下启动,-表示都不启动

# chkconfig: LLLL n1 n2

#description:

示例如下

[root@localhost init.d]# pwd

/etc/init.d

[root@localhost init.d]# vim testsvr.sh

#1/bin/bash

#chkconfig: 35 88 26 意思是在启动级别3和5下启动,S*编号为88,K*编号为26

#description:testsvr scription

case $1 in

start)

  echo testsvr start

;;

stop)

  echo testsvr stop

;;

status)

  echo testsvr status

;;

*)

  echo xxx

;;

esac

[root@localhost init.d]# chmod +x testsvr.sh

[root@localhost init.d]# chkconfig –add testsvr.sh

[root@localhost init.d]# chkconfig –list testsvr.sh

testsvr.sh   0:off   1:off   2:off   3:on    4:off   5:on    6:off

[root@localhost init.d]# ls /etc/rc.d/rc3.d

S88testsvr.sh

[root@localhost init.d]# ls /etc/rc.d/rc2.d

K26testsvr.sh

[root@localhost init.d]# service testsvr.sh start

testsvr start

[root@localhost init.d]# service testsvr.sh status

testsvr status

[root@localhost init.d]# service testsvr.sh stop

testsvr stop

删除服务于级别列表:

#chkconfig –del name

修改指定服务的级别类型:

#chkconfig [–level levels] name <on|off|reset>

–level LLLL: 指定要设置的级别,省略时表示2345

[root@localhost init.d]# chkconfig –list testsvr.sh

testsvr.sh   0:off   1:off   2:off   3:on    4:off   5:on    6:off

[root@localhost init.d]# chkconfig testsvr.sh on

[root@localhost init.d]# chkconfig –list testsvr.sh

testsvr.sh   0:off   1:off   2:on    3:on    4:on    5:on    6:off

[root@localhost init.d]# chkconfig –level 24 testsvr.sh off

[root@localhost init.d]# chkconfig –list testsvr.sh

testsvr.sh   0:off   1:off   2:off   3:on    4:off   5:on    6:off

#ntsysv –level=2 修改2级别下的服务开机是否启动

#ntsyav 修改当前级别下服务开机是否启动

8、xinetd管理的服务

service命令:手动管理服务

瞬态(Transient)服务被xinetd 进程所管理,进入的请求首先被xinetd代理

配置文件:/etc/xinetd.conf 、/etc/xinetd.d/<service>

可用chkconfig 控制的瞬态服务启动关闭:

chkconfig tftp on

chkconfig tftp off

9、正常级别(2345级别)下S99local

注意:正常级别下,最后启动的一个服务S99local没有链接至/etc/rc.d/init.d下的服务脚本,而是指向了/etc/rc.d/rc.local 脚本

不便或不需写为服务脚本放置于/etc/rc.d/init.d/目录,且又想开机时自动运行的命令,可直接放置于/etc/rc.d/rc.local 文件中,/etc/rc.d/rc.local 在指定运行级别脚本后运行

10、破解root口令

在启动过程中,在菜单页按下任意键,然后选择a选项,输入1、s、S、single任意可进入单用户模式,可进行口令的修复

11、grub legacy

stage1: mbr

stage1_5: mbr之后27扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统

stage2:磁盘分区(/boot/grub/)

配置文件:/boot/grub/grub.conf <– /etc/grub.conf

其中default=#设定默认启动第几个title对应的操作系统,单项(title) 编号从0开始

     timeout=#超时时间-菜单项等待选择时长,超时时间过后自动启动默认的操作系统

splashimage=(hd#,#)/PATH/TO/XPM_FILE 菜单背景图片文件路径

[root@centos6-8 ~]# cp /boot/grub/splash.xpm.gz /root

[root@centos6-8 ~]# gzip -d splash.xpm.gz

[root@centos6-8 ~]# more splash.xpm

#yum install ImageMagick

#covret -resize 640×480 -colors 14 win.jig win.xpm

#gzip win.xpm

#vim /ect/grub.conf

     hiddenmenu启动时默认菜单是不可见的,启动中按任意键后可见

password [–md5] STRING:启动菜单编辑时认证

示例passwd centos 设置启动菜单编辑时要输入密码centos

示例加密密码passwd –md5 加密密码字符串

生成加密密码#grub-md5-crypt

            #openssl passwd -salt “xxx” -1

title TITLE:定义菜单项“标题”

root (hd#,#):grub查找stage2及kernel文件所在设备分区,为grub“根”

kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核

initrd /PATH/TO/INITRAMFS_FILE:内核匹配的ramfs文件

password [–md5] STRING:启动选定的内核或操作系统时进行认证

stage2及内核等通常放置于一个基本磁盘分区

功用:

(1)提供启动菜单、并提供交互式接口

a:编辑内核参数,不能够编辑kernel和initrd核心数据

内核参数不影响正常启动

参数rhgb定义图形界面启动

参数quite定义启动时不显示内核加载过程信息

参数init=/PATH/TO/xxx定义系统启动时的第一个程序(例如init=/bin/bash,启动后直接进入bash程序,此时可以进行简单的操作,但是因网络服务还没有启动,没有网络,而且根系统为只读,执行命令#mount -o remount,rw /后,根系统就可以读写操作,可以进行系统的基本修复作业)

此外还有max_loop=#、selinux=0/1、net.ifnames=0等等

e: 编辑模式,用于编辑菜单

c: 命令模式编辑菜单,交互式接口

(2)加载用户选择的内核或操作系统

允许传递参数给内核

可隐藏启动菜单

(3)为菜单提供了保护机制

为编辑启动菜单进行认证

为启用内核或操作系统进行认证

#cat /var/log/boot.log可以查看启动过程日志信息

#cat /proc/cmdline 查看内核参数

内核参数文档:/usr/share/doc/kernel-doc-2.6.32/Documentation/kernel-parameters.txt

grub 的命令行接口

help:获取帮助列表

help KEYWORD:详细帮助信息

root (hd#,#)

kernel /PATH/TO/KERNEL_FILE root=/dev/DEVICE:设定本次启动时用到的内核文件,额外还可添加内核支持使用的cmdline参数,例如max_loop=100 selinux=0 init=/path/to/init(init=/bin/bash)

initrd /PATH/TO/INITRAMFS_FILE:设定为选定的内核提供额外文件的ramdisk

boot:引导启动选定的内核

识别硬盘设备:

(hd#,#)

hd#:磁盘编号,用数字表示,从0开始编号

#:分区编号,用数字表示,从0开始编号

(hd0,0)第一块硬盘,第一个分区

(hd0,1)第一块硬盘,第二个分区

手动在grub命令行接口《启动系统》示例:

grub> root (hd#,#)

grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE

grub> initrd /initramfs-VERSION-RELEASE.img

grub> boot

12、grub安装(修复范围)

(1) grub-install命令(救援模式下修复)

能够安装grub stage1和stage1_5到/dev/DISK 磁盘上,并复制GRUB的相关文件(不包括grub.conf文件)到 DIR/boot目录下

#grub-install –root-directory=DIR /dev/DISK

(2)grub命令(交互式修复)-修复时依赖/boot/grub下的*1_5文件

grub> root (hd#,#) 指定根所在位置

grub> setup (hd#)  指定安装磁盘位置

grub>quit

13、自制linux系统示例

新建磁盘/dev/sdb

#fdisk分出/dev/sdb1和/dev/sdb2

#mkfs.ext4 /dev/sdb1

#mkfs.ext4 /dev/sdb2

#mkdir /mnt/boot

#mkdir /mnt/sdb2

#mount /dev/sdb1 /mnt/boot

#mount /dev/sdb2 /mnt/sdb2

#cd /mnt/boot

#cp /boot/initramfs-2.6.32-642.el6.x86_64.img  /boot/vmlinuz-2.6.32-642.el6.x86_64 .

#grub-install –root-directory=/mnt /dev/sdb

# cd /mnt/boot/grub

#vim grub.conf 写入如下:

default=0

timeout=5

title custom-centos

root (hd0,0)

kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/sda2 selinux=0 init=/bin/bash

initrd /initramfs-2.6.32-642.el6.x86_64.img

#cd /mnt/sdb2

#mkdir {etc,lib,lib64,bin,sbin,tmp,var,usr,sys,proc,opt,home,root,boot,dev,mnt,media}

#cd

#mkdir bin

#cd bin

#vim cpcmd.sh 复制命令的脚本

#cd

#vim .bash_profile 写入如下:

PATH=$PATH:$HOME/bin:/root/bin

#. .bash_profile

#cd bin

#cpcmd.sh 复制命令bash、ls、df、mount、umount、blkid、lsblk、rpm等等

#cd

#vim /mnt/sdb2/etc/fstab 写入如下:

/dev/sda1 /boot ext4 defaults 1 1

/dev/sda2 /     ext4 defaults 1 2

14、救援恢复/etc/inittb文件

从光盘引导(boot.iso或者安装光盘#1)

从USB盘引导(由boot.iso制作)

系统在引导期间,很重要的一个过程就是通过init进程读取其配置文件/etc/inittab,启动系统基本服务程序及默认运行级别的服务程序完成系统引导,如果/etc/inittab误删除或修改错误,Linux将无法正常启动,此时,只有通过救援模式才可以解决此类问题

有备份文件的恢复方法

没有备份文件的恢复办法

有备份文件的恢复办法:

进入救援模式,执行chroot命令后,如果有此文件的备份(强烈建议系统中的重要数据目录,如/etc、/boot等要进行备份),直接将备份文件拷贝回去,退出重启即可;如果是配置文件修改错误,如比较典型的/boot/grub/grub.conf及/etc/passwd的文件修改错误,也可以直接修正恢复;

假设有备份文件/etc/inittab.bak,则在救援模式下执行:

sh-3.1# chroot /mnt/sysimage

sh-3.1# cp /etc/inittab.bak /etc/inittab

没有备份文件的恢复办法:

如果一些配置文件丢失或软件误删除,且无备份,可以通过重新安装软件包来恢复

首先查找到/etc/inittab 属于哪一个RPM包

# chroot /mnt/sysimage

# rpm -qf /etc/inittab

initscripts-9.03.49-1.el6.centos.x86_64

挂载存放RPM 包的安装光盘(在救援模式下,光盘通常挂载在/mnt/source目录下)

# mount /dev/sr0 /mnt/source

CentOS6系统的RPM包存放在光盘Packages目录下

要修复的硬盘系统的根目录是/mnt/sysimage

若当前目录不是/mnt/sysimage,那么需要使用–root选项指定其为根目录来覆盖安装/etc/inittab文件所在的RPM包

# rpm -ivh /mnt/source/Packages/initscripts-9.03.49-1.el6.centos.x86_64.rpm –replacepkgs|force

其中的rpm 命令选项“–replacepkgs”表示覆盖安装,执行完成后即已经恢复了此文件

如果想只提取RPM包中的/etc/inittab文件进行恢复,可以在进入救援模式后,执行命令:

# rpm2cpio /mnt/source/Packages/initscripts-9.03.49-1.el6.centos.x86_64.rpm|cpio

-idv ./etc/inittab

命令中./etc/inittab的.表示提取PRM包中/etc/inittab到当前目录

# cp etc/inittab /mnt/sysimage/etc

注意此命令执行时不能将文件直接恢复至/etc目录,只能提取到当前目录下,且恢复的文件名称所在路径要写完整的路径,提取文件成功后,将其复制到根分区所在/mnt/sysimage目录下相应位置即可

 

练习(救援模式的根与硬盘系统的根):

1、/boot/grub/grub.conf中的kernel和initrd核心信息破坏,启动中按如下步骤临时修复:

在错误界面,按照提示按任意键进入启动菜单页;

读下面的提示信息,选择按e键进入编辑模式;

读下面的提示信息,选择e键编辑选择的命令;

读上面的提示信息,进行相应的操作,例如修改后按enter键保存修改等等

然后按照提示启动即可

当然也可以进行救援修复,只不过较为复杂

2、破坏第一阶段,救援恢复启动步骤如下:

#dd if=/dev/zero of=/dev/sda bs=1 count=1

进入救援模式;

$chroot /mnt/sysimage

$grub-install /dev/sda

然后退出重启即可

或者如下修复

grub命令-交互式修复;

grub> root (hd0,0)

grub> setup (hd0) 

grub>quit

然后重启即可

3、删除/boot目录下的grub后,救援恢复启动步骤如下:

进入救援模式;

$chroot /mnt/sysimage

$grub-install /dev/sda

然后切换至/boot/grub下,$vim grub.conf参考写入以下内容:

default=0

timeout=5

title centos6.8-shan

kernel (hd0,0) /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/sda2

initrd (hd0,0)/initramfs-2.6.32-642.el6.x86_64.img

然后退出重启即可

4、删除/boot目录下的vmlinuz-2.6.32-642.el6.x86_64、initramfs-2.6.32-642.el6.x86_64.img,

救援恢复启动步骤如下(使用光盘恢复):

进入救援模式;

$chroot /mnt/sysimage

$mount /dev/sr0 /mnt/cdrom

$cd /mnt/cdrom

$cd isolinux/

$cp vmlinuz /boot

$cd /boot

$mv vmlinuz vmlinuz-`uname -r`

$mkinitrd initramfs-`uname -r`.img `uname -r`

然后退出重启即可

5、删除/boot目录下的vmlinuz-2.6.32-642.el6.x86_64,救援恢复启动步骤如下(使用网络恢复):

进入救援模式中选择建立网络;

$chroot /mnt/sysimage

$scp 192.168.1.109:/boot/vmlinuz* /boot

然后退出重启即可

6、删除/boot目录,救援恢复启动步骤如下:

进入救援模式;

$chroot /mnt/sysimage

$rpm -ivh /mnt/cdrom/Packages/kernel-2.6.32-642.el6.x86_64.rpm –force

只需在根目录下或者指定根目录,就会自动安装到/boot下

$grub-install /dev/sda

然后切换至/boot/grub下,$vim grub.conf参考写入以下内容:

default=0

timeout=5

title centos6.8-shan

kernel (hd0,0) /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/sda2

initrd (hd0,0)/initramfs-2.6.32-642.el6.x86_64.img

然后退出重启即可

或者进入救援模式直接执行:

$mount /dev/sr0 /mnt/cdrom

$rpm -ivh /mnt/cdrom/Packages/kernel-2.6.32-642.el6.x86_64.rpm

–root=/mnt/sysimage –force

此处使用–root=/mnt/sysimage指定根目录,而且—force选项可用—replacepkgs替代

$chroot /mnt/sysimage

$grub-install /dev/sda

然后切换至/boot/grub下,$vim grub.conf参考写入以下内容:

default=0

timeout=5

title centos6.8-shan

kernel (hd0,0) /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/sda2

initrd (hd0,0)/initramfs-2.6.32-642.el6.x86_64.img

然后退出重启即可

7、删除/etc/fstab 和/boot目录的所有文件,救援恢复启动步骤如下:

/etc/fstab文件中最重要的挂载,也是能够影响系统启动的挂载是/和/boot,其它的挂载都可以在系统启动后再行挂载

修复顺序:先修复/etc/fstab,再修复/boot,因为修复/boot需要根的挂载

进入救援模式;

#df 查看挂载情况

#blkid或者#fdisk -l 查看分区情况

#mkdir /mnt/tmp

#mount /dev/sda* /mnt/tmp

临时挂载试查找哪个分区是boot分区和根分区

假如查找结果/dev/sda1是boot分区,/dev/sda2是根分区

#mount /dev/sda2 /mnt/tmp

临时挂载根分区,并在根分区中手动建立/etc/fstab文件

#cd /mnt/tmp/etc

#vi /etc/fstab

/dev/sda1 /boot ext4 defaults 1 1

/dev/sda2 /     ext4 defaults 1 2

重新启动,再次进入救援模式

$chroot /mnt/sysimage

$rpm -ivh /mnt/cdrom/Packages/kernel-2.6.32-642.el6.x86_64.rpm –force

$grub-install /dev/sda

然后切换至/boot/grub下,$vim grub.conf参考写入以下内容:

default=0

timeout=5

title centos6.8-shan

kernel (hd0,0) /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/sda2

initrd (hd0,0)/initramfs-2.6.32-642.el6.x86_64.img

然后退出重启即可

原创文章,作者:18612763863,如若转载,请注明出处:http://www.178linux.com/45927

(0)
上一篇 2016-09-13 11:17
下一篇 2016-09-13 11:17

相关推荐

  • 网络管理之基础知识

    Linux的网络配置 IP地址   它们可唯一标识 IP 网络中的每台设备  每台主机(计算机、网络设备、外围设备)必须具有唯 一的地址  IP地址由两部分组成: • 网络ID: • 标识网络 • 每个网段分配一个网络ID • 主机 ID: • 标识单个主机 • 由组织分配给各设备   IPv4地址格式:点分十进制记法  …

    Linux干货 2016-09-10
  • LINUX下的RPM应用

    一 前言 在进入RPM的应用前,关于可执行程序的一些基本知识有必要说明一下: 1 ABI:application binary interface,这是应用程序与系统间的协议,大家都知道同一个程序在不同的操作系统平台可能会无法执行,很大程度上就是因为ABI的不同,因此,对于可执行程序,选择对应操作系统平台是第一步 2 API:application prog…

    Linux干货 2017-04-17
  • 设计模式(八)装饰器模式Decorator(结构型)

    1. 概述        若你从事过面向对象开发,实现给一个类或对象增加行为,使用继承机制,这是所有面向对象语言的一个基本特性。如果已经存在的一个类缺少某些方法,或者须要给方法添加更多的功能(魅力),你也许会仅仅继承这个类来产生一个新类—这建立在额外的代码上。       通过继…

    Linux干货 2015-07-03
  • find和grep命令练习

                                    find和grep命令练习 1、显示当前系统上root,fedora,或user1用户的默认shell; ~]# cat /etc/pa…

    Linux干货 2016-10-23
  • 关于取路径名与基名的探讨和扩展-20160806

                          关于取路径名与基名的探讨和扩展     这两天学习grep  ,   egrep  ,  sed  &nb…

    Linux干货 2016-08-07