Unix: ".." не указывает на родителя -- как это возможно?

timeесть что-то для этого:

nohup time -o runtime.out./main &> /dev/null &

Если бы это было написано в сценарии и не требовало tty, я бы предпочел использовать setsid, а не nohup + &, потому что он лучше "демонизирует" и при необходимости может послать сигнал HUP.

setsid time -o runtime.out./main /dev/null

Также обратите внимание, что здесь (, как и в вопросе OP )time, это /usr/bin/time, который имеет формат вывода, отличный от встроенной команды bash time. Похоже, что /usr/bin/time --portabilityдает аналогичный результат, если это необходимо.

1
20.04.2020, 10:00
2 ответа

Позвольте мне дать реальный ответ на исходный вопрос и объяснить, как создать такое состояние:

mkfile 100m ufs
lofiadm -a /path/to/ufs
newfs /dev/rlofi/1
newfs: Neues Dateisystem /dev/rlofi/1 erstellen: (y/n)? y
/dev/rlofi/1:   204600 Sektoren in 341 Zylindern von 1 Spuren, 600 Sektoren
        99,9MB in 22 Zylindergruppen (16 c/g, 4,69MB/g, 2240 i/g)
Superblock Backups (für fsck -F ufs -o b=#) bei:
 32, 9632, 19232, 28832, 38432, 48032, 57632, 67232, 76832, 86432,
 115232, 124832, 134432, 144032, 153632, 163232, 172832, 182432, 192032, 201632

mount /dev/lofi/1 /mnt
cd /mnt
mkdir -p a/b/c d

ls -lid a/b/ a/b/c a/b/c/..
     5 drwxr-xr-x   3 root     root         512 Apr 20 17:05 a/b/
     6 drwxr-xr-x   2 root     root         512 Apr 20 17:05 a/b/c
     5 drwxr-xr-x   3 root     root         512 Apr 20 17:05 a/b/c/..

link a/b/c/ d/hlink
ls -lid a/b/ a/b/c a/b/c/.. d/ d/hlink/ d/hlink/..
     5 drwxr-xr-x   3 root     root         512 Apr 20 17:05 a/b/
     6 drwxr-xr-x   3 root     root         512 Apr 20 17:05 a/b/c
     5 drwxr-xr-x   3 root     root         512 Apr 20 17:05 a/b/c/..
     7 drwxr-xr-x   2 root     root         512 Apr 20 17:08 d/
     6 drwxr-xr-x   3 root     root         512 Apr 20 17:05 d/hlink/
     5 drwxr-xr-x   3 root     root         512 Apr 20 17:05 d/hlink/..

Это создает тестовую файловую систему ufs в файле, который затем используется в качестве блочного устройства с помощьюlofi(7d)«драйвера файла обратной связи» (см. fbkпримечание ниже )и монтируется в каталог /mnt. Файловая система ufs (в отличие от zfs )также поддерживает создание жестких ссылок на каталоги, но только от root.

Как видите, номер инода для a/b/равен 5, и номер инода of a/b/c/..тоже равен 5. Вы также видите, что количество ссылок для каталога a/b/c увеличилось на единицу после вызова link.

После создания нового жестко связанного каталога d/hlinkвы видите, что номер инода для d/hlink/..равен не 7 (номеру инода каталога выше ), а 5 (номеру инода для исходный каталог над этим каталогом ).

Кстати, :файловая система loopbackвпервые появилась в 1987 году в SunOS -4.0. Его цель - действовать как косвенный уровень VFS, который позволяет монтировать дерево файловой системы во второй раз на той же машине. Я не уверен, является ли это монтирование Linux повторной реализацией идеи петлевой файловой системы.

Очевидно то, что файлfbkдрайвера (, эмулирующий блочное устройство ), изобретенное мной в октябре 1988 года, было повторно реализовано в середине -1990-х годов на Linux под неправильным именем loopback.

3
19.03.2021, 02:27

Если исходить из того, что простейшая возможность является наиболее вероятной:

I do know that other people were moving directories around and renaming them, though I don't know exactly what they did.

, то сценарий должен быть относительно простым для воспроизведения. Рассмотрим этот пример, запущенный с подсказками 1$для первого терминала, перемежающимися с 2$для второго

.
# Set up the scenario
1$ mkdir a a/b a/b/c d
1$ cd a/b/c

# Look at the parent inode
1$ ls -lid..
143279 drwxr-xr-x 3 roaima roaima 4096 Apr 20 08:42..

# Second session changes the directory structure
2$ mv a/b/c d

# Look at the parent inode once more - notice it's changed
1$ ls -lid..
142603 drwxr-xr-x 3 roaima roaima 4096 Apr 20 08:43
0
19.03.2021, 02:27

Теги

Похожие вопросы