MDADM RAID возникает неактивным каждой перезагрузкой

Что ж, согласно некоторым из ваших правок, у вас есть CTRL + J , привязанный к макрос-команде bindkey . Это объясняет вашу проблему bash , учитывая поведение по умолчанию для readline .

Обычно readline считывает ввод в чем-то очень похожем на режим stty raw . Входные символы считываются, как только они набираются, и строковый редактор оболочки обрабатывает собственную буферизацию. readline устанавливает терминал в необработанный режим, когда он переходит на передний план, и восстанавливает его до того состояния, в котором он находился до этого, при вызове другой группы процессов переднего плана.

CTRL + J - перевод строки ASCII. ABCDEFGHIJ находится в 10 байтах от NUL. Поскольку вы настроили readline , чтобы съесть этот символ и впоследствии удалить то, что осталось от любой командной строки, в которой он выполняется с завершением меню, опережающий ввод не будет работать. Терминал находится в другом состоянии, когда опережающий ввод буферизуется дисциплиной ядра, чем когда readline находится на переднем плане.

Когда readline находится на переднем плане, он выполняет свое собственное преобразование для возврата каретки ввода -> новой строки, и драйвер терминала не преобразует его вообще. Однако, когда вы вводите свой ввод с опережающим вводом, драйвер терминала обычно переводит символы возврата на новую строку, как это можно настроить с помощью stty [-] icrnl .И поэтому вашего ключа возврата достаточно для команд, введенных в реальном времени, но новые строки, отправленные терминалом line-discline, интерпретируются как команды завершения меню.

Вы можете указать драйверу терминала остановить преобразование с помощью stty -icrnl . Скорее всего, придется немного привыкнуть к этому. Другие команды, принимающие ввод с терминала, обычно ожидают перевода строки, а не возврата, поэтому вам придется либо явно использовать CTRL + J , когда они управляют передним планом, либо научить их обрабатывать возврат как ] bash делает.

Вы уже упоминали, что чтение не работает должным образом при чтении с терминала. Опять же, скорее всего, если бы вы явно использовали CTRL + J для завершения строки ввода. Или ... вы можете научить его:

read()
    if    [ -t 0 ]
    then  command read -d $'\r' "$@"
    else  command read "$@"
    fi

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

0
14.10.2018, 07:22
1 ответ

Виновником был оператор bitmap=/media/intent.binв /etc/mdadm/mdadm.confПосле того, как я просто оставил там ARRAY /dev/md0 UUID=xxx, массив стал активным после перезагрузки. (Однако теперь у меня возникла проблема, заключающаяся в том, что внешнее растровое изображение не используется должным образом.)

0
28.01.2020, 04:12

Теги

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