Постоянное отключение подкачки в Debian

Описанное вами поведение, вероятно, вызвано завершением bash -.

(То, что следует ниже, основано на текущей версии пакета (2.9 ), но оно будет достаточно точным и для имеющейся у вас версии 2.1 ).

bash -завершение предоставляет набор спецификаций завершения,(compspec ), которые библиотека Readline использует для завершения слов, передаваемых в качестве аргументов для команд в Bash. Они определяются с помощью встроенной командыcomplete, обычно в виде:

complete -F function command

Для встроенной функции exportфункция _exportопределена в /usr/share/bash-completion/completions/export.

Когда слово для завершения включает (или заканчивается на )=, _exportпытается завершить его (часть справа от первой =, на самом деле )как имя файла или каталога; когда слово для завершения не включает =, оно пытается завершить его как имя переменной. Поскольку библиотека Readline запускает новое завершение каждый раз, когда встречается с одним из символов, перечисленных в переменной COMP_WORDBREAKS(, если только символ не экранирован ), который обычно включает :, завершение перестает работать после первого двоеточия. вы добавляете к значению переменной, потому что в этот момент слово для завершения больше не включает (или не заканчивается на )на =.
(Кстати, обратите внимание, что завершение имени файла/каталога снова начинает работать, если вы напишете export myvar=/usr/:othervar=и нажмете Tab).

Дополнение bash -действительно имеет собственный механизм для обработки особых случаев. Например, :правильно обрабатывается спецификацией compspec для scp, которая интерпретирует то, что находится справа от двоеточия, как удаленный путь. Однако то же самое не относится к export.

Поведение Readline по умолчанию , которое запускается, когда спецификация для текущей команды не найдена, в конечном итоге заключается в попытке завершения имени файла.Вот почему завершение path2в export var=/path1/:/path2/работает, когда дополнение bash -не установлено или отключено иным образом (помните, что каждое двоеточие запускает новое завершение ).

Что же ты можешь сделать? У вас есть несколько альтернатив:

  1. Отправьте запрос функции на bash -завершение на GitHub .

  2. Определите собственную функцию завершения для export.
    Во-первых, скопируйте compspec в файл завершения пользователя (, который, скорее всего, еще не существует ):

    .
    $ cat /usr/share/bash-completion/completions/export >>~/.bash_completion
    

    Затем отредактируйте ~/.bash_completion, заменив complete -F _export exportна complete -F _export -o default export. Это указывает Readline попытаться выполнить завершение по умолчанию, когда конкретная спецификация exportне дает результатов.

  3. Используйте автодополнение по умолчанию вместо того, которое предоставляется автодополнением bash -.
    Добавьте в свой~/.bashrc:

    complete -o default -o bashdefault export
    

    (Предложение из bash -FAQ по завершению). Недостатком является то, что вы теряете возможность заполнять имена переменных и опции export.

  4. Если вы хотите достаточно хорошо ознакомиться с дополнением bash -, определите свою собственную функцию _export, как в (2 ), отредактировав предоставленную функцию, чтобы она специально обрабатывала :.

4
05.10.2021, 13:16
2 ответа

systemd по умолчанию находится в автоматическом режиме и не нуждается в fstab для активации:

systemd-gpt-auto-generator is a unit generator that automatically discovers root, /home/, /srv/, /var/, /var/tmp/, the EFI System Partition, the Extended Boot Loader Partition and swap partitions

Этот генератор можно замаскировать в отдельном каталоге переопределения администратора:

/etc/systemd/system-generators/systemd-gpt-auto-generator -> /dev/null

systemd.gpt_auto=noв качестве параметра загрузки должен иметь тот же эффект.

Продолжение справочной страницы:

systemd-gpt-auto-generator is useful for centralizing file system configuration in the partition table and making configuration in /etc/fstab or on the kernel command line unnecessary.

fstab-generatorидет вторым/может переопределить. Но поскольку вы заменили комментарий, я думаю, gpt -auto включает его.

sda3еще не установлен . lsblkработает как fdisk -lна уровне раздела. Запись [SWAP]похожа на точку монтирования.

Попробуйте swapon --show, потому что могут быть также файлы подкачки и несколько подкачек.

3
05.10.2021, 14:15

Вам необходимо изменить vm.swappiness параметр ядра linux и навсегда внести изменения в файл /etc/sysctl.conf . И перезагрузите систему.

Значение по умолчанию vm.swappiness равно 60 , а представляет собой процент свободной памяти перед активацией подкачки . Чем ниже значение, тем меньше используется подкачки и тем больше страниц памяти хранится в физической памяти.

Для постоянного отключения подкачки в вашей системе Debian:

  • отредактировать файл /etc/sysctl.conf файл и добавить в конец файла, если он отсутствует vm.swappiness = 0
  • перезагрузить систему
# edit /etc/sysctl.conf file
~] vi /etc/sysctl.conf 

# disable swap
# add to end of file if not present:
vm.swappiness = 0

# reboot for changes
~] systemctl reboot

Вот руководство , как навсегда отключить подкачку в Linux .

0
07.10.2021, 13:48

Теги

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