记录:352
场景:在CentOS 7.9操作系统上,使用ln命令创建软链接(symbolic links)和硬链接(hard links)。解决:Too many levels of symbolic links。
版本:
操作系统:CentOS 7.9
1.命令应用
(1)目录创建软链接
命令:ln -s /home/apps/module/jdk1.8.0_281 /usr/java/default
解析:ln -s,创建软链接;目录/usr/java/default是软链接,指向/home/apps/module/jdk1.8.0_281目录;许多软件找jdk会到默认目录:/usr/java/default读取jdk相关数据;创建软链接后,自定义安装目录就满足了需求。创建软链接会有->符号标识。
(2)文件创建软链
命令:ln -s /home/apps/work01/aintro.txt /home/apps/work02/aintro.txt
解析:创建文件软链接,/home/apps/work01/aintro.txt是源文件;另一个是软链接。
(3)创建硬链接
命令:ln -P /home/apps/work01/bintro.txt /home/apps/work02/bintro.txt
解析:创建文件硬链接,/home/apps/work01/bintro.txt是源文件,另一个是硬链接。
2.解决报错
(1)问题一:Too many levels of symbolic links
问题原因:在/home/apps/work01目录下创建软链接,没有使用完整路径。
执行的命令:ln -s cintro.txt /home/apps/work02/cintro.txt
使用cat命令:cat cintro.txt,读取文件报错,读取不了文件。
解决:先删除有问题的软链接,再重新创建软链接。
删除命令:rm -rf /home/apps/work02/cintro.txt
重新创建命令:ln -s /home/apps/work01/cintro.txt /home/apps/work02/cintro.txt
2.命令帮助手册
命令:ln --help
解析:查看ln支持的全部命令和选项,在实际工作中,查看这个手册应该是必备之选。
Usage: ln [OPTION]... [-T] TARGET LINK_NAME (1st form)
or: ln [OPTION]... TARGET (2nd form)
or: ln [OPTION]... TARGET... DIRECTORY (3rd form)
or: ln [OPTION]... -t DIRECTORY TARGET... (4th form)
In the 1st form, create a link to TARGET with the name LINK_NAME.
In the 2nd form, create a link to TARGET in the current directory.
In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.
Create hard links by default, symbolic links with --symbolic.
By default, each destination (name of new link) should not already exist.
When creating hard links, each TARGET must exist. Symbolic links
can hold arbitrary text; if later resolved, a relative link is
interpreted in relation to its parent directory.
Mandatory arguments to long options are mandatory for short options too.
--backup[=CONTROL] make a backup of each existing destination file
-b like --backup but does not accept an argument
-d, -F, --directory allow the superuser to attempt to hard link
directories (note: will probably fail due to
system restrictions, even for the superuser)
-f, --force remove existing destination files
-i, --interactive prompt whether to remove destinations
-L, --logical dereference TARGETs that are symbolic links
-n, --no-dereference treat LINK_NAME as a normal file if
it is a symbolic link to a directory
-P, --physical make hard links directly to symbolic links
-r, --relative create symbolic links relative to link location
-s, --symbolic make symbolic links instead of hard links
-S, --suffix=SUFFIX override the usual backup suffix
-t, --target-directory=DIRECTORY specify the DIRECTORY in which to create
the links
-T, --no-target-directory treat LINK_NAME as a normal file always
-v, --verbose print name of each linked file
--help display this help and exit
--version output version information and exit
The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.
The version control method may be selected via the --backup option or through
the VERSION_CONTROL environment variable. Here are the values:
none, off never make backups (even if --backup is given)
numbered, t make numbered backups
existing, nil numbered if numbered backups exist, simple otherwise
simple, never always make simple backups
Using -s ignores -L and -P. Otherwise, the last option specified controls
behavior when a TARGET is a symbolic link, defaulting to -P.
GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
For complete documentation, run: info coreutils 'ln invocation'
以上,感谢。
2022年11月28日