- 论坛徽章:
- 0
|
用find & grep查找文件内容
查找 包含alias字符串的*.conf的文件
find / -name "*.conf" | xargs grep "alias"
1. grep -R -l 一些也可以实现,但是通过管道 | 比单纯用grep 复杂的参数更有效率。
2. xargs是用来展开find获得的结果,使其作为grep的参数。
//=======================================================
find . -name abc.txt 在当前目录及其子目录下查找文件abc.txt
find /usr -name abc.txt 在/usr目录及其子目录下查找文件abc.txt
grep命令用于查找指定的模式匹配格式为
grep [命令选项] 要查找的匹配模式 [要查找的文件]
例如
grep abc 123.txt 在123.txt 文件中查找abc字符串
grep -r abc /var/www 在/var/www 目录及其子目录下的所有文件中查找abc
grep -r abc . 在当前目录以及子目录下的文件中查找abc
grep -nr abc . 加上n参数则显示出行号
grep "text" * 只能查当前目录下的各个文件内容
//=======================================================
解压
zcat initrd-2.6.16.60-0.21-smp |cpio -i
打包
#假设当前目录位于准备好的initrd文件系统的根目录下
bash# find . | cpio -c -o > ../initrd.img
bash# gzip ../initrd.img
//======================================================
当grub的stage2载入内存运行后,它将读取硬盘上的kernel和initrd并载入内存。
我们可以使用下列命令来解出initrd的内容:
[root@dhcp-0-170 initrd]# zcat /boot/initrd-2.6.18-8.el5.img | cpio -i
10261 blocks
[root@dhcp-0-170 initrd]# ls
bin dev etc init lib proc sbin sys sysroot
各目录的内容如下:
[root@dhcp-0-170 bin]# ls
insmod lvm modprobe nash
[root@dhcp-0-170 dev]# ls
console null ram ram1 systty tty0 tty10 tty12 tty3 tty5 tty7 tty9 ttyS1 ttyS3
mapper ptmx ram0 rtc tty tty1 tty11 tty2 tty4 tty6 tty8 ttyS0 ttyS2 zero
[root@dhcp-0-170 etc]# ls
lvm
[root@dhcp-0-170 etc]# cd lvm/
[root@dhcp-0-170 lvm]# ls
lvm.conf
[root@dhcp-0-170 lib]# ls
ata_piix.ko dm-mod.ko dm-zero.ko ext3.ko libata.ko scsi_mod.ko uhci-hcd.ko
dm-mirror.ko dm-snapshot.ko ehci-hcd.ko jbd.ko ohci-hcd.ko sd_mod.ko
另外三个proc, sys, sysroot是三个挂载点,里面为空。实际经历了一个mount (执行该目录下的init脚本开始) --> umount (init脚本的最后执行switchroot,这时卸载掉这三部分,并启
动/sbin/init进程) 的过程。
内核解压initrd并执行init脚本,该脚本的主要作用:
1) 加载proc, sysfs等文件系统
2)创建设备节点
3)加载必需的设备驱动
4)以只读方式挂载根文件系统(这是根文件系统的第一次挂载,只读挂载可能是处于安全考虑)
5)切换到根下面并执行根下面的init程序(/sbin/init) (switchroot的工作)
/sbin/init进程是所有进程的父进程,当init起来之后,它首先会读取配置文件/etc/inittab,进行以下工作:
1)执行系统初始化脚本(/etc/rc.d/rc.sysinit),对系统进行基本的配置,以读写方式挂载根文件系统及其它文件系统,具体作用见后面说明。到这一步系统基本算运行起来了,后面需要进行
运行级别的确定及相应服务的启动。
2)确定启动后进入的运行级别
3) 执行/etc/rc.d/rc, 该文件定义了服务启动的顺序是先K后S,而具体的每个运行级别的服务状态是放在/etc/rc.d/rcn.d(n=0~6)目录下,所有的文件均链接至/etc/init.d下的相应文件。
4)有关key sequence的设置
5) 有关UPS的脚本定义
6)启动虚拟终端/sbin/mingetty
7)在运行级别5上运行X
这时呈现给用户的就是最终的登录界面。
说明:
1) /etc/rc.d/rc.sysint -- System Initialization Tasks
它的主要工作有:
配置selinux,
系统时钟,
内核参数(/etc/sysctl.conf),
hostname,
使能swap分区,
根文件系统的检查和二次挂载(读写),
激活RAID和LVM设备
使能磁盘quota
检查并挂载其它文件系统
等等。
2) 两次执行init(两次执行的是不同的文件,只是名字相同而已)
a. 在initrd装载入内存后,会首先执行其中的init脚本,主要的作用如开头所述。
b. 在第一次只读方式挂载根文件系统后,转换至系统真正的根目录下并执行/sbin/init程序,读取/etc/inittab信息并根据配置启动系统。
3)两次挂载根文件系统(同一个根文件系统)
a. initrd载入内存后,执行init脚本,以只读方式挂载根文件系统(可能处于安全考虑,挂载的目的就是执行/sbin/init)
b. 执行/sbin/init进程,读取/ etc/inittab文件内容,确定运行级别,执行/etc/rc.sysint,读写方式挂载根文件系统以及其它本地文件系统。
//=======================================================================================
一,解开initrd.img
gzip –cd /root/isolinux/isolinux/initrd.img>/tmp/initrd.ext2
mount –o loop /tmp/initrd.ext2 /mnt/
/mnt/目录下就是initrd.img中的微型系统
二,生成initrd.img
umount /mnt/
gzip –c9 /tmp/initrd.ext2>/root/isolinux/isolinux/initrd.img
//======================================================================================
当grub的stage2载入内存运行后,它将读取硬盘上的kernel和initrd并载入内存。
我们可以使用下列命令来解出initrd的内容:
[root@dhcp-0-170 initrd]# zcat /boot/initrd-2.6.18-8.el5.img | cpio -i
10261 blocks
[root@dhcp-0-170 initrd]# ls
bin dev etc init lib proc sbin sys sysroot
各目录的内容如下:
[root@dhcp-0-170 bin]# ls
insmod lvm modprobe nash
[root@dhcp-0-170 dev]# ls
console null ram ram1 systty tty0 tty10 tty12 tty3 tty5 tty7 tty9 ttyS1 ttyS3
mapper ptmx ram0 rtc tty tty1 tty11 tty2 tty4 tty6 tty8 ttyS0 ttyS2 zero
[root@dhcp-0-170 etc]# ls
lvm
[root@dhcp-0-170 etc]# cd lvm/
[root@dhcp-0-170 lvm]# ls
lvm.conf
[root@dhcp-0-170 lib]# ls
ata_piix.ko dm-mod.ko dm-zero.ko ext3.ko libata.ko scsi_mod.ko uhci-hcd.ko
dm-mirror.ko dm-snapshot.ko ehci-hcd.ko jbd.ko ohci-hcd.ko sd_mod.ko
另外三个proc, sys, sysroot是三个挂载点,里面为空。实际经历了一个mount (执行该目录下的init脚本开始) --> umount (init脚本的最后执行switchroot,这时卸载掉这三部分,并启动/sbin/init进程) 的过程。
内核解压initrd并执行init脚本,该脚本的主要作用:
1) 加载proc, sysfs等文件系统
2)创建设备节点
3)加载必需的设备驱动
4)以只读方式挂载根文件系统(这是根文件系统的第一次挂载,只读挂载可能是处于安全考虑)
5)切换到根下面并执行根下面的init程序(/sbin/init) (switchroot的工作)
/sbin/init进程是所有进程的父进程,当init起来之后,它首先会读取配置文件/etc/inittab,进行以下工作:
1)执行系统初始化脚本(/etc/rc.d/rc.sysinit),对系统进行基本的配置,以读写方式挂载根文件系统及其它文件系统,具体作用见后面说明。到这一步系统基本算运行起来了,后面需要进行运行级别的确定及相应服务的启动。
2)确定启动后进入的运行级别
3) 执行/etc/rc.d/rc, 该文件定义了服务启动的顺序是先K后S,而具体的每个运行级别的服务状态是放在/etc/rc.d/rcn.d(n=0~6)目录下,所有的文件均链接至/etc/init.d下的相应文件。
4)有关key sequence的设置
5) 有关UPS的脚本定义
6)启动虚拟终端/sbin/mingetty
7)在运行级别5上运行X
这时呈现给用户的就是最终的登录界面。
说明:
1) /etc/rc.d/rc.sysint -- System Initialization Tasks
它的主要工作有:
配置selinux,
系统时钟,
内核参数(/etc/sysctl.conf),
hostname,
使能swap分区,
根文件系统的检查和二次挂载(读写),
激活RAID和LVM设备
使能磁盘quota
检查并挂载其它文件系统
等等。
2) 两次执行init(两次执行的是不同的文件,只是名字相同而已)
a. 在initrd装载入内存后,会首先执行其中的init脚本,主要的作用如开头所述。
b. 在第一次只读方式挂载根文件系统后,转换至系统真正的根目录下并执行/sbin/init程序,读取/etc/inittab信息并根据配置启动系统。
3)两次挂载根文件系统(同一个根文件系统)
a. initrd载入内存后,执行init脚本,以只读方式挂载根文件系统(可能处于安全考虑,挂载的目的就是执行/sbin/init)
b. 执行/sbin/init进程,读取/ etc/inittab文件内容,确定运行级别,执行/etc/rc.sysint,读写方式挂载根文件系统以及其它本地文件系统。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/94690/showart_2060911.html |
|