Множественные >> перенаправления в один и тот же файл двумя сценариями, прерывание в середине предложения

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

По большей части сравнение представляет собой лексикографическое сравнение последовательности. Например, 1foo сортируется перед 1 ga . Однако последовательности цифр сравниваются в числовом порядке, поэтому foo10bar сортируется после foo9bar .

При лексикографическом порядке последовательность всегда сортируется перед ее префиксом. Символ тильды допускает отклонение от этого: foo _ bar всегда сортируется перед foo , а также перед любой версией, которая начинается с foo , за которой следует символ, отличный от ~ . Это часто используется для бета-версий: 8u60 ~ b22 сортируется перед 8u60 . Не знаю, почему пакеты OpenJDK 8 чередуются между суффиксами -b и ~ b .

Суффиксы Tilde также используются для бэкпортов всех типов. Например, если одна и та же версия пакета присутствует как в Debian stable, так и в тестировании, и исправление безопасности должно войти в stable, то пакет в stable будет иметь суффикс, как -2 ~ deb1 , в то время как версия в тестировании (скомпилированная по более поздним библиотекам) будет иметь -2 ; что путь пакет является модернизацией к версии -1 , но если система будет обновлена со стабильной до тестовой, стабильная версия -2 ~ deb1 будет обновлена до тестовой версии -2 . Официальные бэкпорты используют ~ bpo NUMBER для той же цели, таким образом, версия 4.2 ~ bpo7 будет обновлена до 4.2 , если она появится в основном выпуске.

-121--49133-

Если по какой-либо причине необходимо прочитать блочное устройство, используя размер блока 16K:

dd if=/mnt/nfs bs=16k | pv -L  > /dev/sda

Где - максимально допустимое количество байтов в секунду, которое должно быть передано, или максимально допустимое количество кибибайт, мибайт, гибайт, [...] в секунду, которое должно быть передано, если K, M

Однако если вам действительно не нужно читать файл, используя размер блока 16K, просто используйте pv , который может читать блочные устройства:

pv -L  /mnt/nfs > /dev/sda

-121--174400-

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

pv -L 1m /dev/sda

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

Примечание: эта команда имеет смысл, если /tmp/nfs является образом диска и вы хотите записать его на диск /dev/sda .Это эквивалентно команде в вашем вопросе, кроме ограничения скорости. Возможно, сервер NFS не задействован.

1
15.03.2018, 15:30
1 ответ

Есть два очевидных способа решить эту проблему:

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

  2. Используйте рекомендательную схему блокировки, чтобы заблокировать операцию записи задач таким образом, чтобы только одна задача могла писать одновременно. См. вопросы с тегами и .

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

2
27.01.2020, 23:32

Теги

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