Такая буферизация выполняется конвейером, когда задействованный дескриптор не является терминалом. У некоторых команд есть особые параметры для решения этой проблемы и принудительного интерактивного поведения.
Общий способ решения этой проблемы
Вы можете использовать stdbuf
из GNU Coreutils. Он управляет буферизацией stdin
, stdout
и stderr
. Вы можете полностью отключить его, установив для него значение 0
, или использовать буферизацию строки, установив его на L
:
stdbuf -i0 -o0 -e0 command
stdbuf -oL ping example.com
Эта команда работает, установив setvbuf ()
с помощью взлома LD_PRELOAD
. Если вызываемая команда снова принудительно вызывает эту функцию, stdbuf
может не отключить буферизацию.
Вы также можете использовать команду unbuffer
для достижения в основном того же результата. Эта команда связана с expect
и не может быть установлена по умолчанию. Его можно использовать в основном следующим образом:
unbuffer command
Параметры для конкретной команды
Что касается буферизации для конкретной команды, вот как ее отключить:
grep
отключить буферизацию: - строчная буферизация
sed
отключать буферизацию: -u
awk
не выполняет буферизацию, когда нет управляющего tty. mawk
, awk по умолчанию, по крайней мере, для Debian / Ubuntu, выполняет буферизацию вывода. mawk
может не работать с stdbuf
и предоставляет параметр -Winteractive
для отключения буферизации. Когда вы устанавливаете вторую операционную систему Linux, вам не нужно устанавливать grub
второй раз. Просто загрузитесь в Manjaro после установки второй ОС и запустите update-grub
, при необходимости запустите os-prober
.
Если ни один из них не обнаружит вашу вторую установку, вам нужно будет запустить следующее:
mount /dev/sdXY /mnt # sdXY being your bootable partition of the second OS, e.g. sda3
update-grub # and if necessary, os-prober
Это должно создать запись grub для вашей второй ОС и даже работает для Windows.
Простая установка будет примерно такой:
/dev/sda
|-sda1 # First OS
|-sda2 # Swap
|-sda3 # Second OS
Здесь у них общий своп и все содержится в 1 разделе для каждой ОС. Еще лучше было бы использовать lvm
для создания 2 отдельных зашифрованных контейнеров, чтобы они не делили подкачку и имели 2 разных загрузочных раздела. Еще лучше настроить двойную загрузку с двумя разными дисками, если ваш компьютер поддерживает пространство для двух отдельных дисков.
Я сослался на этот пост в блоге и успешно настроил много разных двойных загрузок, используя описанные выше методы.
Поскольку мы говорим о Linux, конечно, есть много способов решить эту проблему. Если вы хотите остаться с GRUB2, обратитесь к приведенному выше ответу. Однако для личной справки и для документирования альтернатив также применимо следующее:
Загрузка Systemd с помощью Manjaro:
Для экономии места и для того, чтобы не дублировать руководства, я просто добавлю ссылку на задокументированный процесс выполнения этой настройки в Manjaro (очень подробный и с большим количеством примеров):ссылка
Другим замечательным ресурсом является всемогущая Arch Wiki:ссылка
TL;DR
Оба этих ресурса должны предоставить много документации о том, как создавать различные файлы.conf, но помните, что вам понадобятся UUID разных дисководов:blkid /dev/sdXY
Это даст вам контроль над всем. Это может быть не так удобно для пользователя, как GRUB2, но вы будете иметь прямое право голоса в том, как работает ваш загрузчик.