Primeira ideia - desativa as conclusões do nome do ficheiro, enquanto o disco é carregado de forma elevada. Isso afeta apenas os nomes de arquivos, e outras conclusões continuam funcionando. Porque eu acho que eles não causam problemas.
Crie o arquivo .bash_completion
no diretório inicial e coloque este código lá.
#!/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
}
Além disso, o mesmo truque pode ser feito com a função _completion-loader
. Configura o carregamento de conclusão dinâmica.
No Ubuntu, o código de conclusão principal reside no arquivo /usr/share/bash-completion/bash_completion
e outros, personalizados para um programa específico, residem no diretório /usr/share/bash-completion/completions/
.
Quando bash
for iniciado, ele lerá /usr/share/bash-completion/bash_completion
file e, em seguida, se você digitar apt-get
, por exemplo, _completion-loader
executará e carregará apt-get
regras de conclusão do /usr/share/bash-completion/completions/apt-get
. Isso também afeta a E / S e pode ser causa de interrupção.
Eu decidi usar / proc / diskstats para avaliar a atividade do disco. Você pode usar outro caminho. O valor limite foi escolhido aleatoriamente.
Segunda ideia - limite de configuração para uso de E / S, como esta .