Перейти к основному содержанию
Рецепты Linux

Main navigation

  • Основы
  • Система
  • Команды
  • Программы
  • Дистро
  • Интерфейсы
  • Устройства
  • Доки
User account menu
  • Войти

Строка навигации

  1. Главная

Команда sysctl

Автор: admin, 16 октября, 2023
Команды

В Linux команда sysctl используется для чтения или изменения параметров ядра во время выполнения.

Использование в Linux команды sysctl с примерами

Содержание

  • Возможности утилиты
  • Синтаксис
  • Опции
  • Параметры
  • Примеры использования команды sysctl в Linux
    • Вывод всех параметров ядра
    • Отображение имён параметров без значений
    • Поиск конкретных параметров
    • Отображение определённого значения параметра
    • Отображение значения без имени параметра
    • Изменение значения параметра
    • Загрузка конфигурации из файла по умолчанию
    • Загрузка конфигурации из пользовательского файла
    • Загрузка всех файлов конфигурации системы
    • Подавление сообщений об ошибках
  • Заключение

Возможности утилиты

Утилита даёт возможность контроля и изменения настройки сети, операций ввода/вывода и управления памятью в режиме реального времени без перезагрузки.

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

Синтаксис

Параметры ядра Linux находятся в каталоге /proc/sys/. Команда sysctl позволяет вносить структурированные изменения в эти параметры и сохранять изменения при перезагрузке без прямого взаимодействия с файлами /proc/sys/. В Linux утилита имеет следующий синтаксис:

sysctl [options] [variable[=value] ...]

В синтаксисе командной строки квадратные скобки [] обычно указывают, что параметр является необязательным.

Опции

sysctl
Имя команды
[опции]
Команда принимает необязательные флаги для настройки поведения
[переменная]
Имя параметра ядра, который вы хотите прочитать или изменить. Введите переменную без значения, чтобы прочитать только текущее значение переменной
[=значение]
Если команда содержит переменную, вы можете присвоить ей значение. Ввод значения установит новое значение для переменной
...
Три точки означают, что в одной команде можно указать несколько пар переменная=значение

Синтаксис утилиты является гибким и позволяет пользователям вводить команду с опциями или без них, читать существующие значения или определять новые значения для определённых параметров ядра.

Параметры

-а
Отображение всех переменных и значений
-n
Отображать только значения для указанных переменных
-e
Не отображать ошибки для несуществующих переменных
-w [parameter]=[value]
Измените значение указанной переменной
-p [file]
Загрузить значения из указанного файла конфигурации. Система по умолчанию загружает значения из файла /etc/sysctl.conf, если файл не указан
-q
Сообщения об ошибках для значений параметров ядра стандартного вывода подавляются
-f
Загрузить настройки из всех файлов конфигурации системы
-r [pattern]
Перечислите только те переменные, которые соответствуют определённому шаблону
-V
Вывести версию утилиты

Примеры использования команды sysctl в Linux

Только пользователь sudo или root может изменять значения параметров. Действия чтения обычно не требуют прав sudo или root.

Вывод всех параметров ядра

Для вывода всех параметров ядра и их текущего значения используется опция -a:

oleg@mobile:~:$ sysctl -a
abi.vsyscall32 = 1
debug.exception-trace = 1
debug.kprobes-optimization = 1
dev.cdrom.autoclose = 1
dev.cdrom.autoeject = 0
dev.cdrom.check_media = 0
dev.cdrom.debug = 0
dev.cdrom.info = CD-ROM information, Id: cdrom.c 3.20 2003/12/17
dev.cdrom.info = 
dev.cdrom.info = drive name:		sr0
dev.cdrom.info = drive speed:		24
...
vm.oom_dump_tasks = 1
vm.oom_kill_allocating_task = 0
vm.overcommit_kbytes = 0
vm.overcommit_memory = 0
vm.overcommit_ratio = 50
vm.page-cluster = 3
vm.page_lock_unfairness = 5
vm.panic_on_oom = 0
vm.percpu_pagelist_high_fraction = 0
vm.stat_interval = 1
sysctl: permission denied on key 'vm.stat_refresh'
vm.swappiness = 60
vm.unprivileged_userfaultfd = 0
vm.user_reserve_kbytes = 57155
vm.vfs_cache_pressure = 100
vm.watermark_boost_factor = 15000
vm.watermark_scale_factor = 10
vm.zone_reclaim_mode = 0
oleg@mobile:~:$ 

Отображение имён параметров без значений

Для этого команда используется с опциями -a и -N:

