Linux链接,分为硬链接(Hard Link)与符号链接(Symbolic Link,软链接)。
默认情况下,ln命令产生硬链接。
下面我们针对这块内容,进行具体的分析,并辅之以简单的例子加深理解。
1、硬连接
硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
硬连接的2个限制:
1)、不允许给目录创建硬链接
2)、只有在同一文件系统中的文件之间才能创建链接。 即不同硬盘分区上的两个文件之间不能够建立硬链接。这是因为硬链接是通过结点指向原始文件的,而文件的i-结点在不同的文件系统中可能会不同。
2、软连接
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
这就允许符号链接(经常简写为symlinks)指向位于其他分区、甚至是其他网络硬盘上的某个文件。
3、通过实验加深理解
[oracle@Linux]$ ln f1 f2 #创建f1的一个硬连接文件f2
[oracle@Linux]$ ln -s f1 f3 #创建f1的一个符号连接文件f3
[oracle@Linux]$ ls -li # -i参数显示文件的inode节点信息
total 0
9797648 -rw-r--r-- 2 oracle oinstall 0 Apr 21 08:11 f1
9797648 -rw-r--r-- 2 oracle oinstall 0 Apr 21 08:11 f2
9797649 lrwxrwxrwx 1 oracle oinstall 2 Apr 21 08:11 f3 -> f1
从上面的结果中可以看出,硬连接文件f2与原文件f1的inode节点相同,均为9797648,然而符号连接文件的inode节点不同。
[oracle@Linux]$ cat f1
I am f1 file
[oracle@Linux]$ cat f2
I am f1 file
[oracle@Linux]$ cat f3
I am f1 file
[oracle@Linux]$ rm -f f1
[oracle@Linux]$ cat f2
I am f1 file
[oracle@Linux]$ cat f3
cat: f3: No such file or directory
通过上面的测试可以看出:当删除原始文件f1后,硬连接f2不受影响,但是符号连接f3文件无效
4、总结
依此您可以做一些相关的测试,可以得到以下全部结论:
1).删除符号连接f3,对f1,f2无影响;
2).删除硬连接f2,对f1,f3也无影响;
3).删除原文件f1,对硬连接f2没有影响,导致符号连接f3失效;
4).同时删除原文件f1,硬连接f2,整个文件会真正的被删除。
附:linux目录管理相关知识
. 代表此层目录
.. 代表上层目录
~ 代表自己的家目录
~user 代表到 user 这个人的家目录
---目录与路径的常用指令:
cd 变换目录
pwd 显示目前的目录
mkdir 建立一个新目录
rmdir 删除一个里面是空的空目录
cd 与 pwd 这两个指令主要是在『变换目前目录』与『显示目前所在目录』的工作,底下说一说他们的用途与语法吧!
cd 语法: [root @test /root ]# cd [相对路径或绝对路径]
参数说明: 路径有『相对路径』与『绝对路径』的分别,请千万小心啰! 范例: [root @test /root]# cd ..
<==回到上一层目录 [root @test /root]# cd ../home
<==相对路径的写法 [root @test /root]# cd /var/www/html
<==绝对路径的写法 [root @test /etc]# cd
<==回到使用者的家目录 [root @test /etc]# cd ~
<==回到使用者的家目录! [root @test /etc]# cd ~test
<==回到 test 这个使用者的家目录
说明: cd 是 change directory 的缩写,这是用来变换工作路径的指令。注意,路径与 cd 指令之间存在一个空格!一登入 Linux 系统后,root 会在 root 的家目录,亦即 /root 下,至于使用者会在预设的 /home/username 底下,例如鸟哥的 ID 为 vbird ,则以 vbird 的身份登入后,会到 /home/vbird 这个路径下。OK!那回到上一层可以用『 cd .. 』而到相对路径可到『 cd ../bird』,至于绝对路径则是 cd /usr/sbin !注意喔,在前面的提示字元会改变路径名称!此外,家目录还有一个代码,那就是『 ~ 』符号!例如上面的例子可以发现,使用『 cd ~ 』可以回到个人的家目录里头去呢!此外,如果你的 Linux 主机当中有个 testing 的帐号,你要到他的家目录去,可以下达『 cd ~testing』立刻去到 testing 的家目录啰!
pwd 语法: [root @test /root ]# pwd
范例: [root @test root]# cd /home/test
[root @test test]# pwd /home/test
<==显示目前所在的目录!
说明:
pwd 是 print working directory 的缩写,也就是显示目前所在目录的指令,例如在上个表格最后的目录是 /home/test 这个目录,但是提示字元仅显示 test ,如果你想要知道目前所在的目录,可以输入 pwd 即可:
此外,由于很多的套件所使用的目录名称都相同,例如 /usr/local/etc 还有 /etc ,但是通常 Linux 仅列出最后面那一个目录而已,这个时候你就可以使用 pwd 来知道你的所在目录啰!免得搞错目录,结果……
mkdir 与 rmdir 管理目录:
创建与删除目录的命令:mkdir 与 rmdir ,即make/remove directory 的缩写,多么奇妙而简单的命令!
1、什么是Linux主机名
无论在局域网还是INTERNET上,每台主机都有一个IP地址,是为了区分此台主机和彼台主机,也就是说IP地址就是主机的门牌号。但IP地址不方便记忆,所以又有了域名。域名只是在公网(INtERNET)中存在(以实验为目的的局域网域网实验性除外),每个域名都对应一个IP地址,但一个IP 地址可有对应多个域名。域名类型 Linux sir.org 这样的;
主机名是用于什么的呢?在一个局域网中,每台机器都有一个主机名,用于主机与主机之间的便于区分,就可以为每台机器设置主机名,以便于以容易记忆的方法来相互访问。比如我们在局域网中可以为根据每台机器的功用来为其命名。主机名相关的配置文件:/etc/hosts;
2. Linux主机名配置文件
主机名的配置文件大多是/etc/hosts ;hosts - The static table lookup for Linux hostname(主机名查询静态表);由于 Linux发行版本众多,与主机名相关的配置文件有时也有所不同。现在我们说说常见版本的主机名配置文件;
2.1 Linux主机名置文件 /etc/hosts
Fedora/Redhat 或以Fedora/Redhat为基础打包的发行版,主机名配置文件是 /etc/hosts Debian或以Debian为基础打包的发行版,主机名配置文件是 /etc/Linux hostname 和/etc/hosts Slackware的主机名配置文件是 /etc/hosts 那我们来读读 /etc/hosts的内容,看这个文件是用来做什么的。
hosts 配置文件是用来把主机名字映射到IP地址的方法,这种方法比较简单。但这种映射只是本地机的映射,也就是说每台机器都是独立的,所有的计算机都不能相互通过Linux hostname来访问。注:在debian 中还有一个/etc/Linux hostname的文件,这个文件就是直接把本地主机名写进去就行了,但要和 /etc/hosts中的本地主机名保持一致。
/etc/hosts 的内容一般有如下类似内容:127.0.0.1 localhost.localdomain localhost 192.168.1.195 debian.localdomain debian注:一般情况下hosts的内容关于主机名(Linux hostname)的定义,每行为一个主机,每行由三部份组成,每个部份由空格隔开。其中#号开头的行做说明,不被系统解释。
第一部份:网络IP地址;第二部份:主机名.域名,注意主机名和域名之间有个半角的点,比如 localhost.localdomain第二部份:主机名(主机名别名) ,其实就是主机名;当然每行也可以是两部份,就是主机IP地址和主机名;比如 192.168.1.195 debian
127.0.0.1 是回环地址,比如我们不想让局域网的其它机器看到我们测试的网络程序,就可以用回环地址来测试。 为什么需要定义域名呢?其实理解也简单,比如我们有三台主机,每台做不同的事,一台做MAIL服务器,一台做FTP服务器,一台做SMB服务器,所以我们就可以这样来设计Linux hostname;
127.0.0.1 localhost.localdomain localhost
192.168.1.2 ftp.localdomain ftp
192.168.1.3 mail.localdomain mail
192.168.1.4 smb.localdomin smb
把这上面这个配置文件的内容分别写入每台机器的/etc/hosts内容中,这样这三台局域网的机器就可以通过Linux hostname来访问了。
2.2 主机名(Linux hostname)和域名(Domain)的区别
主机名就机器本身的名字,域名是用来解析到IP的。但值得一说的是在局域网中,主机名也是可以解析到IP上的;比如我们前面所说举的例子;
2.3 局域网的机器,不能通过主机名互访的原因;
有的可能会说,我的Linux hostname彼此不能互访,其实这也问题也简单,我们前面已经提到了一个简单的解决办法。就是要让局域网中的所有主机都有一个通用的,并且包含所有主机的/etc/hosts文件;
另一个是做解决办法是做局域网DNS服务器,如果您的主机特别少,就用前面所说的简单方法就行;如何做DNS服务器,我将在以后的文档中专题介绍;不过我值得一提的是做任何服务器都是以效率优先的原则为基础。
比如在局域网中两台机器,还有必要做DNS服务器吗?
3、主机名修改工具 Linux hostname;
其实主机名的修改也有专用工具,就是Linux hostname ;我认为如果用这个工具来修改主机名,不如直接修改 /etc/hosts 来的方便;您可以查看 hosname --help或 man Linux hostname的帮助 。在这里我们只说简单的用法;Linux hostname 工具是用来显示和设置系统主机名,看下面的洋文;Linux hostname - show or set the system’s host name
举例:显示主机名:[root@linuxsir01 ~]# Linux hostname linuxsir01此主机的主机名是linuxsir01,不加参数是用来显示当前操作的主机的主机名;临时设置主机名:我们可以用 Linux hostname 后接主机名,这样就可以设置当前操作的主机的主机名.
比如想把主机名设置为linuxsir02;[root@linuxsir01 ~]# Linux hostname linuxsir02[root@linuxsir01 ~]# Linux hostname 注:显示主机名linuxsir02通过Linux hostname 工具来设置主机名只是临时的,下次重启系统时,此主机名将不会存在;
要永久生效的等话,还是用前面所说的修改主机名配置文件 /etc/hosts;显示主机IP:显示当前主机名的IP,可以用-i参数;[root@linuxsir01 ~]# Linux hostname -i192.168.1.3
4、未尽事宜;
有时在登入桌面时,会提示找不到Linux hostname ,这时修改/etc/hosts,添加一个主机名;
先用 ifconfig -a 来查看主机的IP地址,然后把你主机的IP地址,指定主机名;
如此操作之后,就没有问题了。
之前,为大家介绍过二篇关于linux时间与时区修改的方法,感兴趣的朋友,可以参考:
linux 下手动修改时间的方法
linux下修改时间与时区的方法
来看今天的内容:
修改日期:
时间设定成2009年5月10日的命令如下:
修改时间:
将系统时间设定成上午10点18分0秒的命令如下。
修改时区:
找到相应的时区文件 /usr/share/zoneinfo/Asia/Shanghai替换当前的/etc/localtime。
修改/etc/sysconfig/clock文件的内容为:
UTC=false
ARC=false
同步bios时间:
同步BIOS时钟,强制把系统时间写入CMOS,命令如下:
您可能感兴趣的文章:
linux下修改时间的方法分享
linux下调整时区与时间的方法详解
linux 时间同步的两种方法
修改linux时间和日期的命令date、clock
linux 下手动修改时间的方法
修改Linux时间与时区的方法
linux下更改时间的方法
linux下修改时间与时区的方法
Linux 修改时间的方法
linux 查看设置时区和时间
Linux或Unix修改系统时间的方法