Hyp*_*ube 5 linux filesystems symlink files
我有一个以前指向 Dropbox 目录的符号链接。我不知道我做错了什么,但显然现在它指向了自己。
hyper@mypi:/home/hyper/test$ ls -l
total 1024
lrwxrwxrwx 1 hyper hyper 7 Feb 15 2013 Dropbox -> Dropbox
Run Code Online (Sandbox Code Playgroud)
当我尝试删除链接时,我得到:
hyper@mypi:/home/hyper/test$ rm Dropbox
rm: cannot remove ‘Dropbox’: Not a directory
Run Code Online (Sandbox Code Playgroud)
我还能尝试什么来摆脱这个链接?
strace rm Dropbox 的部分输出:
close(3) = 0
ioctl(0, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
newfstatat(AT_FDCWD, "Dropbox", {st_mode=S_IFLNK|0777, st_size=7, ...}, AT_SYMLINK_NOFOLLOW) = 0
geteuid() = 1000
newfstatat(AT_FDCWD, "Dropbox", {st_mode=S_IFLNK|0777, st_size=7, ...}, AT_SYMLINK_NOFOLLOW) = 0
unlinkat(AT_FDCWD, "Dropbox", 0) = -1 ENOTDIR (Not a directory)
open("/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=2570, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7ce00fc000
read(3, "# Locale name alias data base.\n#"..., 4096) = 2570
read(3, "", 4096) = 0
close(3) = 0
munmap(0x7f7ce00fc000, 4096) = 0
open("/usr/share/locale/en_US/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/en_US/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/en/LC_MESSAGES/coreutils.mo", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=619, ...}) = 0
mmap(NULL, 619, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f7ce00fc000
close(3) = 0
open("/usr/lib/charset.alias", O_RDONLY|O_NOFOLLOW) = -1 ENOENT (No such file or directory)
write(2, "rm: ", 4rm: ) = 4
write(2, "cannot remove \342\200\230Dropbox\342\200\231", 27cannot remove ‘Dropbox’) = 27
open("/usr/share/locale/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
write(2, ": Not a directory", 17: Not a directory) = 17
write(2, "\n", 1
) = 1
lseek(0, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
close(0) = 0
close(1) = 0
close(2) = 0
exit_group(1) = ?
+++ exited with 1 +++
Run Code Online (Sandbox Code Playgroud)
错误消息不是指符号链接,而是指当前目录!
男人2取消链接:
Run Code Online (Sandbox Code Playgroud)int unlinkat(int dirfd, const char *pathname, int flags);
错误
伊诺迪尔
路径名是相对的,dirfd 是一个文件描述符,指的是目录以外的文件。
因此,您应该cd
至少上一级并查看该目录。它是否已被删除或类似的情况(当它是进程的 CWD 时通常不可能)。
归档时间: |
|
查看次数: |
3163 次 |
最近记录: |