“ls - люфтганза” сообщает общий размер о меньше, чем сумма отдельных размеров

Я не думаю, что существует что-либо, что необходимо сделать специально для приложений Java, но действительно необходимо сделать что-то для приложений для GUI в целом.

Я сделал это на своем домашнем компьютере, но я не дома прямо сейчас, так терпите меня. У меня есть сценарий, который монтирует все в мой chroot как /dev и /proc, но это также копирует ~/.X* также. Если я помню правильно, в Вашей домашней папке существуют файлы, которые запускаются с .Xauth, и Вы копируете тех, которые в домашнюю папку Вашей chroot среды. По моему опыту, эти файлы должны быть скопированы каждый раз, когда X перезапущен.

То, что я сделал бы для проверения этого метода, было, я только что запустил простое X приложений как xterm. Это было просто быстрое и простое приложение, с которым я мог протестировать. xterm должен дать Вам сообщение об ошибке, если оно не может соединиться с X-сервером.

У меня, оказывается, есть полный пакет X11, установленный в мой chroot, но я не знаю достаточно приблизительно X, чтобы знать, работают ли chroot'd приложения на chroot'd X-сервере или на X-сервере хоста.

14
09.03.2012, 01:25
3 ответа

Это произойдет, если у Вас будут редкие файлы:

$ mkdir test; cd test
$ truncate -s 1000000000 file-with-zeroes
$ ls -l
total 0
-rw-r--r-- 1 gim gim 1000000000 03-08 22:18 file-with-zeroes

Редкий файл является файлом, который не был заполнен с блоками файловой системы (или только частично). При чтении ненаселенной зоны редкого файла, Вы получите нули. Такие пустые зоны не требуют пространства фактической дисковой емкости и 'общего количества', о котором сообщают ls соответствует дисковому пространству, занятому файлами (точно так же, как du).

20
27.01.2020, 19:50
  • 1
    Ваши kvm образы дисков, вероятно, полны дыр :-) –  Stéphane Gimenez 08.03.2012, 23:36
  • 2
    В coreutils документации говорится что -s/--size опция "Print the disk allocation of each file to the left of the file name. This is the amount of disk space used by the file, which is usually a bit more than the file's size, but it can be less if the file has holes". -l опция, конечно, печатает размер, также. –  Francesco Turco 21.09.2012, 15:45

Обратите внимание на то, что вывод, данный ls -l и du имеет тонкое, но очень важное различие. Попробуйте это:

dd if=/dev/urandom of=aaa bs=1024 count=1

Теперь

ls -l aaa
-rw-r--r-- 1 abc abc 1024 2012-03-08 15:45 aaa

Принимая во внимание, что

du -h aaa
4.0K    aaa

Это вызвано тем, что файловая система выделяет размер в блоках 4 096 (на моем поле Linux). Это называют Блоком IO. Вы видите это:

    stat aaa
  File: `aaa'
  Size: 1024        Blocks: 8          IO Block: 4096   regular file
2
27.01.2020, 19:50
  • 1
    Кроме того, можно попробовать stat на моем предложенном empty-file, и Вы будете видеть, что количество Блоков 0, даже если файл, как сообщают, имеет размер 1G. –  Stéphane Gimenez 09.03.2012, 02:17
  • 2
    @StéphaneGimenez, Почему это сообщает о Блоках как 8 хотя? Какой блок - это с размером 512 байтов? –  Ankur Agarwal 09.03.2012, 03:18
  • 3
    Это немного странно В прежние времена, блоки IO имели размер 512, но теперь они обычно 4K. stat сообщает, что эквивалентное количество старого размерного блока должно было сохранить все 4K блоки (который является 8 раз вещественным числом 4K блоков). –  Stéphane Gimenez 09.03.2012, 11:21

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

du --apparent-size

печатать видимые размеры, а не использование диска; хотя видимый размер обычно меньше, он может быть больше из-за дыр в («разреженных») файлах, внутренней фрагментации, косвенных блоков и т.п.

2
27.01.2020, 19:50

Теги

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