为什么要用软链接?
举个例子: /tmp/one/two/1.txt 这个1.txt因为某种原因不在这个位置了,跑到了 /root/one/1.txt 位置。想在前面的位置找到后面的这个文件复制当然是可以的,但是会多占一定的内存,并且假如文件更改的话,还得需要再更改,比较麻烦。所以,才用软链接,这样就相当于生成一个快捷方式。
先来看下什么样子的东西叫软链接
下面带箭头的那行就是软连接
[root@evan-01 ~]# ls -l /bin
lrwxrwxrwx. 1 root root 7 Aug 8 18:31 /bin -> usr/bin
[root@evan-01 ~]#
/bin/ls 和 /usr/bin/ls 效果是一样的
[root@evan-01 ~]# /bin/ls
anaconda-ks.cfg anaconda-ks.cfg.bak test test2.txt test3.txt
[root@evan-01 ~]# usr/bin/ls
[root@evan-01 ~]# /usr/bin/ls
anaconda-ks.cfg anaconda-ks.cfg.bak test test2.txt test3.txt
[root@evan-01 ~]#
软链接文件
[root@evan-01 ~]# cd /tmp
[root@evan-01 tmp]# ll
total 132
-rw-r--r--. 1 root root 57 Aug 10 16:14 error
drw-r-xr--. 2 evan1 evan1 19 Aug 9 10:10 evan2
drwxr-xr-x. 4 root root 30 Aug 8 15:48 evanlinux
drwxr-xr-x. 3 root root 17 Aug 8 14:45 evanlinux2
-rwx------. 1 root root 836 Aug 8 18:36 ks-script-R9kDZ_
-rw-r--r--. 1 root root 12 Aug 10 16:14 log
-rwxr-xr-x. 1 root root 117656 Aug 8 11:19 ls2
drwx------. 3 root root 17 Aug 12 08:47 systemd-private-0d5c9ec1ab594c4a9846d22b9e1c6e38-chronyd.service-VHrQvm
drwx------. 3 root root 17 Aug 12 08:47 systemd-private-0d5c9ec1ab594c4a9846d22b9e1c6e38-vgauthd.service-jqQ7rS
drwx------. 3 root root 17 Aug 12 08:47 systemd-private-0d5c9ec1ab594c4a9846d22b9e1c6e38-vmtoolsd.service-qxJEiR
drwxrwxrwx. 2 evan2 evan2 6 Aug 12 10:35 test
-rw-r--r--. 1 root evan1 0 Aug 8 15:41 test.txt
-rwxrwxrwx. 1 evan1 evan1 44 Aug 12 10:29 wenjian.txt
-rw-------. 1 root root 0 Aug 8 18:30 yum.log
[root@evan-01 tmp]# ln -s /tmp/yum.log /root/test/yum.log
[root@evan-01 tmp]# ls -l /root/test
total 4
-rw-r--r--. 1 root evan1 0 Aug 12 09:52 hahaha.txt
-rw-r--r--. 1 root root 0 Aug 12 09:56 heiheihei.txt
drwxr-sr-x. 2 root evan1 6 Aug 12 09:54 ok
drwxr-xr-x. 2 root root 6 Aug 12 09:58 okok
-rw-rw-r--. 1 root root 7 Aug 9 15:00 ok.txt
drwxrwxr--. 2 root root 19 Aug 9 14:55 one
lrwxrwxrwx. 1 root root 12 Aug 12 10:45 yum.log -> /tmp/yum.log
[root@evan-01 tmp]#
设置软链接的时候前面的是源文件,后面的是软链接文件
[root@evan-01 tmp]# ln -s /tmp/yum.log /root/test/yum.log
设置软链接成功后前面的是软链接文件,后面的是源文件
lrwxrwxrwx. 1 root root 12 Aug 12 10:45 yum.log -> /tmp/yum.log
软链接目录
[root@evan-01 tmp]# ll
total 132
-rw-r--r--. 1 root root 57 Aug 10 16:14 error
drw-r-xr--. 2 evan1 evan1 19 Aug 9 10:10 evan2
drwxr-xr-x. 4 root root 30 Aug 8 15:48 evanlinux
drwxr-xr-x. 3 root root 17 Aug 8 14:45 evanlinux2
-rwx------. 1 root root 836 Aug 8 18:36 ks-script-R9kDZ_
-rw-r--r--. 1 root root 12 Aug 10 16:14 log
-rwxr-xr-x. 1 root root 117656 Aug 8 11:19 ls2
drwx------. 3 root root 17 Aug 12 08:47 systemd-private-0d5c9ec1ab594c4a9846d22b9e1c6e38-chronyd.service-VHrQvm
drwx------. 3 root root 17 Aug 12 08:47 systemd-private-0d5c9ec1ab594c4a9846d22b9e1c6e38-vgauthd.service-jqQ7rS
drwx------. 3 root root 17 Aug 12 08:47 systemd-private-0d5c9ec1ab594c4a9846d22b9e1c6e38-vmtoolsd.service-qxJEiR
drwxrwxrwx. 2 evan2 evan2 6 Aug 12 10:35 test
-rw-r--r--. 1 root evan1 0 Aug 8 15:41 test.txt
-rwxrwxrwx. 1 evan1 evan1 44 Aug 12 10:29 wenjian.txt
-rw-------. 1 root root 0 Aug 8 18:30 yum.log
[root@evan-01 tmp]# ln -s /tmp/evan2 /root/test/evan3
[root@evan-01 tmp]# ls -l !$
ls -l /root/test/evan3
lrwxrwxrwx. 1 root root 10 Aug 12 10:48 /root/test/evan3 -> /tmp/evan2
[root@evan-01 tmp]#
做相对路径软链接
[root@evan-01 tmp]# ll
total 132
-rw-r--r--. 1 root root 57 Aug 10 16:14 error
drw-r-xr--. 2 evan1 evan1 19 Aug 9 10:10 evan2
drwxr-xr-x. 4 root root 30 Aug 8 15:48 evanlinux
drwxr-xr-x. 3 root root 17 Aug 8 14:45 evanlinux2
-rwx------. 1 root root 836 Aug 8 18:36 ks-script-R9kDZ_
-rw-r--r--. 1 root root 12 Aug 10 16:14 log
-rwxr-xr-x. 1 root root 117656 Aug 8 11:19 ls2
drwx------. 3 root root 17 Aug 12 08:47 systemd-private-0d5c9ec1ab594c4a9846d22b9e1c6e38-chronyd.service-VHrQvm
drwx------. 3 root root 17 Aug 12 08:47 systemd-private-0d5c9ec1ab594c4a9846d22b9e1c6e38-vgauthd.service-jqQ7rS
drwx------. 3 root root 17 Aug 12 08:47 systemd-private-0d5c9ec1ab594c4a9846d22b9e1c6e38-vmtoolsd.service-qxJEiR
drwxrwxrwx. 2 evan2 evan2 6 Aug 12 10:35 test
-rw-r--r--. 1 root evan1 0 Aug 8 15:41 test.txt
-rwxrwxrwx. 1 evan1 evan1 44 Aug 12 10:29 wenjian.txt
-rw-------. 1 root root 0 Aug 8 18:30 yum.log
[root@evan-01 tmp]# ln -s yum.log evan.log
[root@evan-01 tmp]# ls -l
total 132
-rw-r--r--. 1 root root 57 Aug 10 16:14 error
drw-r-xr--. 2 evan1 evan1 19 Aug 9 10:10 evan2
drwxr-xr-x. 4 root root 30 Aug 8 15:48 evanlinux
drwxr-xr-x. 3 root root 17 Aug 8 14:45 evanlinux2
lrwxrwxrwx. 1 root root 7 Aug 12 10:49 evan.log -> yum.log
-rwx------. 1 root root 836 Aug 8 18:36 ks-script-R9kDZ_
-rw-r--r--. 1 root root 12 Aug 10 16:14 log
-rwxr-xr-x. 1 root root 117656 Aug 8 11:19 ls2
drwx------. 3 root root 17 Aug 12 08:47 systemd-private-0d5c9ec1ab594c4a9846d22b9e1c6e38-chronyd.service-VHrQvm
drwx------. 3 root root 17 Aug 12 08:47 systemd-private-0d5c9ec1ab594c4a9846d22b9e1c6e38-vgauthd.service-jqQ7rS
drwx------. 3 root root 17 Aug 12 08:47 systemd-private-0d5c9ec1ab594c4a9846d22b9e1c6e38-vmtoolsd.service-qxJEiR
drwxrwxrwx. 2 evan2 evan2 6 Aug 12 10:35 test
-rw-r--r--. 1 root evan1 0 Aug 8 15:41 test.txt
-rwxrwxrwx. 1 evan1 evan1 44 Aug 12 10:29 wenjian.txt
-rw-------. 1 root root 0 Aug 8 18:30 yum.log
[root@evan-01 tmp]#
现在看来是没问题的,挺好。如果我们把evan.log移动一下位置,再来看看,还能不能生效
移动evan.log到别的目录
[root@evan-01 /]# cd /root
[root@evan-01 ~]# mkdir test2
[root@evan-01 tmp]# mv evan.log /root/test2/
[root@evan-01 tmp]# cd !$
cd /root/test2/
[root@evan-01 test2]# ll
total 0
lrwxrwxrwx. 1 root root 7 Aug 12 10:53 evan.log -> yum.log
[root@evan-01 test2]#
实际看yum.log一直在闪动,证明yum.log是不存在的。
为什么会有闪动提示?
因为当前 test2 目录下没有yum.log,软连接找不到源文件了,所以提示错误了。
我们在 test2,目录下touch 个yum.log,就会立即恢复正常
[root@evan-01 test2]# touch yum.log
[root@evan-01 test2]# ll
total 0
lrwxrwxrwx. 1 root root 7 Aug 12 10:53 evan.log -> yum.log
-rw-r--r--. 1 root root 0 Aug 12 10:57 yum.log
[root@evan-01 test2]#
做绝对路径的软链接
[root@evan-01 test2]# ls -l ../test/
total 4
lrwxrwxrwx. 1 root root 10 Aug 12 10:48 evan3 -> /tmp/evan2
lrwxrwxrwx. 1 root root 7 Aug 12 10:49 evan.log -> yum.log
-rw-r--r--. 1 root evan1 0 Aug 12 09:52 hahaha.txt
-rw-r--r--. 1 root root 0 Aug 12 09:56 heiheihei.txt
drwxr-sr-x. 2 root evan1 6 Aug 12 09:54 ok
drwxr-xr-x. 2 root root 6 Aug 12 09:58 okok
-rw-rw-r--. 1 root root 7 Aug 9 15:00 ok.txt
drwxrwxr--. 2 root root 19 Aug 9 14:55 one
lrwxrwxrwx. 1 root root 12 Aug 12 10:45 yum.log -> /tmp/yum.log
[root@evan-01 test2]# ll
total 0
lrwxrwxrwx. 1 root root 7 Aug 12 10:53 evan.log -> yum.log
-rw-r--r--. 1 root root 0 Aug 12 10:57 yum.log
[root@evan-01 test2]# rm -rf yum.log
[root@evan-01 test2]# mv ../test/yum.log ./
[root@evan-01 test2]# ll
total 0
lrwxrwxrwx. 1 root root 7 Aug 12 10:53 evan.log -> yum.log
lrwxrwxrwx. 1 root root 12 Aug 12 10:45 yum.log -> /tmp/yum.log
[root@evan-01 test2]#
用软链接解决工作中的小问题
问题描述:在/boot目录下有一个evan.log 日志,这个日志不断在往里面写,以至于200M的空间都已经满了,但是还在往里面写,怎么办?我们能不能把写的日志放到其他的分区呢,当然可以,前提是我们不能动这个日志的路径,改了路径这个服务就会出问题
查看磁盘分区
[root@evan-01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1013M 16G 6% /
devtmpfs 482M 0 482M 0% /dev
tmpfs 493M 0 493M 0% /dev/shm
tmpfs 493M 6.8M 486M 2% /run
tmpfs 493M 0 493M 0% /sys/fs/cgroup
/dev/sda1 1014M 125M 890M 13% /boot
tmpfs 99M 0 99M 0% /run/user/0
[root@evan-01 ~]#
方法
把boot目录下的evan.log复制到/
# cp /boot/evan.log /evan.log
删除boot目录下的evan.log
# rm /boot/evan.log
给根目录下的evan.log做了软链接到boot/
# ln -s /evan.log /boot/evan.log