Как циклически повториться через reverse-i-search в Bash?

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

Принятие dmraid и картопостроитель устройства не использует Ваши устройства:

Ну, mdadm --stop /dev/md0 мог бы заботиться о Ваших занятых сообщениях, я думаю вот почему его жалоба. Затем можно попробовать Ваш собирать строку снова. Если это не работает, - остановка, снова сопровождаемая, собирается с --run (без выполнения, - собираются - сканирование не запустит ухудшенный массив). Затем можно удалить и повторно добавить неисправный диск, чтобы позволить ему делать попытку восстанавливания.

/dev/sde устарело (посмотрите на счетчик событий). Другие смотрят хорошо на первый взгляд, таким образом, я думаю, что у Вас на самом деле есть довольно хороший шанс никаких трудностей.

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

В ответ на Обновление 1

То, что "недостаточно запустить, массив" никогда не является хорошим сообщением для получения от mdadm. То, что это означает, - то, что mdadm нашел 10, изгоняет из Вашего массива RAID5 с 12 дисками, и поскольку я надеюсь, что Вы - осведомленный RAID5, может только пережить один отказ, не два.

Ну, давайте попытаемся соединить то, что произошло. Во-первых, по перезагрузке, было изменение буквы диска, которое является раздражающим для нас пытающийся понять это, но mdraid не заботится об этом. При прочтении вывода mdadm вот перекарта, которая произошла (отсортированный по диску набега #):

00 sdh1 -> sdb1
02 sdk1 -> sde1 [OUTDATED]
03 sdg1 -> sda1
04 sdf1 -> sdm1
05 sdd1 -> sdk1
06 sdm1 -> sdg1
07 sdc1 -> sdj1
08 sdi1 -> sdc1
09 sde1 -> sdl1
10 sdj1 -> sdd1
11 sdl1 -> sdf1
13 sdb1 -> sdi1 [SPARE]

02. Имеет более низкий счетчик 'событий', чем другие. Это означает, что оставило массив в какой-то момент.

Было бы хорошо, если Вы знаете часть истории этого массива — например, "RAID5 с 12 дисками, 1 горячее резервирование", корректное?

Я не совсем уверен, какова последовательность отказов, которые приводят к этому, все же. Кажется, что в какой-то момент, устройство № 1 перестало работать, и восстанавливание на устройство № 12 запустилось.

Но я не могу разобрать точно, что произошло затем. Возможно, у Вас есть журналы — или администратор для выяснения. Вот то, что я не могу объяснить:

Так или иначе № 12 стал № 13. Так или иначе № 2 стал № 12.

Так, это восстанавливает на № 12, должен был закончиться, и затем № 12 был бы № 1. Возможно, это не сделало — возможно, этому не удалось восстановить по некоторым причинам. Затем, возможно, № 2 перестал работать — или возможно № 2 перестал работать, то, почему восстанавливание не закончилось, и кто-то пытался удалить и повторно добавить № 2? Это могло бы сделать это № 12. Затем, возможно, удаленный и повторно добавленный запчасть, делая это № 13.

Хорошо, но конечно, в этой точке, у Вас было два отказа диска. Хорошо. Это имеет смысл.

Если это - то, что произошло, Вы перенесли два отказа диска. Это означает потерю данных. То, что Вы делаете затем, зависит от того, как важный, который данные (рассматривающий также, насколько хороший Ваши резервные копии).

Если данные очень ценны (и у Вас нет хороших резервных копий), специалисты по восстановлению контактных данных. Иначе:

Если данные достаточно ценны, необходимо использовать dd отображать все включенные диски (можно использовать большие диски и файлы на каждом, чтобы сэкономить деньги. Внешний облик на 2 или 3 ТБ, например). Затем сделайте копию изображений. Затем работа над восстановлением на той копии (можно использовать циклические устройства, чтобы сделать это).

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

Далее --force к Вашему --assemble строка. Это заставит mdadm использовать устаревший диск так или иначе. Это означает, что некоторые секторы будут теперь иметь устаревшие данные, некоторые не будут. Добавьте в одном из тех новых дисков как запчасть, позвольте восстановить концу. Надо надеяться, Вы не поражаете сбойных блоков (который заставил бы восстанавливание перестать работать, и я полагаю, что единственный ответ должен заставить диск планировать их), Затем, fsck -f диск. Вероятно, будут ошибки. После того как они фиксируются, монтируют диск и видят то, что формирует Ваши данные, находится в.

Рекомендации

В будущем не создавайте RAID5s с 12 дисками. Вероятность двух отказов диска слишком высока. Используйте RAID6 или RAID10 вместо этого. Кроме того, удостоверьтесь, что обычно вычистили свои массивы для сбойных блоков (echo check > /sys/block/md0/md0/sync_action).

478
08.04.2016, 17:13
4 ответа

Если я понимаю вопрос правильно, необходимо смочь циклически повториться через альтернативы путем повторного удара Ctrl+R.

Например:

Ctrl+R grep Ctrl+R Ctrl+R ...

Это ищет назад через Вашу историю. Для поиска вперед вместо этого, используйте Ctrl+S, но Вы, возможно, должны установить: stty -ixon (любой .bash_profile или вручную) до этого для отключения опции XON/XOFF, которая принимает Ctrl+s. (Больше деталей здесь.)

646
27.01.2020, 19:28
  • 1
    +1 - К вашему сведению - можно также искать вперед согласно этому ответу StackOverflow. –  Jordan Arseno 25.04.2013, 00:14
  • 2
    И используйте Ctrl+Shift+r для прокрутки реверса, если Вы, оказывается, передаете. –  wiswit 01.11.2015, 15:41
  • 3
    @wiswit CTRL+SHIFT+r не работает на меня. –  Maxim Suslov 05.04.2016, 10:48
  • 4
    @MaximSuslov Видит этот вопрос: stackoverflow.com/questions/791765 / … Вы может добавить [[ $- == *i* ]] && stty -ixon к Вашему .bashrc и затем CTRL+s будет работать реверсом CTRL+r –  gla3dr 21.04.2016, 20:03
  • 5
    @JordanArseno я взял "поиск вперед" для значения "поиска команд, которые я еще не ввел" –  Josh Johnson 29.07.2016, 01:10

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

"\e[A": history-search-backward
"\e[B": history-search-forward

Вместо того, чтобы искать подстроку где угодно в команде (как Ctrl-r) это будет искать команду, запускающуюся с текста слева от курсора. Например, если я выполняю эти команды:

$ ls bart
$ ls fools

затем введите ls и нажмите Up дважды, он покажет ls bart и курсор в том же месте. Сравните с Ctrl-r, где он нашел бы ls дважды в последней строке, таким образом, необходимо было бы нажать его еще раз для нахождения предыдущей строки.

Эти подходы и имеют свои преимущества, и они оба могут сэкономить много времени.

48
27.01.2020, 19:28
  • 1
    Это также стандартно на OS X, таким образом, Вы не должны создавать ~/.inputrc и добавьте те две строки. –  DASKAjA 12.08.2016, 17:36
  • 2
    Как falconepi записали в комментариях этого ответа, на Ubuntu просто необходимо не прокомментировать в ~/.inputrc эти две строки включая поиск истории -* –  Arpad Horvath 16.08.2016, 10:11
  • 3
    Вы могли также посмотреть на это сообщение для получения дополнительной информации об этом ответе: codeinthehole.com/writing / … –  Andrei 04.12.2016, 11:48
  • 4
    Это не было стандартно на моем macOS (10.13). Я всегда пропускал эту функциональность! –  forthrin 30.03.2018, 14:02

Если вы чувствуете, что команда будет использоваться часто, вы можете добавить тэг

команды #useful

Then

ctrl+r #useful

Это работает, потому что # является разделителем комментариев, т.е. все, что приходит после символа, не интерпретируется как команда. Однако, он будет записан в историю и, таким образом, доступен для поиска.

250
27.01.2020, 19:28

Существует замена встроенного -в Ctrl + R под названием hstr . Это позволяет искать историю команд, совпадающую со всеми токенами поиска одновременно (, среди прочего ), и циклически просматривать результат с помощью клавиш со стрелками :

.

Example

Вот демо-скринкаст .

Его можно установить на ОС семейства Debian -, например:

add-apt-repository ppa:ultradvorka/ppa
apt-get update
apt-get install hstr

hstr --show-configuration >> ~/.bashrc

Затем используйте Ctrl + R(после повторного открытия терминала ).

15
27.01.2020, 19:28

Теги

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