存在两种不同类型的链接,软链接和硬链接,这里我们只讨论软链接。软链接实际上就是一个指向文件的指针。你将会发现这种软链接使用起来非常方便。
一. 使用软链接来保存文件的多个映像
下面我们就解释一下符号链接是怎么回事。比方说在/usr/local/admin/sales目录下有一个含有销售信息的文件,销售部门的每一个人都想看这份文件。你可以在每一位用户的$HOME目录下建立一个指向该文件的链接,而不是在每个目录下拷贝一份。这样当需要更改这一文件时,只需改变一个源文件即可。每个销售$HOME目录中的链接可以起任何名字,不必和源文件一致。如果有很多子目录,而进入这些目录很费时间,在这种情况下链接也非常有用。可以针对$HOME目录下的一个很深的子目录创建一个链接。还有,比如在安装一个应用程序时,它的日志被保存到/usr/opt/app/log目录下,如果想把它保存在另外一个你认为更方便目录下,可以建立一个指向该目录的链接。
该命令的一般形式为:
ln [-s] source_path target_path
其中的路径可以是目录也可以是文件。让我们来看几个例子。
二. 符号链接举例
假如系统中有4 0个销售和管理用户,销售用户使用一个销售应用程序,而管理用户使用一个管理应用程序。我作为系统管理员该怎么做呢?首先删除它们各自$HOME目录下的所有.profile文件。然后在/usr/local/menus/目录下创建两profile文件,一个是sales.profile,一个是admin.profile,它们分别为销售和管理人员提供了所需的环境,并引导他们进入相应的应用程序。现在我在所有销售人员的$HOME目录下分别创建一个指向sales.profile的链接,在所有管理人员的$HOME目录下分别创建一个指admin.profile文件的链接。注意,不必在上面命令格式中的target_path端创建相应文件,如果不存在这样一个文件, ln命令会自动创建该文件。
下面就是我对销售人员matty所做的操作。
$ cd /home/sales/matty
$ rm .profile
$ ln -s /usr/local/menus/sales.profile .profile
$ ls -al .profile
$ lrwx rwx rwx 1 sales admin 5567 Oct 3 05:40./profile->/usr/local/menus/sales.profile
(你所看到的可能会与此稍有差别)。
这就是我所要做的全部工作;对于管理人员也是如此。而且如果需要作任何修改的话,只要改变销售和管理人员的profile文件即可,而不必对40个用户逐一进行修改。
下面是另外一个例子。我所管理的系统中有一个网络监视器,它将日志写在/usr/opt/monitor/regstar目录下,但其他所有的日志都保存在/var/adm/logs目录下,这样只需在该目录下建立一个指向原有文件的链接就可以在一个地方看所有的日志了,而不必花费很多时间分别进入各个相应的目录。
下面就是所用的链接命令:
$ ln -s /usr/opt/monitor/regstar/reg.log /var/adm/logs/monitor.log
如果链接太多的话,可以删掉一些,不过切记不要删除源文件。
不管是否在同一个文件系统中,都可以创建链接。在创建链接的时候,不要忘记在原有目录设置执行权限。链接一旦创建,链接目录将具有权限777或rwx rwx rwx,但是实际的原有文件的权限并未改变。
在新安装的系统上,通常要进行这样的操作,在/var目录中创建一个指向/tmp目录的链接,因为有些应用程序认为存在/var/tmp目录(然而它实际上并不存在),有些应用程序在该目录中保存一些临时文件。为了使所有的临时文件都放在一个地方,可以使用ln命令在/var目录下建立一个指向/tmp目录的链接。
$ pwd /var
$ ln -s /tmp /var/tmp
现在如果我在/var目录中列文件,就能够看到刚才建立的链接:
$ ls -l
$ lrwx rwx rwx 1 root root 5567 sep 9 10:40 tmp->/tmp