oleg@mobile:~:$ sysctl -a -N
abi.vsyscall32
debug.exception-trace
debug.kprobes-optimization
dev.cdrom.autoclose
dev.cdrom.autoeject
dev.cdrom.check_media
dev.cdrom.debug
dev.cdrom.info
dev.cdrom.lock
...
vm.numa_stat
vm.numa_zonelist_order
vm.oom_dump_tasks
vm.oom_kill_allocating_task
vm.overcommit_kbytes
vm.overcommit_memory
vm.overcommit_ratio
vm.page-cluster
vm.page_lock_unfairness
vm.panic_on_oom
vm.percpu_pagelist_high_fraction
vm.stat_interval
vm.stat_refresh
vm.swappiness
vm.unprivileged_userfaultfd
vm.user_reserve_kbytes
vm.vfs_cache_pressure
vm.watermark_boost_factor
vm.watermark_scale_factor
vm.zone_reclaim_mode
oleg@mobile:~:$ 

Поиск конкретных параметров

Объединив опцию -a с утилитой grep можно выполнить поиск определённого параметра ядра. Следующая команда, например, ищет все параметры, связанные с маршрутизацией IPv6:

oleg@mobile:~:$ sudo sysctl -a | grep net.ipv6.route net.ipv6.route
net.ipv6.route.gc_elasticity = 9
net.ipv6.route.gc_interval = 30
net.ipv6.route.gc_min_interval = 0
net.ipv6.route.gc_min_interval_ms = 500
net.ipv6.route.gc_thresh = 1024
net.ipv6.route.gc_timeout = 60
net.ipv6.route.max_size = 2147483647
net.ipv6.route.min_adv_mss = 1220
net.ipv6.route.mtu_expires = 600
net.ipv6.route.skip_notify_on_dev_down = 0
oleg@mobile:~:$ 

Отображение определённого значения параметра

При использовании команды с именем параметра ядра можно отобразить его значение. Следующая команда, например, отображает значение подкачки системы:

oleg@mobile:~:$ sysctl vm.swappiness
vm.swappiness = 60
oleg@mobile:~:$ 

Отображение значения без имени параметра

При желании получить значение параметра без его имени, например, для целей сценариев, используйте опцию -n:

oleg@mobile:~:$ sysctl -n vm.swappiness
60
oleg@mobile:~:$ 

Изменение значения параметра

Использование утилиты с опцией -w позволяет изменять существующее значение параметра ядра. Следующая команда устанавливает значение swappiness равным 30:

oleg@mobile:~:$ sudo sysctl -w vm.swappiness=30
vm.swappiness = 30
oleg@mobile:~:$ 

Уровень подкачки системы влияет на поведение ядра при подкачке.

Загрузка конфигурации из файла по умолчанию

Для перезагрузки значений по умолчанию из файлов /etc/sysctl.conf и /etc/sysctl.d/ команда используется с опцией -p:

oleg@mobile:~:$ sysctl -p
oleg@mobile:~:$

Вывода нет, и значения перезагружаются без перезагрузки.

Загрузка конфигурации из пользовательского файла

Для загрузки настроек из пользовательского файла конфигурации используется следующая команда:

sysctl -p [/path/to/custom-sysctl.conf]

Замените [/path/to/custom-sysctl.conf/] фактическим путём к вашему файлу конфигурации.

Загрузка всех файлов конфигурации системы

Для загрузки значений из всех мест конфигурации системы утилита используется с опцией -f:

sysctl -f

Система загружает настройки из следующих файлов конфигурации: /run/sysctl.d/*.conf, /etc/sysctl.d/*.conf, /usr/local/lib/sysctl.d/*.conf, /usr/lib/sysctl.d/*.conf, /lib/sysctl.d/*.conf и /etc/sysctl.conf.

Подавление сообщений об ошибках

Пропуск ошибок для несуществующих параметров приводит к более чистому выводу и уменьшению ненужного шума в журналах. Используйте опцию -q для подавления сообщений об ошибках для указанного параметра:

sysctl -q [non_existent_parameter]

Замените [non_existent_parameter] фактическим именем переменной.

Заключение

Изучив работу команды sysctl и протестировав эти несложные команды можно уже получить достаточное представление об управлении ядром Linux.

Последние материалы

  • Утилита Linux nmcli
    3 weeks 3 days ago
  • Утилита TestDisk в Linux
    1 month 2 weeks ago
  • Команда Linux zcat
    2 months ago
  • Утилита Speedtest
    2 months 2 weeks ago
  • Утилита xrandr
    3 months 3 weeks ago
RSS feed

Secondary menu

  • О проекте

© 2008–2025 Олег Меньшенин mensh@yandex.ru