--
使用grub菜单硬盘安装rhel6.3
我这里/dev/sda5 挂载到/share目录
/share/iso/rhel63-64.iso--把iso放到/share/目录
把iso挂载,并把挂载后的里面的isolinux目录里的vmlinuz和initrd.img拷出来,也放到/share目录,并把images目录和isolinux目录也拷到/share目录下
/share/rhel63-64.iso
/share/vmlinuz
/share/initrd.img
/share/images/
/share/isolinux/
然后开机重启,在grub菜单按C键进入grub> 提示符界面
grub > root (hd0,4) --进入到/dev/sda5,也就是我的/share目录
grub > kernel /vmlinuz
grub > initrd /initrd.img
grub > boot--回车后,就进入到了安装界面
--后面的选择只有一个地方要注意的是:安装方式选择hard drive,然后选择/dev/sda5(也就是你的iso在的分区),别的步骤都一样
--这里注意,如果是在rhel6上硬盘安装rhel5的话,因为rhel5不能挂载ext4文件系统,所以你需要在rhel6上mkfs.ext3格式化一个ext3格式的分区,去存放
/share/vmlinuz
/share/images
/share/initrd.img
/share/isolinux/
其它的步骤一样
--注意:如果在rhel6上硬盘安装rhel5还要注意的是最好不要使用rhel5的grub去覆盖rhel6的grub;因为rhel5的grub无法引导rhel6系统,但反过来可以
===============================================================
文件查找
whichwhereis locate find
--which
which - shows the full path of (shell) commands.
[root@li ~]# which mount
/bin/mount
[root@li ~]# rpm -qf `which ls`--有别名
--color=tty': unknown option
[root@li ~]# rpm -qf `which --skip-alias ls`
coreutils-5.97-23.el5
[root@li ~]# which ifconfig--查找二进制可执行文件,通过环境变量来查找 也就是$PATH的路径来查找。
/sbin/ifconfig
[a@li ~]$ which ifconifg--普通用户环境变量没有/sbin/这个路径,所以which找不到
/usr/bin/which: no ifconifg in (/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/a/bin)
--whereis
whereis - locate the binary, source, and manual page files for a command
[root@li ~]# whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
[a@li ~]$ whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
[root@li ~]# whereis grub.conf
grub: /sbin/grub /etc/grub.conf /usr/share/grub /usr/share/man/man8/grub.8.gz
[root@li ~]# whereis fstab
fstab: /etc/fstab /usr/include/fstab.h /usr/share/man/man5/fstab.5.gz
--locate
locate - find files by name
[root@li ~]# locate rhel-5.4
/share/soft/iso/rhel-5.4-server-i386-dvd.iso
速度快,通过系统带的一个数据库去查找
[root@li ~]# ls /var/lib/mlocate/
mlocate.db
[root@li ~]# ll /var/lib/mlocate/mlocate.db -h
-rw-r----- 1 root slocate 4.6G Jul 6 11:02 /var/lib/mlocate/mlocate.db
--我这里看到这个文件有近5G,太大了,一般都在几M大小;因为我这台机器先前写脚本建立过大量文件
[root@li ~]# touch abcd777--新建一个文件
[root@li ~]# locate abcd777--locate查找不出来
[root@li ~]# updatedb--手动更新locate数据库,时间比较长,但是系统的时间任务服务会在晚上4点帮你去更新
[root@li ~]# locate abcd777--更新locate数据库后,再查找就有了
/root/abcd777
find
find - search for files in a directory hierarchy
速度慢,因为要扫你的磁盘,功能强大
find 路径 [选项]
-name --通过名字找
-type --通过文件类型找
-uid --通过uid查找
-gid --通过gid查找
-user --通过username查找
-group --通过groupname查找
-perm --通过权限查找
+n--n包含的权限也查找出来
-n--包含n的权限也查找出来
-size --通过大小查找
+n--查出大于n的文件
-n--查出小于n的文件
1,按名称查找
[root@li ~]# find /etc/ -name grub.conf --必须要全名,与locate不同,不是匹配名字
/etc/grub.conf
[root@li ~]# find /etc/ -name grub
/etc/sysconfig/grub
[root@li ~]# find /etc/ -name grub*--名字不太确定,可以用*通配符来代替
/etc/sysconfig/grub
/etc/grub.conf
=======================
疑问:??????????
cd 到/etc目录里,下面的查找找不出来/etc/sysconfig/grub
[root@li etc]# find /etc -name grub*
/etc/grub.conf
[root@li etc]# cd
[root@li ~]# find /etc -name grub*
/etc/sysconfig/grub
/etc/grub.conf
[root@li etc]# touch /etc/grub--touch一个/etc/grub
[root@li etc]# find /etc -name grub*--相同的命令去查找,居然报错
find: paths must precede expression
Usage: find [-H] [-L] [-P] [path...] [expression]
--上面的问题在man find的后面有说明,*会先被shell所解析,会造成冲突;换写成'grub*' 或者 grub\*
======================
find /test/ -iname Aaa--忽略大小写加上-i
/test/aaa
/test/Aaa
/test/AAa
[root@dns test]# find /test/ -name adobe*
[root@dns test]# find /test/ -iname adobe*
/test/AdobeReader_chs-7.0.0-2.i386.rpm
--定义查找的目录层次
[root@li a]# find /test/ -maxdepth 1 -name aaa
/test/aaa
[root@li a]# find /test/ -maxdepth 2 -name aaa
/test/aaa
/test/a/aaa
[root@dns test]# find / -maxdepth 1 -name grub.conf
[root@dns test]# find / -maxdepth 2 -name grub.conf
/etc/grub.conf
/test/grub.conf
[root@dns test]# find / -maxdepth 3 -name grub.conf
/etc/grub.conf
/boot/grub/grub.conf
/test/grub.conf
[root@li test]# find / -mindepth 3 -maxdepth 3 -name grub.conf
/boot/grub/grub.conf
2,按类型查找
find /etc -type l |grep grub.conf
find /etc -type l -name grub.conf--与-name参数一起写
find / -type b
find / -type s
find / -type c
find / -type p
find /test -type d |xargs chmod 777
find /test -type d -exec chmod 755 {} \;
# find . -maxdepth 1 -type d |xargs chmod 755
题目:
把/etc/下所有以.conf结尾(包括子目录里的)都拷到/test5目录下,并到.conf结尾重命名成.html结尾
# find /etc/ -name *.conf -exec cp {} /test5 \;
# cd /test5
# rename .conf .html *.conf
3,按用户名,组名,uid,gid查找
find / -user a
find / -group a
find / -uid 533
find / -gid 533
find / -nouser --查出系统的无头文件,就是指没有属主的文件
find / -nogroup--查出系统的没有属组的文件
没有属主和属组的文件,系统管理一般是要去注意的
4,按权限查找
find / -perm 777 --查出所有权限为777的文件,一般也是管理员要注意的
find . -perm +111 ---相当于或的功能
find . -perm -777 ---相当于与的功能
[root@li test]# ll
total 0
-rwxrwxrwx 1 root root 0 Mar 16 13:38 1
-rwxr-xr-- 1 root root 0 Mar 16 13:38 2
-r-xr-x-w- 1 root root 0 Mar 16 13:38 3
-r-x------ 1 root root 0 Mar 16 13:38 4
-r--r----x 1 root root 0 Mar 16 13:38 5
--w-r--r-x 1 root root 0 Mar 16 13:38 6
---x-w--wx 1 root root 0 Mar 16 13:38 7
---------- 1 root root 0 Mar 16 13:38 8
[root@li test]# find . -perm +001--文件的权限与+号后的权限只要有一位重合,就找出来
.
./6
./5
./1
./7
--find . -perm /001 --和+号一样,用来取代+号
[root@li test]# find . -perm -400--文件的权限要包含-号后的权限(也就是都重合)就找出来
.
./3
./5
./1
./2
./4
练习: 查找/etc/下所有只要user1用户可读可写的普通文件
# find /etc -perm -006 -type f
查找一个目录下一个用户对其有什么权限的所有文件(以后尝试用脚本写成命令的形式)
5,按大小查找
find / -size +500M--单位有c,b,k,m,g等
find / -size +1G
find /etc -size +50k
find /etc -size +50b--b是块,一个块是512个字节
find / -size -1M
例:我在这里把/etc/at.deny里随便写几个字符,大小现在为5个字节
[root@li test]# find /etc/ -size -1b |grep at.deny
[root@li test]# find /etc/ -size -2b |grep at.deny
/etc/at.deny
--从上面可以看到-1b找不出来,-2b找出来,说明无论几个字节,小于512也会占用一个块,所以-1b就相当于是找空文件
[root@li test]# find /etc/ -size +4c -size -6c |grep at.deny
/etc/at.deny
--精确使用-c来查找
--查找大于80M小于100M的普通文件
find /share -size +80M -size -100M -type f
6,按时间查找
[root@li a]# stat 1
File: `1'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 808h/2056d Inode: 12177882 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-04-24 14:44:00.000000000 +0800--atime阅读过,用cat,tail,head命令等或者vi访问过,但没有修改;执行过也会改变
Modify: 2010-04-24 14:44:00.000000000 +0800--mtime 修改过内容,用vi修改过或者echo一个值重定向
Change: 2010-04-24 14:44:14.000000000 +0800--ctime 改变过内容,属主,属组,权限,创建软链接,硬链接,重命名等
find 按时间查找有 atime,mtime,ctime,amin,mmin,cmin等
-mtime n--代表n天前的24小时内
+n--代表n天前(不包含n天本身的24小时)
-n--代表n天内
find . -atime 1 --表示从现在起往前推24小时到推48小时之间的24小时内
find . -atime +1 --表示从现在起前推48小时之前的所有时间
find . -atime -1 --表示从现在起往前推24小时到将来的所有时间
1234567
|-- 2 --|
<------- -2 | | +2--------------->
将来now以前的时间
find / -mtime 0--0代表目前当天的24小时
find / -mtime +1--修改时间1天之前
find . -mtime -1--修改时间在一天之内到将来
练习:
比如现在为27号凌晨0点
查找/etc/下25号那天修改过内容的文件
find /etc -mtime 1
查找/ 下22号以前修改过权限的可能文件
find / -ctime +4
查找 / 下26号到现在(不包括时间搞错时出现的将来情况)被访问过的文件
find / -atime 0
查找10分钟内访问过的文件
find / -amin -10
现在为上午11:30 查找上午10点之后修改过内容的文件
find / -mmin -90
-----------------------------
find后接-exec动作
-exec
find /etc/ -name "*.conf" -exec cp {} /test/a \;
find /etc/ -name grub -exec cat {} \;
---exec后面接动作, {}代表前面的结果集 \; 代表结束
==================================================================
linux下的打包,压缩,和解压
压缩使文件更小,有利于网络传输,在传输大量小文件时,最好是打包压缩,速度较快
--包括网页浏览等各个方面,也包含了压缩功能;服务器压缩,浏览器解压缩来实现加快网页传输
压缩工具
tar (打包) compress gzip bzip2 zip
.rar .zip .iso
compress --老的压缩工具,现在已经很少使用
[root@li ~]# yum list|grep compress
This system is not registered with RHN.
RHN support will be disabled.
ncompress.i386 4.2.4-47 Server
[root@li ~]# yum install ncompress--装这个包使用compress命令
man compress
compress, uncompress, zcat - compress and
expand data (version 4.1)
compress grub.conf --直接压缩文件,源文件没了
compress -d grub.conf.Z--解压
zcat grub.conf.Z --查看压缩文件的内容
uncompress grub.conf.Z
compress -c grub.conf > grub.conf.Z--这样压缩并保留源文件
# file grub.conf.Z
grub.conf.Z: compress'd data 16 bits --压缩文件类型,不能使用cat去查看内容,可以使用zcat grub.conf.Z来查看内容
--关于windows和linux的后缀名的问题
windows里后缀名很重要, 如:一个word文档应该为.doc,如果你把后缀名改为.pdf。那么双击会用打开pdf的软件去打开它
linux里后缀名可以随意,最好什么类型的文件就改成什么类型。它对运行不影响,但最好是使用file命令去确认它的类型
--gzip使用广泛,用来替代compress,它能解压.Z .gz .zip 等格式的压缩包
gzip grub.conf--压缩
zcat grub.conf.gz --查看压缩包的内容
gzip -d grub.conf.gz--解压
gzip -c grub.conf > grub.conf.gz--压缩并保留源文件
gzip -d grub.conf.Z
--zip压缩
zip grub.conf.zip grub.conf--zip压缩
adding: grub.conf (deflated 64%)
--使用unzip命令去解压.zip的包
unzip - list, test and extract compressed
files in a ZIP archive
unzip /share/soft/lamp/LAMP_source/PHPWind_GBK_6.3.2.zip -d /test
--小写d参数代表指定解压到哪里
bzip2
--bzip2它用来替代gzip,拥有更好的压缩比率
bzip2 grub.conf--压缩
bzcat grub.conf.bz2 --查看压缩包的内容
bzip2 -d grub.conf.bz2 --解压
bzip2 -c grub.conf > grub.conf.bz2--压缩并保留源文件
[root@li test]# ll
-rw------- 1 root root 810 Apr 24 09:53 grub.conf
-rw-r--r-- 1 root root 560 Apr 24 10:04 grub.conf.bz2
-rw-r--r-- 1 root root 493 Apr 24 09:59 grub.conf.gz
-rw-r--r-- 1 root root 614 Apr 24 09:55 grub.conf.Z
-rw-r--r-- 1 root root 561 Feb 24 14:54 grub.conf.zip
--上面看到压缩比率,gzip最小,但是应该是bzip2有更好的压缩比率,在大文件就可以体现出来
tar 打包
对于目录的压缩,上面几个工具默认都是忽略
gzip -r mplayer/--这是把目录(包括子目录)下的所有文件都单独压缩
gzip -rd mplayer/--递归解压
一般来说,压缩目录,都是先打包,再压缩
-c 打包
-v显示过程
-f 接文件
-j调用bzip2进行压缩或者解压
-z调用gzip进行压缩或者解压
-C解压时指定解压的路径
-t查看包内容
-x解压
tar cvf mplayer.tar mplayer/
[root@li test]# time gzip -c mplayer.tar > mplayer.tar.gz
real 0m13.047s
user 0m12.770s
sys 0m0.217s
[root@li test]# time bzip2 -c mplayer.tar > mplayer.tar.bz2
real 0m56.495s
user 0m56.253s
sys 0m0.225s
[root@li test]# time tar cvfz mplayer.tar.gz mplayer/
real 0m14.533s
user 0m13.318s
sys 0m0.864s
[root@li test]# time tar cvfj mplayer.tar.bz2 mplayer/
real 0m58.509s
user 0m57.090s
sys 0m0.697s
--上面的实验可以看到bzip2压缩比gzip压缩需要更多的压缩时间,但压缩后,bzip2压缩的文件比较小(被压缩的文件越大越明显)
[root@li test]# tar -tf mplayer.tar.gz |grep ass_fontconfig.h
--使用t参数,查看压缩包内压缩了哪些文件
W能解压 无论.tar.gz还是.tar.bz2还是.tar
都直接使用tar xvf 或 tar xf 来解压
[root@li test]# tar xf /share/soft/keepalived-1.1.20.tar.gz -C /usr/src/
--大写C参数指定解压路径
rar --.rar类型在linux默认不支持,需要安装第三方软件
/share/soft/rar/rarlinux-3.8.0.tar.gz
[root@li soft]# tar xvf /share/soft/rar/rarlinux-3.8.0.tar.gz -C /usr/src/
[root@li soft]# cd /usr/src/rar/
[root@li rar]# make--直接make,没有configure文件,但已经有makefile了,所以直接make
mkdir -p /usr/local/bin
mkdir -p /usr/local/lib
cp rar unrar /usr/local/bin
cp rarfiles.lst /etc
cp default.sfx /usr/local/lib
rar a etc.tar.rar etc.tar--压缩
rar e etc.tar.rar --解压
tar的其它写法:
tar tvf etc.tar |grep fstab--查看压缩包的内容 用-t参数
tar xvf etc.tar etc/fstab--指定解压单一文件
tar cvf etc.3.tar etc/ --exclude=etc/fstab 排除某些文件不打包
tar cvf etc.5.tar etc/ --exclude=etc/fstab --exclude=etc/inittab排除多个文件
tar cvf etc.6.tar etc/ --exclude=etc/*.conf支持通配符,排除有相似度的一批文件
tar cvf - etc/ |tar xvf - -C /root/Desktop/--使用管道来执行一些特殊操作
shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
shell> ln -s full-path-to-mysql-VERSION-OS mysql
练习:先建立一个/backup目录
实现每天开机用root登录系统,就自动在把前一天/var/log下的日志(除了/var/log/btmp,/var/log/wtmp和/var/log/lastlog)打包,并使用bzip2压缩到/backup目录下,并记录时间
要求格式都为(年-月-日.xxx);如2012-03-17.xxx
[root@li test]# tar cvfj /backup/`date -d yesterday +%Y-%m-%d`.log.tar.bz2 /var/log --exclude=/var/log/btmp --exclude=/var/log/wtmp --exclude=/var/log/lastlog
[root@li test]# tar cvfj /backup/`date -d yesterday +%Y-%m-%d`.log.tar.bz2 /var/log --exclude=/var/log/btmp,/var/log/wtmp,/var/log/lastlog
--再把上面的命令放到环境变量文件里
===============================
nfs network file system
共享式集群文件系统
是由sun公司提出的 ,用来做网络之间的文件共享,是一种共享式集群文件系统
服务端: nfs portmap(rhel6下改为叫rpcbind)
客户端: portmap(rhel6下改为叫rpcbind)
# showmount -e 172.16.2.35--OK
# /etc/init.d/rpcbind stop
# showmount -e 172.16.2.35
clnt_create: RPC: Port mapper failure - Unable to receive: errno 111 (Connection refused)
# /etc/init.d/rpcbind start
# showmount -e 172.16.2.35--rpcbind再启起来,也不会
clnt_create: RPC: Program not registered
# /etc/init.d/nfs restart--重启NFS,把新的rpc注册
# showmount -e 172.16.2.35--再次OK
portmap 被用于NFS和NIS协议
RPC remote produrce call远程程序调用,端口注册
portmap或rpcbind 111 端口 功能端口注册
nfs 2049 端口
其他的rpc.xxx 启动的端口是要向111端口注册的
[root@li ~]# netstat -ntlup |grep 2049
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
udp 0 0 0.0.0.0:2049 0.0.0.0:* -
[root@li ~]# netstat -ntlup |grep :111
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 3687/portmap
udp 0 0 0.0.0.0:111 0.0.0.0:* 3687/portmap
还有下面几个随机端口
[root@dns ~]# netstat -ntlup |grep rpc
tcp 0 0 0.0.0.0:805 0.0.0.0:* LISTEN 3170/rpc.mountd
tcp 0 0 0.0.0.0:791 0.0.0.0:* LISTEN 3155/rpc.rquotad
udp 0 0 0.0.0.0:788 0.0.0.0:* 3155/rpc.rquotad
udp 0 0 0.0.0.0:802 0.0.0.0:* 3170/rpc.mountd
--NFS的端口多并且rpc的端口不固定,以后学iptables,用防火墙去控制会比较麻烦,可以使用/etc/sysconfig/nfs文件去固定nfs的端口
做nfs服务器
[root@li ~]# /etc/init.d/portmap(rpcbind) start
[root@li ~]# /etc/init.d/nfs start--修改完配置文件后把这两个服务启起来
配置文件:
vim /etc/exports
参数:
ro 只读
rw 可读可写
root_squash 代表客户端以nfsnobody用户挂载,默认不写就有
no_root_squash 代表客户端以root用户挂载
sync同步
async异步
man exports--查看参数帮助
--下面是帮助文档里的例子
# sample /etc/exports file
/ master(rw) trusty(rw,no_root_squash)
/projects proj*.local.domain(rw)
/usr *.local.domain(ro) @trusted(rw)
/home/joe pc001(rw,all_squash,anonuid=150,anongid=100)home/joe pc001(rw,all_squash,anonuid=150,ano
/pub (ro,insecure,all_squash)
主配置文件
vim /etc/exports
/share/iso *(ro)--把/share/iso 共享给* (代表所有IP) ro (代表只读)
/share/iso *(rw)--rw代表可读可写
/share/iso 10.1.1.0/24(ro) --只共享给10.1.1的网段的计算机访问
/share/iso 10.1.1.0/255.255.255.0(ro)
/share/iso 10.1.1.218/255.255.255.255(ro) --定义只10.1.1.218这台计算机可以访问
/share/iso 10.1.1.218/32(ro)
/share/iso 10.1.1.218/32(ro) 10.1.1.254/32(ro) --定义只有218和254这两台可以访问
客户端访问一个服务,一定会以一种用户身份去访问的,这个身份是由服务器决定的,与你客户端以什么用户操作无关
关于nfs权限:
客户端挂载目录的权限为服务端共享目录的权限
nfs服务共享目录的默认权限规定是以nfsnobody这个用户来挂载
在/etc/passwd下有这么一句
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
注意:如果做了服务的话,权限要由服务的权限+系统的权限合起来生效
也就是说,客户端是否可以访问,需要防火墙允许,服务允许,系统权限允许,才可以访问
/share/iso *(ro) 默认等于 /share/iso *(ro,root_squash)
--root_squash代表客户端以nfsnobody用户挂载
/test *(rw,no_root_squash)
--表示客户端会以root的身份来挂载服务端的/test目录
/share/iso 10.1.1.218/32(ro,no_root_squash) 10.1.1.254/32(ro,root_squash)
--no_root_squash代表客户端以root用户挂载,就算是218对/share/iso有w权限,也不能写,因为ro参数确定只读
/share/iso 10.1.1.218/32(rw,anonuid=533,anongid=534)--指定客户端以uid=533,gid=534挂载
--修改了/etc/exports以后,要重启服务使之生效
不用重启服务,使修改过的配置文件生效
exportfs -arv --重新读取/etc/exports文件里的共享,并导入
-auv --卸载/etc/exports文件里的共享,别人showmount -e看不到,也挂载不了
[root@li iso]# cat /var/lib/nfs/etab
/share/install *(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,mapping=identity,anonuid=65534,anongid=65534)
/share/soft *(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,mapping=identity,anonuid=65534,anongid=65534)
/share/iso *(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,mapping=identity,anonuid=65534,anongid=65534)
cat /var/lib/nfs/xtab
--客户端的操作
showmount -e 10.1.1.35
mount 10.1.1.35:/share/iso /mnt
扩展两个命令去了解一下:
showmount -a
nfsstat
==================================