Какова цель «|| true» в.bashrc Tumbleweed?

Когда впервые появились твердотельные накопители, существовало распространенное заблуждение, что твердотельные накопители всегда быстрее жестких дисков. Это было совсем не так — даже в те времена с жестким диском можно было легко сделать 125+ МБ/с, единственным требованием было выполнение последовательного чтения или записи. Напротив, последовательная запись на исходные твердотельные накопители часто была медленнее, и скорость чтения также часто не впечатляла.

Короче говоря, :ваш dd тестирует последовательную пропускную способность, тогда как ваш nginx использует произвольный доступ. Жесткие диски имеют очень ограниченную емкость для операций случайного поиска, порядка значительно менее 100 операций в секунду для диска 7,2 тыс. об/мин любого поколения(по сравнению с более чем 10 тыс. IOPS в современных твердотельных накопителях ), что значительно ограничивает общую пропускную способность, если вы зависите от произвольного доступа к файловой системе для своей работы. В настоящее время 100 IOPS настолько медленны, что если бы жесткие диски были «изобретены» сегодня, они, вероятно, были бы отвергнуты как оторванные от реальности.

Поскольку вы обслуживаете видео, где последовательный доступ к большим -файлам встречается чаще, чем в других веб-приложениях, ваши показатели реальной -пропускной способности уже не так уж плохи — 59,96 МБ/с в реальном -жизнь, когда последовательный бенчмарк показывает 117 МБ/с, уже впечатляет. Решение может состоять в том, чтобы перейти на большее количество жестких дисков, использовать жесткие диски с более высокой скоростью вращения для увеличения количества операций ввода-вывода в минуту или перейти на твердотельный накопитель.

0
23.03.2020, 16:13
2 ответа

|| trueполезен в контекстах, где нас не волнует, завершится ли ошибка командой; в этом конкретном случае, если ~/.aliasне существует, test -sзавершится с ошибкой с нулевым кодом выхода, отличным от -, но мы не хотим, чтобы это имело какие-либо другие последствия. || trueгарантирует, что полный список команд (, включая источник ~/.alias), всегда завершается с успешным статусом.

Это было бы особенно актуально, если бы .bashrcвключало set -e, хотя это было бы необычно для сценария запуска оболочки.

Другой способ написать это будет

if test -s ~/.alias; then. ~/.alias; fi

, но это приведет к завершению с ненулевым -кодом выхода, если источник ~/.aliasвызовет ошибку.

См. также Чем полезен шаблон "command || true"?

1
28.04.2021, 23:19

Параметр || trueгарантирует, что вся команда возвращает состояние «Успех», даже если ./.aliasesвозвращает не -нулевое состояние (Сбой ).

Удобно, если вы используетеset -e(выход при ошибке ).

1
28.04.2021, 23:19

Теги

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