В подсказке Bash, почему Control+x и Клавиша Backspace очищают текущую строку?

Я отвечаю на тег . Мой ответ характерен только для Linux.

Да, огромные страницы более подвержены фрагментации. Существует два представления памяти, та, которая Ваш процесс становится (виртуальным) и тот, которым ядро управляет (реальный). Чем больше любая страница, тем более трудным будет сгруппировать (и сохранить его с) его соседи, особенно когда Ваш сервис работает на системе, которая также должна поддерживать других, которые по умолчанию выделяют и пишут в путь больше памяти, чем они на самом деле заканчивают тем, что использовали.

Отображение ядра (реальных) предоставленных адресов является частным. Существует очень серьезное основание, почему пространство пользователя видит их, поскольку ядро представляет их, потому что ядро должно смочь принять на себя непосильные обязательства, не путая пространство пользователя. Ваш процесс получает хорошее, непрерывное адресное пространство "Disneyfied", в котором можно работать, забывающий о том, что ядро на самом деле делает с той памятью негласно.

Причина Вы видите ухудшенную производительность на длительных серверах, наиболее вероятна, потому что выделенные блоки, которые не были явно заблокированы (например. mlock()/mlockall() или posix_madvise()) и не измененный в некоторое время были разбиты на страницы, что значит Ваши сервисные блоки для диска, когда он должен считать их. Изменение этого поведения делает Ваш процесс плохим соседом, который является, почему многие люди помещают свой RDBMS на совершенно другой сервер, чем web/php/python/ruby/whatever. Единственный способ зафиксировать это, нормально, состоит в том, чтобы уменьшить борьбу за непрерывные блоки.

Фрагментация только действительно примечательна (в большинстве случаев), когда страница A находится в памяти, и страница B переместилась в подкачку. Естественно, перезапуск Вашего сервиса, казалось бы, 'исправил' бы это, но только потому, что ядро еще не имело возможности разбить на страницы процесс (теперь) недавно выделенные блоки в рамках ограничений превышать возможности отношения.

На самом деле перезапуск (позволяет, говорит), 'апач' при высокой загрузке, вероятно, собирается отправить блоки, принадлежавшие другим сервисам прямо к диску. Таким образом да, 'апач' улучшился бы в течение короткого времени, но 'mysql' мог бы пострадать.. по крайней мере, пока ядро не заставляет их пострадать одинаково, когда существует просто отсутствие вполне достаточной физической памяти.

Добавьте больше памяти или разделите требование malloc() потребители :) Не просто фрагментация, на которую необходимо смотреть.

Попробовать vmstat получить обзор того, что на самом деле хранится где.

5
задан 7 November 2011 в 19:56
4 ответа

Да. Из man bash :

  Убийство и янкинг
 линия убийства (Ck)
 Убейте текст от точки до конца строки.
 обратная линия убийства (Cx Rubout)
 Убейте назад к началу строки.
12
ответ дан 3 December 2019 в 00:53

bash поддерживает так называемую библиотеку readline , которая позволяет вам делать с вашей оболочкой совершенно удивительное количество вещей. Одна из таких вещей заключается в том, что readline поставляется с большим количеством комбинаций клавиш по умолчанию , таких как:

Ctrl-b  Move the cursor one character   ⇦ to the left
Ctrl-f  Move the cursor one character   ⇨ to the right
Alt-b   Move the cursor one word    ⇦ to the left
Alt-f   Move the cursor one word    ⇨ to the right
Ctrl-a  Move the cursor     ⇤ to the start of the line
Ctrl-e  Move the cursor     ⇥ to the end of the line
Ctrl-x-x    Move the cursor      ⇤⇥ to the start, and to the end again
Ctrl-d  Delete  the character   underneath the cursor
Ctrl-u  Delete  everything  ⇤ from the cursor back to the line start
Ctrl-k  Delete  everything  ⇥ from the cursor to the end of the line
Alt-d   Delete  word    ⇨ untill before the next word boundary
Ctrl-w  Delete  word    ⇦ untill after the previous word boundary
Ctrl-y  Yank/Paste  prev. killed text   at the cursor position
Alt-y   Yank/Paste  prev. prev. killed text at the cursor position
Ctrl-p  Move in history one line    ⇧ before this line
Ctrl-n  Move in history one line    ⇩ after this line
Alt->   Move in history all the lines   ⇩ to the line currently being entered
Ctrl-r  Incrementally search the line history   ⇧ backwardly
Ctrl-s  Incrementally search the line history   ⇩ forwardly
Ctrl-J  End an incremental search
Ctrl-G  Abort an incremental search and restore the original line
Alt-Ctrl-y  Yank/Paste  arg. 1 of prev. cmnd    at the cursor position
Alt-.
Alt-_   Yank/Paste  last arg of prev. cmnd  at the cursor position
Ctrl-_
Ctrl-x
Ctrl-u  Undo the last editing command; you can undo all the way back to an empty line
Alt-r   Undo all changes made to this line
Ctrl-l  Clear the screen, reprinting the current line at the top
Ctrl-l  Clear the screen, reprinting the current line at the top
Completion  TAB Auto-complete a name
Alt-/   Auto-complete a name (without smart completion)
Alt-?   List the possible completions of the preceeding text
Alt-*   Insert all possible completions of the preceeding text
Ctrl-t  Transpose/drag  char. before the cursor ↷ over the character at the cursor
Alt-t   Transpose/drag  word before the cursor  ↷ over the word at/after the cursor

Вот полезная информация по настройке readline . ​​

2
ответ дан 3 December 2019 в 00:53

Как уже отмечалось, он находится на странице руководства. Точнее, рассматриваемые комбинации клавиш взяты из EMACS, который является привязкой клавиш по умолчанию для Bash в ряде дистрибутивов Linux. Если вам нужно использовать vi вместо Bash, вы можете использовать:

set -o vi

Чтобы переключить его обратно на EMACS:

set -o emacs
3
ответ дан 3 December 2019 в 00:53

Это эквивалент сокращения в Windows. Вы можете вставить его обратно с помощью Ctrl + Y.

3
ответ дан 3 December 2019 в 00:53

Теги

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