Почему du -h / du / df / df -h не освежает при извлечении большого файла

Во-первых, следует отметить, что существует более одной программы под названием man2html.

Одна утилита под названием man2html - это программа на языке Си, изначально написанная в конце 1990-х годов Ричардом Верхувеном в Эйндховенском технологическом университете. Программа имеет существенно причудливую внутреннюю структуру. Однако ее преимущество в том, что она работает с исходным текстом страницы man, а не с troff или nroff. Эта программа была добавлена в пакет man Фредерико Лучифреди.

Программа понимает семантику макросов man и mandoc и выводит разумную структуру HTML. Например, когда вы используете абзацы с отступами, как здесь:

.IP word
Definition of
word.
.RS

программа выдаст список определений HTML.

Я поддерживаю одну очень большую man-страницу (более мегабайта исходного текста и почти 400 страниц, преобразованных в PDF размером с букву groff):

$ ls -l txr.1
-rw-rw-r-- 1 kaz kaz 980549 Jan  3 11:38 txr.1

Когда мне понадобилось преобразовать ее в HTML, около пяти лет назад, единственное, что я нашел, что делало разумную работу, была man2html программа на Си, плюс постобработка ее вывода, чтобы "приправить по вкусу".

В конце концов, мне захотелось получить HTML-документ гораздо лучшего качества, поэтому я начал писать troff макросы. Ограничения программы на C стали болезненно очевидными, поэтому я сделал форк. На моем сайте git вы можете найти git-репо с 30 исправлениями к man2html. Эти исправления исправляют ряд ошибок и улучшают программу, позволяя интерпретировать макросы troff, условия, циклы и другие конструкции. Я также добавил регистр M2, с помощью которого можно написать код, определяющий, что он запущен под man2html и может условно делать некоторые вещи по-другому (прокрутите вниз для примера). Кроме того, я добавил команду .M2SS, которая позволяет создавать пользовательский раздел заголовка HTML.

Моя большая manpage размещена здесь. Она создана с помощью man2html и обработана моей программой genman.txr , которая переставляет разделы и добавляет гиперссылки по всему документу. Она также переписывает внутренние ссылки в оглавлении на стабильные URL (основанные на хэшировании, а не на произвольном перечислении) и делает оглавление сворачиваемым с помощью Javascript.

Точные команды, используемые моим Makefile:

man2html txr.1 | ./txr genman.txr - > txr-manpage.html
tbl txr.1 | pdfroff -man --no-toc - > txr-manpage.pdf

Для примера того, как условно отличается вывод HTML и nroff, мы можем посмотреть на раздел вывода man:

       9.19.4 Macro defstruct

       Syntax:

                (defstruct { | ( *)} 
                   *)

              The  defstruct  macro defines a new structure type and registers
              it under , which must be a bindable symbol,  according  to
              the  bindable  function. Likewise, the name of every  must
              also be a bindable symbol.

Выше, обратите внимание, как параметры обозначаются в . В HTML-версии они обозначены курсивом.

Раздел синтаксиса появляется в исходном коде следующим образом:

.coNP Macro @ defstruct
.synb
.mets (defstruct >> { name | >> ( name << arg *)} < super
.mets \ \  << slot-specifier *)
.syne

это все пользовательские макросы, определенные в одном документе. В разделе .mets, означает, что b является метасинтаксической переменной. >> a b означает, что a - это конкретный синтаксис, рядом с которым находится метасинтаксический b без промежуточного пространства, а a b c означает, что b - это метасинтаксис, сжатый между литералами a и c.

Моя улучшенная версия man2html понимает довольно сложный макрос, реализующий эти соглашения о разметке.

Также обратите внимание, как в руководстве автоматически нумеруются разделы: это все сделано кодом troff, который man2html понимает.

3
12.12.2018, 10:37
1 ответ

Вероятно, данные еще не были записаны на диск, но все еще находятся в кэше страниц ("грязные страницы" ). Свяжитесь с

grep Dirty /proc/meminfo

Вы можете попробовать запустить syncперед df/ du. Это должно заставить любые данные в кэше страниц записываться на диск.

1
27.01.2020, 21:29

Теги

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