Он будет потерян навсегда , если вы не используете - повторные попытки
, и в этом случае он будет повторен на другом сервер. Также посмотрите - filter-hosts
, чтобы удалить неработающие хосты.
Первая идея-отключить автозавершение имени файла, когда диск сильно загружен. Это влияет только на имена файлов, остальные дополнения продолжают работать. Потому что, я думаю, они не вызывают зависания.
Создайте файл .bash_completion
в домашнем каталоге и поместите туда этот код.
#!/bin/bash
### We are needed redefine original _filedir function
### and add new functionality to it
#
# for this, output the original function code and add the word 'original'
# in the beginning of it - now we are have _filedir renamed to
# 'original_filedir'
eval "original$(declare -f _filedir)"
# Define our own _filedir function, which will check disk load
# and:
# if load are low - call original function.
# if load are high - stop further execution.
_filedir() {
io_load_limit=10
io_load=$(awk '/sda /{print $12}' /proc/diskstats)
if ((io_load > io_load_limit)); then
echo -n "completion disabled - a lot i/o"
return
fi
original_filedir
}
Аналогичный трюк можно проделать и с функцией _completion-loader
. Он устанавливает динамическую загрузку завершения.
В Ubuntu основной код завершения находится в файле /usr/share/bash-completion/bash_completion
, а другие, настроенные для конкретной программы, находятся в каталоге /usr/share/bash-completion/completions/
.
Когда запускается bash
, он читает файл /usr/share/bash-completion/bash_completion
, а затем, если вы набираете apt-get
, например, _completion-loader
запускается и загружает apt-get
правила завершения из /usr/share/bash-completion/completions/apt-get
. Это также влияет на ввод-вывод и может быть причиной зависания.
Я решил использовать /proc/diskstats для оценки активности диска. Вы можете использовать другой способ. Предельное значение было выбрано случайно.
Вторая идея-установить ограничение на использование ввода-вывода, например это .