Можно получить доступ только к выполняемой командной строке с history
встроенный. (Я понятия не имею почему history 1
печатает просто выполняемую командную строку, но fc -nl -1
печатает предыдущую команду, как делает fc -nl 0
.)
PROMPT_COMMAND='echo -en "\033[38;5;2m"; history 1; echo -en "\033[0m\n"'
Это печатает число перед текстом команды. Вот версия, которая удаляет число. (Может быть неправильно, если Вы идете вне 99 999 строк истории, я не знаю, как удар форматирует число затем.)
prompt_function () {
local prompt_history="$(history 1)"
prompt_history=${prompt_history:7}
echo -En $'\033[38;5;2m'"$prompt_history"$'\033[0m\n'
}
PROMPT_COMMAND=prompt_function
(Отметьте это echo -en ..."$prompt_history"...
развернул бы обратные косые черты в командной строке, таким образом, я использую echo -E
и позвольте расширению оболочки генерировать управляющие символы с $''
.).
Это означает, что существует 22 сектора, которые не могли быть считаны. В следующий раз Вы пишете в те секторы, если они не могут быть правильно записаны в, они будут повторно отображены на запасном секторе. Можно использовать badblocks
утилита для определения местоположения поврежденных секторов, и dd
записать в них:
sudo badblocks -b 512 /dev/sda
Для каждого перечисленного сектора сначала проверьте, что он не может быть считан:
sudo dd if=/dev/sda of=/dev/null bs=512 count=1 iflag=direct skip=[sector]
Это должно перестать работать с ошибкой IO. Если это делает, возобновляет запись:
sudo dd if=/dev/zero of=/dev/sda bs=512 count=1 oflag=direct seek=[sector]
Используйте номер сектора, данный badblocks для [сектора]. После выполнения этого проверьте УМНУЮ статистику снова, и незаконченное количество должно быть нулем. Перераспределенное количество могло бы повыситься, если неудавшаяся запись и секторы была перераспределена от запасного пула. Если это происходит, можно хотеть заменить диск. Если это не делает, то все было восстановлено.
Текущее незаконченное количество сектора является количеством секторов, диск в настоящее время отслеживает это, это не смогло читать. С удачей они будут записаны, и затем диск повторно отобразит их. Но пока это не читает их успешно, или компьютер пытается записать в них, нет ничего, что это может сделать. Это - возможный знак большего количества проблем прибыть.
Можно читать больше об УМНОМ на Википедию.
Возможно, более безопасным способом переназначения отдельных секторов является использованиеhdparm
:
$ sudo hdparm --read-sector 12345678 /dev/sdx # verify that there is a read error
$ sudo hdparm --yes-i-know-what-i-am-doing --write-sector 12345678 /dev/sdx
В отличие от dd
, hdparm
предназначен для работы с отдельными секторами, поэтому меньше шансов, что он испортит половину вашего диска из-за опечатки.
В дополнение к badblocks
в журнале ядра(dmesg | grep sector
)или в отчетах SMART(smartctl -x
)сообщается об уже известных нечитаемых секторах. Если количество таких секторов настолько велико, что переназначить их вручную нецелесообразно, я бы на самом деле подумал о замене жесткого диска, поскольку это признак неизбежного постоянного отказа.