ホームフォルダでタブの完成が中断されるのを防ぐ方法は?

ホームフォルダでタブの完成が中断されるのを防ぐ方法は?

サーバーでディスクIO負荷が多い場合、タブの完了によって端末がハングすることがあります。Ctrl-C|D|Zあきらめないでください。

別のセッションでログインする必要があるたびに停止しているptyを見つけて終了します。

タブの完成が中断されるのを防ぐ方法はありますか?

ベストアンサー1

初めて考える- ディスク負荷が高いときにファイル名の補完を無効にします。ファイル名にのみ影響し、他の補完機能は引き続き機能します。なぜなら、私は彼らが停止を引き起こすとは思わない。

ホームディレクトリにファイルを作成し、.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読み取られ、次に入力すると実行され、起動されます。また、I/O に影響を与え、中断が発生する可能性があります。/usr/share/bash-completion/bash_completionapt-get_completion-loaderapt-get/usr/share/bash-completion/completions/apt-get

使用することにしました/proc/diskstatsディスクの活動を評価するために使用されます。使用できる別の方法があります。制限値はランダムに選択されます。

2番目の考え- I/O 使用制限を設定します。これ

おすすめ記事