分区要注意的是:
1,重装时一般只格式化/就可以了,(相当于windows只格C盘) ,所以把重要的业务(包括数据库,服务等)单独分区出来, 以后遇到系统崩溃时,只格/就可以了
2,/boot目录单独分出来,并且要分为第一个分区/dev/sda1,主要是为了支持大硬盘的问题
3, swap分区(交换分区)为内存的两倍大小为宜,如果内存大于4G,则还是只分4G给swap,类似windows里的虚拟内存
4,因为mbr(master boot record)里分区表只有64个字节的原因,所以只能保存四个分区,所以就出现了扩展分区的概念,我们可以分为三个主分区加一个扩展分区(3P+1E) 的方式,但要注意的是扩展分区要把多的分区全部分为扩展分区,否则那部分就浪费了。再要分的话就只能在扩展分区里再继续分逻辑扩展分区。分区数最大为15
5,分区时最好是连续从头往后分,不要跳着分,会可能造成尚观的视频不能看的情况(在尚观外就随便了)
6,分区大小一旦确定好后,装好系统后就不能更改分区大小,只能增删分区(逻辑磁盘组LVM除外)
/boot主
/主
swap主
/vm
/soft
MBR 512字节 446+64(分区表)+2
6416+16+16+164 primary
3 primary + 1 extend ( 扩展分区内就可以分为N个逻辑扩展分区)
安装系统包时要注意的是:
1,装包多的话,装系统的时候慢,并且在实际的情况下认为越瘦的系统越跑得快,所以只装自己实际要用到的包
2,这里是学习环境,大家可以自由装包,注意重点要装的是 开发库和开发工具这两个组,还有语言方面(前面选的英文系统要装中文支持,前面选的中文系统要装英文支持)
3,包没装也没有关系,装好系统后还可以再装
===============================================================
比如:在windows上装一个QQ软件,可能就只在装一个盘的一个目录下(如D:\QQ) 那么qq里所有的东西全在这个目录下
而linux下装一个qq(rpm版),可能会分散到不同的地方;如qq这个命令在/bin下,配置文件在/etc下,链接库文件在/lib下,所以可以看出来linux的目录系统是按功能来分的
linux下也有把所有东西都安装到同一个目录下,但是这个目录的子目录一般也会有bin etc lib 等
linux 目录结构介绍
[root@station221 ~]# ls /
bin etc lost+found mnt opt sbin srv tmp
boot home media net proc selinux sys usr
dev lib misc notes root share tftpboot var
/bin 存放的是系统可执行的二进制文件,简单理解为命令
/sbin 系统管理员可执行的二进制文件
/etc 存放的是配置文件
lost+found 分区下才会有这个目录,存放系统出错时遗失的碎片文件
/mnt 默认临时的挂载目录(mount)
/media 默认临时挂载media的目录
/misc 默认临时挂载目录
/opt 扩展软件包
/tmp 存放临时文件的目录
/boot 存放引导镜象的目录
initrd-2.6.18-164.el5.img vmlinuz-2.6.18-164.el5
/home 用户家目录
管理员的家目录为/root
/root/anaconda-ks.cfg--记录安装系统的方式和分区和安装包等信息
/root/install.log--记录安装系统安装了哪些软件包,及其安装顺序
/root/Desktop--就是你的桌面
/proc /sys 虚拟目录 ,它记录的是当前系统的各种动态信息和状态
cat /proc/cpuinfo--看CPU信息
cat /proc/meminfo--看内存信息
/selinux 高级安全管理--空则表示selinux被关闭
/usr 用户软件目录,用户装源码版的编译软件一般都会存放在此;类似根目录里普通用户的根
/dev 一切设备都是文件 device
/dev/sda scsi SATA U盘
/dev/hdaIDE
/dev/cdrom 光盘
/dev/fd0软驱
/dev/lp打印机
/dev/mouse鼠标
/lib系统使用的函数库目录,程序运行过程中,会调用一些这里的库文件
类似windows里的.dll
ldd /bin/ls--查看ls命令要调用哪些库,如果里面任意一个库不能使用,则ls命令无法使用
/var 主要存放执行过程中经常变化的文件,比如说:日志,邮件
/var/lib 程序执行过程中,使用的数据文件放置的目录:比如:rpm包的数据库, 的locate查找的数据库等
/var/log 系统日志和各种服务日志存放的目录
/var/run 一般用来存放程序运行的pid
/var/spool/mail每个用户收邮件的目录
==================================
# locate *.iso--查找系统上以.iso结尾的文件
# mount /share/soft/iso/rhel-5.4-server-i386-dvd.iso /mnt/ -o loop
# ls /mnt --查看iso里有哪些文件
光盘目录结构: 不同的版本或者不同的linux分发版都会有少许不同
[root@li ~]# ls /mnt/VT/ | wc -l
38
[root@li ~]# ls /mnt/ClusterStorage/ | wc -l
41
[root@li ~]# ls /mnt/Cluster | wc -l
34
[root@li ~]# ls /mnt/Server/ | wc -l
2294
Server 普通常用软件包
Cluster 集群软件包
ClusterStorage 集群存储软件包
VT 虚拟化 XEN
images 引导映象文件
isolinux 引导有关
RPM-GPG-KEY-redhat-release 有时软件包不能装在你的系统上,可以导入这个key,就可以安装了
============================================================
桌面环境有 gnome 和 kde 这两种
ctrL+ alt + F1~F6 文字终端界面tty
ctrl+alt+f7 图形终端
虚拟机 多加一个shift键
alt +F2 可以用命令打开程序
<---gnome-terminal
<---konsole
ctrl+shift+ 字母t键 是在一个终端上再多打开一个终端 pts
alt+1 alt+2 alt+3 是分别在一号,二号,三号终端上快速切换
pts 和 tty的区别
--在rhel6下
ctrL+ alt + F2~F6 文字终端界面tty
ctrl+alt+f1 图形终端
==================================
/root/anaconda-ks.cfg
/root/install.log
GNU Bourne-Again SHell
用户
|
|
bash 终端相当于是bash的接口和工具cat /etc/shells
|bash-3.2-24.el5.i386.rpm
|
内核kernel 1,系统接口调用www.kernel.org
|2,内存管理
|3,文件系统管理
|4,进程管理
|5,硬件驱动
|
物理硬件
内部命令:bash这个软件包自带的命令
man cd
bash, :, ., [, alias, bg, bind, break,
builtin, cd, command, compgen, complete,
continue, declare, dirs, disown, echo,
enable, eval, exec, exit, export, fc, fg,
getopts, hash, help, history, jobs, kill,
let, local, logout, popd, printf, pushd,
pwd, read, readonly, return, set, shift,
shopt, source, suspend, test, times,
trap, type, typeset, ulimit, umask, una-
lias, unset, wait - bash built-in com-
mands, see bash(1)
外部命令:安装外部软件所带的命令
man--注重于应用
info--注重于介绍
command -h
command --help
help command--内部命令才可以这样查看帮助
[root@localhost etc]# ls /usr/share/man/
man1普通用户可执行的命令和二进制文件
man2系统核心调用的函数工具
man3常用的一些函数与函数库
man4设备文件的说明
man5设置文件与一些其它格式的文件
man6游戏相关
man7协议有关,网络协议等
man8管理员可操作的命令
man9系统内核相关的文件
# ls /usr/local/haproxy/share/man/man1/haproxy.1
# cp /usr/local/haproxy/share/man/man1/haproxy.1 /usr/share/man/man1/
# man haproxy
======================================================
文件命令:
ls 列出目录的内容同dos里的dir
ls -a 列出隐藏文件(就是以.开头的文件,包括.(当前目录)和..(上一层目录))
ls -l 详细列表
ls -l -a
ls -la
ls -ld /etc
用ls对一个目录大小由大到小进行排序列表-S
按时间由最新时间到最老时间排序列表-t
[root@li ~]# which ls
alias ls='ls --color=tty'
/bin/ls
[root@li ~]# rpm -qf /bin/ls
coreutils-5.97-23.el5
[root@li ~]# rpm -ql coreutils-5.97-23.el5
ls /--有颜色
/bin/ls /--没颜色
dir /--没颜色
--原因是ls 被做了别名
[root@li ~]# which ls
alias ls='ls --color=tty'
/bin/ls
想自己做一个别名
# alias dir='dir --color'
# dir / --就有颜色了
# unalias dir --取消别名
ls -ld /root/
drwxr-x--- 27 root root 4096 Mar 4 10:17 /root/
文件类型 权限链接数 拥有者 拥有组 大小 最后修改时间 文件名
文件的分类:
-普通文件
d目录directory
l链接文件link
p管道文件pipe
bblock文件,块设备
c字符character
s套接字文件socket
常用颜色
普通文件黑色
目录 蓝色
压缩包 红色
.......
mkdir /test
cd /test
touch
touch {1,2,3}aa{4,5,6}bb{7,8,9} --创建27个空文件
touch “{1,2,3}aa{4,5,6}bb{7,8,9}“ --创建1个空文件
touch 2 3 --创建一个2,同时又创建一个3
touch '2 3' --创建一个 2空格3 的文件
touch {4..10}--创建4到10
touch {a..z}
touch {A..Z}
sequence 序列
seq 100 产生1到100的序列
# seq 1 2 100 |xargs touch--创建出1到100内的奇数文件
stat 1
Access: 2011-06-27 14:11:39.000000000 +0800
Modify: 2011-06-27 14:11:39.000000000 +0800
Change: 2011-06-27 14:11:39.000000000 +0800
touch 1--再创建1,不会报“文件已经存在的错误"只是改变了文件的时间相关的属性
stat 1
Access: 2011-06-27 14:12:03.000000000 +0800
Modify: 2011-06-27 14:12:03.000000000 +0800
Change: 2011-06-27 14:12:03.000000000 +0800
========================================================
目录命令:
pwdcd mkdirrmdir
[root@li /]# cd /var/mail/
[root@li mail]# pwd -P
/var/spool/mail
[root@li mail]# pwd
/var/mail
[root@li mail]# ll -di /var/mail/
196459 drwxrwxr-x 2 root mail 4096 Jun 27 11:05 /var/mail/
[root@li mail]# ll -di /var/spool/mail/
196459 drwxrwxr-x 2 root mail 4096 Jun 27 11:05 /var/spool/mail/
--这两个目录在物理上属于同一个位置
cd
绝对路径 --相对于根目录的路径
相对路径--相对于当前目录的路径
区分方法--就看路径最左边是否有/
[root@li doc]# pwd
/usr/share/doc
[root@li doc]# cd /usr/share/doc/man-pages-2.39/ --绝对
[root@li doc]# cd man-pages-2.39/--相对
cd ~ 或者 cd 直接加回车--cd到当前登录用户的家目录
--下面这种是特殊情况,一般目录是没有的
# ll /var/mail--右边不加/ 列出连接
lrwxrwxrwx 1 root root 10 Jun 3 17:05 /var/mail -> spool/mail
# ll /var/mail/--右边加/ 是列出所有内容
............
.和..的区别
mkdir 建一个空目录
链接数,目录默认为2(指的是.和..),文件默认为1;
一个目录的链接数可以看成2+子目录数(但只有一层,也就是说子目录下的子目录不算)
mkdir aaa/aaa/aaa/aaa/aaa/aaa/aaa -p
rmdir 删除空目录(非空目录不能删除)
#!/bin/bash
mkdir {1..10000}
while true
do
cd 1
mkdir {1..10000}
done
=================================
阅读命令:
catmorelessheadtail
cat -n /etc/inittab --空行也算一行
nl /etc/inittab --空行不算
tac /etc/inittab --上下反着看
rev /etc/inittab --左右反着看
more 翻页查看内容
--回车向下翻行,空格向下翻页,q键退出
关于退出:q,quit, exit,logout,bye,ctrl+d,EOF, ctrl+c
less 比more更灵活
--方向键和page up,page down 都可以实现上翻下翻
head默认显示文件的前十行
tail默认显示文件的后十行
# tail -5 /etc/rc.sysinit |head -1--查看倒数第五行
tail -50 /var/log/messages --查看文件的最后50行
tail -f /var/log/messages --动态监控文件的最后十行
watch 接任何运行的程序,默认每两秒执行一次
watch -n 5--指定每5秒监控一次
# du -sh /share/weekend4/--计算一个目录里所有大小的总和
65M /share/weekend4/
-------------------------------------
操作命令
cpmvrm
[root@localhost ~]# cp /share/iso/rhel-5.4-server-i386-dvd.iso /root/Desktop/
-r 拷目录
-a或者-p 保留属性(拥有者,拥有组,权限)
mv 移动,或者重命名
mv 目录不需要加-r参数,同时它会自动保留属性
当前目录下mv 只改变名字,不改变inode(也就是说在文件系统上的编号不变)(但如果mv到另一个目录,或者另一个分区的话,还是会改变inode)
[root@li test5]# ll -i 11
11948646 -rw-r--r-- 1 root root 0 Feb 26 10:47 11
[root@li test5]# mv 11 111
[root@li test5]# ll -i 111
11948646 -rw-r--r-- 1 root root 0 Feb 26 10:47 111
[root@li test5]# mv 111 /tmp/111
[root@li test5]# ll -i /tmp/111
11948646 -rw-r--r-- 1 root root 0 Feb 26 10:47 /tmp/111
[root@li test5]# mv /tmp/111 /boot/111
[root@li test5]# ll -i /boot/111
6048 -rw-r--r-- 1 root root 0 Feb 26 10:47 /boot/111
rm 删除文件或目录
rm *.php -rf
rm /test4/* -rf
[root@li test3]# rm $ORACLE_HOME/ -rf
--以root用户去删除的话,就相当于是删除/
rm {1..10} -rf
rm {a..z} -rf
rm *9 -rf
转义符
rm \{1\,2\}aa\{3\,4\}bb\{5\,6\}
rm 123\ --空格也需要转义
[root@localhost ~]# touch /test/1 23
[root@localhost ~]# ls /test/
1 --23在当前目录
[root@localhost ~]# touch /test/1\ 23
[root@localhost ~]# ls /test/
1 1 23
--在目录内,把本目录删除的情况
[root@localhost test]# rm /test/ -rf
[root@localhost test]# ls /test
ls: /test: No such file or directory
[root@localhost test]# touch 1
touch: cannot touch `1': No such file or directory
练习:
练习1:
--把所有的.html结尾的文件批量重命名为.php结尾的文件
touch {1..100}.html
man rename--查看帮助
rename .html .php *.html
rename .php .aaa {50..80}.php
练习2:
注意: 通配符*
把/etc/skel/目录下所有的文件目录(不包括skel这个目录)拷贝到一个空目录
错误一:因为目录下都是有.开头的隐藏文件
cp /etc/skel/* /test4 -r
cp: cannot stat `/etc/skel/*': No such file or directory
错误二:.*包含.. 也就是上一级目录,这样拷的话会把/etc/下的所有东西给拷过去
cp /etc/skel/.* /test4/ -r
练习3:把下面的除了2134之外的文件全删除
# ls
134dsafa464dsf safwqtgdfgsd sdfsadf xzvz
2134 sdfsad34dga sewrqwr
# rm *[a-z]* -rf
==================================
管道--一条命令完成不了的任务或者要多条复杂的命令来实现的任务,可以用管道来实现
cat /etc/rc.sysinit |more 等于 more /etc/rc.sysinit
cat /etc/rc.sysinit |grep fi |wc -l
grep root /etc/passwd |wc -l
tail -5 /etc/inittab |head -1
重定向
cat /etc/rc.sysinit |grep fi |wc -l|cat >> /root/test/1--追加
echo aa > /root/test/1--覆盖
输入输出流
默认的情况: 敲键盘 --------> 屏幕
standard input standard output
重定向
1,标准输入(stdin);代码为0,使用< 或者 <<--默认设备就是键盘
2,标准输出(stdout);代码为1,使用> 或者 >>或1 > 或 1 >>--默认设备是屏幕
3, 错误输出(stderr);代码为2,使用 2> 或者 2>> --默认设备也是屏幕
标准输入 -->命令-->标准输出---> 设备/文件
|
|
错误输出
|
|
设备/文件
# cat passwdfile
123
123
# useadd user1
# passwd user1 < passwdfile--把本来要用键盘输入两次密码的标准输入换成了从一个文件里读取内容(文件内容当成了标准输入)
Changing password for user user1.
New UNIX password: BAD PASSWORD: it is WAY too short
Retype new UNIX password: passwd: all authentication tokens updated successfully.
# passwd user1 < passwdfile 1> /dev/pts/2--标准输出重定向给pts/2,错误输出默认输给当前终端屏幕
# passwd user1 < passwdfile 2> /dev/pts/2--错误输出重定向给pts/2,标准输出默认输给当前终端屏幕
# passwd user1 < passwdfile > /dev/null 2>&1
--修改了密码,并把所有标准和错误的都重定向给 黑洞设备/dev/null了(也就是信息不保留) ; 2>&1是一个写法
EOF end of file符号
[root@web test4]# cat test
sdfsafas
sfdsaf
[root@web test4]# cat > test
aaaaaa
bbbbbb
EOF
--这里没有使用<<EOF ,那么EOF不能结束,需要使用ctrl+d来结束
[root@web test4]# cat test
aaaaaa
bbbbbb
EOF
问题:写脚本去替代一个文件里的所有内容
# cat test --原来的文件及内容
111
# vim 1.sh--使用vi写一个脚本,内容如下
#!/bin/bash
cat > test << EOF
222
333
444
EOF
# sh 1.sh--使用sh命令执行这个脚本
# cat test--执行完后,test文件就被完全替换了
222
333
444
比较下面两句,都是用ctrl+d来结束
# cat >> /root/test << EOF
# cat > /root/test << EOF
后面的<< EOF 在命令行时可以不加。写脚本时加上,增强可读性
--EOF符号也可以换成任意的字母标记,但前后一定要对应;如下
cat > test << ABC
222
333
444
ABC
--针对test文件的替换
# cat test
222
333
444
# sed -i 's/3/5/' test --所有行的第一个3替换成5
# sed -i '2s/3/5/' test --第2行的第一个3替换成5
# sed -i '3s/4/6/g' test --第3行的所有4替换成6
# sed -i '3s/6/7/2' test --第3行的第2个6替换成7
#sed -i 2d test --删除第二行
# sed -i 1accc test --把ccc这个内容做为第二行插入进去
===================================
NFS服务
# mii-tool eth0
eth0: negotiated 100baseTx-FD flow-control, link ok
# /etc/init.d/network restart--重启网络服务
# ifconfig eth0 |head -2--查看你的IP
# ping 172.16.2.35 --测试是否能ping通我
# showmount -e 172.16.2.35 --如果这一步不能成功,先执行一下/etc/init.d/rpcbind restart
Export list for 172.16.2.35:
/share/yum *
/yum *
/share/iso *
/share/soft *
# mount 172.16.2.35:/share/iso /mnt
# cp /mnt/rhel63-64.iso /soft
# cp /mnt/rhel-5.4-server-i386-dvd.iso /soft
# mount 172.16.2.35:/share/soft/ /misc/
# cp -r /misc/VMware-workstation/vmware-workstation-8.0.0/ /soft
--拷贝完成后,一定记得使用ll命令比较一下大小
--拷完之后umount /mnt 和 umount /misc