サーバーでディスク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_completion
apt-get
_completion-loader
apt-get
/usr/share/bash-completion/completions/apt-get
使用することにしました/proc/diskstatsディスクの活動を評価するために使用されます。使用できる別の方法があります。制限値はランダムに選択されます。
2番目の考え- I/O 使用制限を設定します。これ。