本文主要内容:
linux中软、硬链接的创建方法。
在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号。
文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问。
链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。
Linux中包括两种链接:
硬链接(Hard Link) 和软链接(Soft Link),软链接又称为符号链接(Symbolic link)。
符号连接相当于Windows下的快捷方式。
一、硬链接
硬链是一个指针,指向文件索引节点,系统并不为它重新分配inode。
可以用:ln命令来建立硬链接。
语法:
ln [options] existingfile newfile(sexistingfile 待建立链接文件的文件,newfile是新创建的链接文件)
ln [options] existingfile-list directory
-f 建立时,将同档案名删除.
-i 删除前进行询问.
ln -s abc cde 建立abc 的软连接
ln abc cde 建立abc的硬连接,
用法:
第一种:为”existingfile”创建硬链接,文件名为”newfile”。
第二种:在”directory”目录中,为”existingfile-list”中包含的所有文件创建一个同名的硬链接。
常用可选[options] –f 无论”newfile”存在与否,都创建链接。-n 如果”newfile”已存在,就不创建链接。
例子:
总计 0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
[root@ test]# ln file2 file2hand
[root@ test]# ls -il
总计 0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand
[root@ test]#
注意:
在创建链接前,file1 显示的链接数目为1,创建链接后file1和file1hard的链接数目都变为2;
file1和file1hard在inode号是一样的file1和file1hard显示的文件大小也是一样。
可见进行了ln命令的操作结果:
file1和file1hard是同一个文件的两个名字,它们具有同样的索引节点号和文件属性,建立文件file1的硬链接,就是为file1的文件索引节点在当前目录上建立一个新指针。
可以删除其中任何一个,如rm file2 ,每次只会删除一个指针,链接数同时减一,当链接数减为0时,内核才会把文件内容从磁盘上删除。
还可以在不同目录,但同一文件系统中建立文件的硬链接。
设file1、file2在目录/home/root/dir1中,
以下命令在/home/root中建立file2的硬链接。
以下程序将dir1目录中所有文件,在目录dir2中建立硬链接
#ln /home/root/dir1/* /home/root/dir2
如果使用了 ln –f existingfile newfile,如果newfile已经存在,则无论原来newfile是什么文件,
只用当前用户对它有写权限,newfile就成为exisitngfile的硬链接文件。
尽管硬链接节省空间,也是Linux系统整合文件系统的传统方式,但是存在一下不足之处:
(1)不可以在不同文件系统的文件间建立链接
(2)只有超级用户才可以为目录创建硬链接。
二、软链接(符号链接)
软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。
因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。
建立软链接,只要在ln后面加上选项 –s,例子
[root@ test]# ls -il
总计 0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand
[root@ test]# ln -s file1 file1soft
[root@ test]# ls -il
总计 0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491140 lrwxrwxrwx 1 root root 5 07-14 14:24 file1soft -> file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand
从上面链接后的结果可以看出来软链接与硬链接,区别不仅仅是在概念上,在实现上也是不同的。
区别:硬链接原文件&链接文件公用一个inode号,说明他们是同一个文件,而软链接原文件&链接文件拥有不同的inode号,表明他们是两个不同的文件;
在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系;
链接数目是不一样的,软链接的链接数目不会增加;
文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的,这用强调,因为是等同的嘛,而这里软链接显示的大小与原文件就不同了,file1大小是48B,而file1soft是5B,这里面的5实际上就是“file1”的大小。
总之,建立软链接就是建立了一个新文件。
当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到真正要访问的文件。
在不同系统之间建立软链接、对目录建立链接,这里就不举例了,读者可以自己去尝试,我也是在不断实践中学习的。
当然软链接也有硬链接没有的缺点,因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了~~,
而硬链接就没有这个缺陷,你想怎么移就怎么移(呵呵);
还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。
补充:可以通过symlink来查看链接文件,可以用 man symlink来学习。
三、删除链接
有创建就有删除。
注意:不是rm -rf symbolic_name/
例子:
总计 0
1491138 -rw-r–r– 1 root root 0 07-14 14:17 file1
1491140 lrwxrwxrwx 1 root root 5 07-14 14:24 file1soft -> file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand
[root@ test]# rm -rf file1soft
[root@ test]# ls -il
总计 0
1491138 -rw-r–r– 1 root root 0 07-14 14:17 file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand
[root@ test]#
linux 软连接和硬链接的区别:
4点不同 :
(1)软连接可以 跨文件系统 ,硬连接不可以 。
实践的方法就是用共享文件把windows下的 aa.txt文本文档连接到linux下/root目录 下 bb,cc .
ln -s aa.txt /root/bb 连接成功 。
ln aa.txt /root/bb 失败 。
(2)关于 I节点的问题 。
硬连接不管有多少个,都指向的是同一个I节点,会把 结点连接数增加,只要结点的连接数不是 0,文件就一直存在 ,不管你删除的是源文件还是 连接的文件 。
只要有一个存在 ,文件就存在 (其实也不分什么 源文件连接文件的 ,因为他们指向都是同一个 I节点)。
当你修改源文件或者连接文件任何一个的时候 ,其他的 文件都会做同步的修改 。
软链接不直接使用i节点号作为文件指针,而是使用文件路径名作为指针。
所以 删除连接文件对源文件无影响,但是删除源文件,连接文件就会找不到要指向的文件 。
软链接有自己的inode,并在磁盘上有一小片空间存放路径名.
(3)软连接可以对一个不存在的文件名进行连接 。
(4)软连接可以对目录进行连接。
备注:
I节点 :
它是UNIX内部用于描述文件特性的数据结构.我们通常称I节点为文件索引结点(信息结点).
i节点 含有关于文件的大部分的重要信 息,包括文件数据块在磁盘上的地址.
每一个I节点有它自己的标志号,我们称为文件顺序号.
I节点包含的信息
1.文件类型
2.文件属主关系
3.文件的访问权限
4.文件的时间截.
1,关闭不需要的服务
利于减少内存和CPU时间的占用,提高安全性。
在linux机器上通常有四项服务是必须保留的
iptables
linux下强大的防火墙。
network
linux机器的网络,如果不上网可以关闭。
sshd
openssh server,如果机器不是本地操作,而是托管到IDC机房,那么访问机器时需要通过这个sshd服务进行。
syslog
linux系统的日志系统,必须要有,否则机器出现问题时会找不到原因。
除了这四项必需的服务之外,其他的服务可以根据系统的用途而定,比如:数据库服务器,就需要启用mysqld(或oracle)、web服务器,就需要启用apache或nginx。
2,关闭不需要的tty
编辑/etc/inittab
找到如下一段:
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
这段命令使init为你打开了6个控制台,分别可以用alt+f1到alt+f6进行访问
此6个控制台默认都驻留在内存中,事实上没有必要使用这么多的
用ps auxf这个命令可以看到,是六个进程
root 3037 0.0 0.0 2492 412 tty2 Ss+ Jun29 0:00 /sbin/mingetty tty2
root 3038 0.0 0.0 2308 412 tty3 Ss+ Jun29 0:00 /sbin/mingetty tty3
root 3051 0.0 0.0 1812 412 tty4 Ss+ Jun29 0:00 /sbin/mingetty tty4
root 3056 0.0 0.0 2116 412 tty5 Ss+ Jun29 0:00 /sbin/mingetty tty5
root 3117 0.0 0.0 2396 412 tty6 Ss+ Jun29 0:00 /sbin/mingetty tty6
如何关闭这些进程?
通常我们保留前2个控制台就可以了,
把后面4个用#注释掉就可以了
然后无需重启机器,只需要执行 init q 这个命令即可
init q
q作为参数的含义:重新执行/etc/inittab中的命令
3,关闭ipv6?
ipv6在系统安装完成后它会作为模块常驻核心,没有必要。
首先,编辑网络配置文件:
vi /etc/sysconfig/network
NETWORKING_IPV6=yes
为:
NETWORKING_IPV6=no
然后,关闭其模块:vi /etc/modprobe.conf
在文件中添加以下两行
alias ipv6 off
修改完成后,重启机器使之生效。
4,关闭atime?
一个linux文件默认有3个时间:
atime:对此文件的访问时间
ctime:此文件inode发生变化的时间
mtime:此文件的修改时间
如果有多个小文件时通常没有必要记录文件的访问时间,这样可以减少磁盘的io,比如web服务器的页面上有多个小图片。
如何进行设置呢?
修改文件系统的配置文件:vi /etc/fstab
在包含大量小文件的分区中使用noatime,nodiratime两项
例如:
/dev/md5 /data/pics1 ext3 noatime,nodiratime 0 0
这样文件被访问时就不会再产生写磁盘的io
5,必须让服务器运行在level 3上
做法:
vi /etc/inittab
id:3:initdefault:
让服务器运行X是没有必要的
6,优化sshd
UseDNS no //不对IP地址做反向的解析
7,优化shell
修改命令history记录
# vi /etc/profile
然后 source /etc/profile
本节内容:
UnixBench的安装与使用方法
UnixBench是一款不错的Linux下的VPS性能测试软件。
下载与安装UnixBench软件:
[root@xxx ~]# wget http://soft.vpser.net/test/unixbench/unixbench-4.1.0-wht.tar.gz
[root@xxx ~]# tar xzf unixbench-4.1.0-wht.tar.gz
[root@xxx ~]# ls
unixbench-4.1.0-wht-2 unixbench-4.1.0-wht.tar.gz
[root@xxx ~]# cd unixbench-4.1.0-wht-2/
[root@xxx unixbench-4.1.0-wht-2]# make
[root@xxx unixbench-4.1.0-wht-2]# ./Run
运行后显示的内容:
BYTE UNIX Benchmarks (Version 4.1-wht.2)
System -- Linux xxx.lnmp.org 2.6.18-92.1.13.el5.028stab059.6 #1 SMP Fri Nov 14 16:01:01 MSK 2008 i686 i686 i386 GNU/Linux
simfs 5120000 1581972 3538028 31% /
Start Benchmark Run: Wed Feb 4 05:11:25 PST 2009
05:11:25 up 20 days, 21:26, 1 user, load average: 0.00, 0.00, 0.00
End Benchmark Run: Wed Feb 4 05:21:40 PST 2009
05:21:40 up 20 days, 21:37, 1 user, load average: 15.46, 6.32, 2.72
INDEX VALUES
TEST BASELINE RESULT INDEX
Dhrystone 2 using register variables 376783.7 23797779.3 631.6
Double-Precision Whetstone 83.1 1407.7 169.4
Execl Throughput 188.3 10095.2 536.1
File Copy 1024 bufsize 2000 maxblocks 2672.0 204163.0 764.1
File Copy 256 bufsize 500 maxblocks 1077.0 74664.0 693.3
File Read 4096 bufsize 8000 maxblocks 15382.0 1629641.0 1059.4
Pipe Throughput 111814.6 3058960.1 273.6
Pipe-based Context Switching 15448.6 887966.3 574.8
Process Creation 569.3 26803.0 470.8
Shell Scripts (8 concurrent) 44.8 2503.6 558.8
System Call Overhead 114433.5 2409758.4 210.6
FINAL SCORE 475.4
[root@xxx unixbench-4.1.0-wht-2]#