用绝对路径列出目录的内容不等于用相对路径列出吗?

用绝对路径列出目录的内容不等于用相对路径列出吗?

我使用它的 API(使用 Python 和 Boto)在 AWS 中启动了 Ubuntu 14.01 实例。

我改变了根设备的属性 - 30GB 而不是默认的 8gb,并且使用磁盘standard而不是通用的 ssd gp2

启动完成后,我发现/etc/resolv.conf符号链接(-> ../run/resolvconf/resolv.conf)似乎已损坏。

然后发生了这样的事情:

root@ip-10-246-135-238:/etc# pwd
/etc
root@ip-10-246-135-238:/etc# ls ../run
udev
root@ip-10-246-135-238:/etc# ls /run
acpid.pid     atd.pid     crond.pid     dbus               initramfs  motd.dynamic       network                     plymouth   resolvconf    screen           shm   sshd.pid  udev                     upstart-socket-bridge.pid  user
acpid.socket  cloud-init  crond.reboot  dhclient.eth0.pid  lock       mount              network-interface-security  pppconfig  rsyslogd.pid  sendsigs.omit.d  sshd  systemd   upstart-file-bridge.pid  upstart-udev-bridge.pid    utmp

此环境不再可用,因此我无法运行任何其他调试命令,但也许有人可以向我解释这里发生了什么?首先,这怎么可能呢?

答案1

我能想到的唯一解释是,你是/etc通过符号链接访问的,所以../实际上不是/,而是别的东西。例如:

$ tree ~/testdir
/home/terdon/testdir
├── bar
└── foo
    └── bar -> ../bar/

3 directories, 0 files

在上面的例子中,foo/bar是 的链接./bar。现在,考虑一下:

$ cd foo/bar
$ pwd
/home/terdon/testdir/foo/bar ## Note that the path follows the link
$ ls ../
bar  foo

如上所示,ls ../列出了 的内容~/testdir,而不是。因此,如果通过链接~/testdir/foo访问,将是链接的父目录,而不是其本身的父目录。/etc..//etc

我不知道这个链接是什么。我在我的 Ubuntu VM 中没有看到任何可能的候选者,run/udev我找到的唯一实例就是/run它本身。不过,如果你描述的情况如你所展示的那样发生,而且这不仅仅是一些奇怪的错误,那么你可能在链接目录中的某个地方。

答案2

重新阅读终端输出后我找到了答案:

root@ip-10-246-135-238:/etc# mount -v
/dev/xvda1 on / type ext4 (rw)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/cgroup type tmpfs (rw)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
none on /run/user type tmpfs (rw,noexec,nosuid,nodev,size=104857600,mode=0755)
none on /sys/fs/pstore type pstore (rw)
systemd on /sys/fs/cgroup/systemd type cgroup (rw,noexec,nosuid,nodev,none,name=systemd)
/dev/xvdb on /mnt type ext3 (rw,_netdev)
/dev/xvdf on / type ext4 (rw)
/dev/xvdf on /mnt/image type ext4 (rw)

我的代码中实际上有一个愚蠢的/dev/xvdf错误/

相关内容