Intereting Posts
Arch Linux – make: ошибка при загрузке разделяемых библиотек: libunistring Запускать ssh-agent 24/7 с помощью брелка? Проблема при попытке перекрестного компиляции драйвера Ethernet в старом ядре Linux Мониторинг устройств cisco от linux или windows? Какова информация, присутствующая в дампе ядра ядра как удалить многострочную строку / блок текстового шаблона из файла? Загрузка с acpi_osi = Linux исправляет управление вентилятором, но разрывает клавиши яркости Как запустить SSD trim fstrim на btrfs при установке нескольких подвоев? Не удается найти основной дамп из-за прерывания из-за ошибки seg на Linux с изображения докеров Как установить minecraft Forge? Поддержка H.264 в Firefox (Iceweasel) 24 Прочитайте строку из файла, манипулируйте, а затем добавьте в другой файл Команда SED не заменяет (работает регулярное выражение) Данные о трубах от подключения сокета TCP к терминалу Как запустить приложение в другом рабочем пространстве?

Почему файлы компакт-дисков не отображаются при монтировании в текущем каталоге?

При установке образа диска в текущем каталоге, используя:

sudo mount -o loop -t iso9660 wall.iso ./ 

Листинг файлов в текущем каталоге возвращает только wall.iso.
Чтобы просмотреть фактические файлы на образ диска, я должен сначала извлечь из него каталог, а затем вернуться в него.

Примечание: если я уже знал wall.iso, то подсчитал каталог под названием subdir , даже жесткие ls не указали каталог, в котором я уже мог бы cd subdir .

Почему я не возвращаю файлы, когда я впервые назову это? Чтение ls из кеша, которое обновляется только при смене каталога?

Это потому, что вы находитесь в каталоге, в который вы входите. Таким образом, вы все еще ссылаетесь на содержимое исходного каталога через исходный каталог.

Вы можете увидеть этот точный эффект, когда вы находитесь в каталоге, который затем удален.

 $ pwd /home/saml/dirtodel $ rmdir ../dirtodel $ pwd /home/saml/dirtodel 

Как это может быть? Я все еще в директории, которая была просто удалена. Что происходит?

В оболочке, которая по-прежнему является cd /home/saml/dirtodel , запустите эту команду, чтобы узнать идентификатор PID (идентификатор процесса) для его сеанса bash:

 $ echo $$ 32619 

Теперь, если вы войдете в каталог PID / proc, мы увидим, что происходит:

 $ ls -l /proc/32619/ | head -10 total 0 dr-xr-xr-x 2 saml saml 0 May 18 07:40 attr -r-------- 1 saml saml 0 May 18 07:40 auxv -r--r--r-- 1 saml saml 0 May 18 07:40 cgroup --w------- 1 saml saml 0 May 18 07:40 clear_refs -r--r--r-- 1 saml saml 0 May 18 02:06 cmdline -rw-r--r-- 1 saml saml 0 May 18 07:40 comm -rw-r--r-- 1 saml saml 0 May 18 07:40 coredump_filter -r--r--r-- 1 saml saml 0 May 18 07:40 cpuset lrwxrwxrwx 1 saml saml 0 May 18 07:31 cwd -> /home/saml/dirtodel (deleted) 

Перечисляя первые несколько файлов, мы видим один из них cwd , который обозначает текущий рабочий каталог. Обратите внимание, что это указывает на наше старое имя и что оно «удалено».

Итак, это дает нам небольшое представление о том, что происходит, но где мы?

Интересно, если мы cd /proc/32619/cwd мы сможем поменять каталоги на это волшебное место. Если мы запустим df . мы видим, что мы все еще находимся в /home разделе:

 $ pwd /proc/32619/cwd [saml@grinchy cwd]$ df -h . Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_grinchy-lv_home 245G 125G 108G 54% /home 

Так, что происходит?

Несмотря на то, что наш каталог удален, inode, который его создает, не был. Вы можете увидеть это с помощью команды stat . В оболочке, которая все еще находится внутри каталога, который мы удалили:

 $ stat . File: `.' Size: 0 Blocks: 8 IO Block: 4096 directory Device: fd02h/64770d Inode: 10486487 Links: 0 Access: (0775/drwxrwxr-x) Uid: ( 500/ saml) Gid: ( 501/ saml) Access: 2013-05-18 07:48:52.674081972 -0400 Modify: 2013-05-18 07:48:44.378900038 -0400 Change: 2013-05-18 07:50:54.189747426 -0400 

Мы видим, что все еще используется inode, 10486487, но мы заметили, что он имеет 0 ссылок. Это то, что происходит, когда что-то удаляется. Все ссылки на него удаляются, поэтому ОС может удалить этот двоичный индекс.