Команда lsof не найдена в терминале VS Code

Первая идея-отключить автозавершение имени файла, когда диск сильно загружен. Это влияет только на имена файлов, остальные дополнения продолжают работать. Потому что, я думаю, они не вызывают зависания.

Создайте файл .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 для оценки активности диска. Вы можете использовать другой способ. Предельное значение было выбрано случайно.

Вторая идея-установить ограничение на использование ввода-вывода, например это .

0
14.10.2020, 21:59
3 ответа

Обычно в CentOS/Fedora/RHEL я устанавливаю его так:

yum install lsof
dnf install lsof

Тогда я смогу его использовать. Поэтому сначала попробуйте установить его.

-2
18.03.2021, 22:57

Насколько я понимаю ваш вопрос, я полагаю, что вы используете WSL в Windows 10, чтобы установить lsof, вам нужно выполнить следующую команду npm install lsof, поскольку на вашем компьютере установлен npm, или использовать традиционный способ его установки sudo apt install lsofиз терминала Ubuntu\Debian. что касается другой части, после установки lsof вы можете использовать lsof -D /mypath, а затем убить процесс, который использует любой файл в этом каталоге.

Примечание :Если вы используете suse, вы можете использовать следующие команды

 sudo zypper ref
 sudo zypper up
 sudo zypper install lsof

отредактируйте приведенную выше команду, она также работает в автономном Ubuntu\Debian или Suse

2
18.03.2021, 22:57

Проверьте эту ветку :[WSL] Невозможно запустить /usr/bin/gdb при установке bash.exe в качестве интегрированной оболочки в VS Code В частности, часть json может решить вашу проблему, я полагаю.

0
18.03.2021, 22:57

Теги

Похожие вопросы