![用绝对路径列出目录的内容不等于用相对路径列出吗?](https://linux22.com/image/1433900/%E7%94%A8%E7%BB%9D%E5%AF%B9%E8%B7%AF%E5%BE%84%E5%88%97%E5%87%BA%E7%9B%AE%E5%BD%95%E7%9A%84%E5%86%85%E5%AE%B9%E4%B8%8D%E7%AD%89%E4%BA%8E%E7%94%A8%E7%9B%B8%E5%AF%B9%E8%B7%AF%E5%BE%84%E5%88%97%E5%87%BA%E5%90%97%EF%BC%9F.png)
我使用它的 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
错误/
。