Назад | Перейти на главную страницу

Странная проблема с консолью в Linux, обычно прямо перед OOM

Так что я замечал, что такое случалось не раз.

Если я правильно помню, это обычно происходит прямо перед OOM и / или паникой ядра: если вы наберете tty, а затем попытаетесь вернуть его на место, те же символы будут напечатаны в обратном порядке.

В прошлом для меня это было просто интересной странностью, но недавно это случилось снова, и мне стало больше любопытно, что на самом деле вызывает это. (Это отправляет символы обратно в STD_OUT или что-то в этом роде?)

Есть у кого-нибудь идеи? Чувствую, ответ будет интересным.

Я так понимаю, если вы набрали Привет мир, затем попытался вернуть его:

hello world..dlrow olleh

Это связано с неправильными настройками терминала - вы можете убедиться в этом, выполнив stty -a и ищу echoprt опция, которая контролирует это. Из stty (1) справочная страница, эта опция "отображает стертые символы назад, между '\' и '/'` ".

Чтобы быстро это исправить, введите stty sane, то что-то вроде stty erase '^H' для backspace или `stty erase '^?' для удаления (это два символа в конце в кавычках). Увидеть backspace / delete часть клавиатуры Linux HOWTO для большего.

Было бы интересно посмотреть, происходит ли это на всех консолях Linux (Alt-F1, Alt-F2 и т. Д.) И / или на псевдо-tty, используемых в окнах терминалов на основе X. Не могу понять, как условие OOM может вызвать это, поскольку оно управляется ядром.

Историческая справка: echoprt вариант изначально был разработан для терминалы телетайпа у которого вместо экрана был принтер, так как это был единственный способ показать операцию возврата / удаления - это был стандартный терминал при создании Unix. Эта статья имеет хорошее объяснение подсистемы терминала Linux (TTY).