Понимание обходов символьных ссылок каталога и родительского каталога

Хорошей вещью о Linux является источник, всегда где-нибудь. Можно загрузить или просмотреть основу e2fsprogs источники на kernel.org. Это может также зависеть от Вашей определенной версии и распределения хотя...

Из текущего кода похоже, что это - некоторое значение, добавленное к 20 на основе UUID раздела, если Вы имеете enable_periodic_fsck = 1 в Вашем mke2fs.conf

mke2fs.c

if (get_bool_from_profile(fs_types, "enable_periodic_fsck", 0)) {
    fs->super->s_checkinterval = EXT2_DFL_CHECKINTERVAL;
    fs->super->s_max_mnt_count = EXT2_DFL_MAX_MNT_COUNT;
    /*
     * Add "jitter" to the superblock's check interval so that we
     * don't check all the filesystems at the same time.  We use a
     * kludgy hack of using the UUID to derive a random jitter value
     */
     for (i = 0, val = 0 ; i < sizeof(fs->super->s_uuid); i++)
         val += fs->super->s_uuid[i];
     fs->super->s_max_mnt_count += val % EXT2_DFL_MAX_MNT_COUNT;
 } else
     fs->super->s_max_mnt_count = -1;

mke2fs.h

:#define EXT2_DFL_MAX_MNT_COUNT              20

Всегда хороший для наблюдения 'топорных' слов и 'взлом' в коде =)

8
26.08.2018, 05:32
1 ответ

Я бы предпочел вызвать sed только один раз, затем в каждой итерации строки. Если вы хотите изменить исходный файл, вы можете добавить опцию -i ( --по месту ) в sed .

unset n
while read -r line; do
  echo $line
  : $((n++))
done < myfile.txt
sed "1,$n d" myfile.txt
-121--65125-

То, как вы это делаете, с сжатием файла .tar ответ точно нет.

Что бы вы ни использовали для сжатия файла .tar , он не знает о содержимом файла, он просто видит двоичный поток, и являются ли части этого потока несжатыми или минимально сжимаемыми, нет пути это известно. Не путайте с параметрами команды tar для выполнения сжатия, tar --create --xz --file some.tar file1 так же «тупо», как и знание содержимого потока, как tar --create file1 | xz > some.tar .

Вы можете делать несколько вещей:

  1. вы переключаетесь на какой-то формат контейнера, отличный от .tar , который позволяет сжимать на индивидуальной основе, но это неблагоприятно, если у вас много небольших файлов в одном каталоге, которые имеют похожие узоры (так как они сжимаются по отдельности). Формат застежки -молнии является примером, который может работать.
  2. Вы сжимаете файлы, если необходимо, прежде чем поместить их в файл tar. Это может быть сделано прозрачно, например, с модулями python tarfile и bzip2 . Это также имеет недостатки пункта 1. И нет прямого извлечения из tar-файла, так как некоторые файлы выйдут сжатыми, которые могут не нуждаться в декомпрессии (так как уже были сжаты до резервного копирования).
  3. Используйте смолу как есть и живите с тем, что это происходит, и выберите не столь высокое сжатие для gzip / bzip2 / xz , чтобы они не пытались слишком сильно сжать поток, тем самым не тратя время на попытку получить другое сжатие 0,5%, которое не произойдет.

Вы можете посмотреть на результаты параллельного сжатия xz (не относящиеся к tar-файлам), чтобы увидеть некоторые результаты попытки ускорить xz , опубликованные в моем блоге

-121--99196-

bash «знает» о symlinks и отслеживает эту информацию, когда вы используете symlink для ввода

Это можно проверить, выполнив следующие действия в примере:

$ cd /dir2
$ cd linked
$ pwd
/dir2/linked
$ PWD='' bash -c pwd
/dir1

Необходимо запустить bash с пустой переменной PWD , в противном случае этот трюк используется для отображения «фальшивого» пути.

Обратите внимание, что ls является отдельной программой и как таковой не обладает знаниями о том, как вы прибыли в текущий каталог, поэтому ls.. будет только показывать содержимое реального родительского каталога, а не относительно используемой symlink.

Большинство программ не зависит от переменной среды CWD , поскольку существует множество способов запуска программ,через bash shell только один, так что это не надежно ожидать, что CWD содержит правильное значение (попробуйте установить CWD на что-то неправильное, прежде чем делать bash -c pwd , вы можете видеть, что он проверяет значение на здравомыслие).

5
27.01.2020, 20:12

Теги

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