zfs отправляют, объем колеблется загадочно

Вы уверены, что получили право makedev? Я нашел несколько версий makedev:

  • Одно доступное по sunsite.unc.edu, который упоминает учебное руководство. Существует makedev-1.6.1, который записан в C и makedev-2.2, который является сценарием оболочки.
  • makedev-20110824 (Google приводят меня к этому проекту SourceForge). Казалось бы, что это не сохраняется очень.

Что касается gimp-tool вызов, похоже, что автор makedev-20110824 хотел 'значок', чей исходный (в калеке формат XCF) был преобразован в png во время make. Я не понимаю, почему автор поместил бы значок для системной утилиты как makedev, который вряд ли будет запущен от настольной среды.

Кроме того, я хотел бы Вас к контролю Linux С нуля, рассматривая Ваш интерес к учебному руководству. То учебное руководство довольно старо (2000), и Вы могли бы столкнуться со многими проблемами, соединяющими части (который мог бы быть хорошей вещью, если Вы наслаждаетесь им).

2
04.03.2013, 12:41
1 ответ

Не использовать dd с каналами. dd низкий уровень. Это - интерфейс к read и write системные вызовы.

Когда Вы делаете a dd bs=1024 count=1, это делает a read(0, buf, 1024).

Если read возвраты меньше данных, чем 1 024 байта (например, потому что канал только содержит 200 байтов в данный момент), dd не повторно попытается read для получения недостающих 824 байтов это сообщит о неполном чтении блока в конце (часть после +). То же самое может произойти при записи также.

Вот почему опасно использовать dd на каналах как, если Вы не можете гарантировать, что запись процессов или чтение в канал делают так в суммах, которые пропорциональны размеру блока и являются делителями к размеру канала, нет никакой гарантии, что Вы получите полные блоки.

(echo AAAA; sleep 1; echo BBBBBB) | dd bs=3 > /dev/null
3+2 records in
3+2 records out

Это не слишком большая проблема здесь, поскольку мы просто пишем то, что мы читаем, но это может быть более проблематично, например, при определении a count.

GNU dd имеет -iflag fullblock работать вокруг этого:

$ (echo AAAA; sleep 1; echo BBBBBB) | dd bs=3 iflag=fullblock > /dev/null
4+0 records in
4+0 records out
12 bytes (12 B) copied, 1.00068 s, 0.0 kB/s
2
27.01.2020, 22:14

Теги

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