Вики / Загрузка
sysctl (параметры ядра)
Чтение и настройка параметров ядра во время работы и постоянно (sysctl.conf).
sysctl читает и меняет параметры ядра на лету (через /proc/sys). Частые задачи:
включить форвардинг пакетов, подкрутить сеть/память, лимиты inotify, поведение swap.
sysctl -a # все параметры (их тысячи)
sysctl -a 2>/dev/null | grep forward # поиск нужного
sysctl net.ipv4.ip_forward # один параметр
sysctl vm.swappiness
sudo sysctl -w net.ipv4.ip_forward=1 # временно (до ребута)
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward # то же напрямую
# постоянно — файл в /etc/sysctl.d/ (имя с цифрой задаёт порядок):
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-forward.conf
sudo sysctl --system # применить ВСЕ *.conf (с учётом порядка)
sudo sysctl -p /etc/sysctl.d/99-forward.conf # применить конкретный файл
Порядок: файлы из
/usr/lib,/run,/etc/sysctl.dсливаются по имени; больший номер перекрывает./etc/sysctl.confприменяется тоже.
| Параметр | Зачем |
|---|---|
net.ipv4.ip_forward |
маршрутизация/NAT, контейнеры |
vm.swappiness |
склонность к swap (см. memory-swap) |
vm.max_map_count |
требуется Elasticsearch и др. (262144) |
fs.inotify.max_user_watches |
«too many open files» у watcher'ов (IDE, tail) |
fs.file-max |
глобальный лимит открытых файлов (см. ulimit) |
net.core.somaxconn |
длина очереди соединений (нагруженный веб) |
net.ipv4.tcp_tw_reuse |
переиспользовать TIME-WAIT-сокеты |
net.ipv4.conf.all.rp_filter |
проверка обратного пути (асимметричный роутинг) |
kernel.panic |
секунды до авто-ребута после паники |
Поменял через -w, после ребута сбросилось
sysctl -w временный. Для постоянства — файл в /etc/sysctl.d/*.conf + sysctl --system.
Файл в sysctl.d не применяется
Проверь имя (должно .conf), порядок (другой файл с большим номером перекрывает),
ошибки: sudo sysctl --system печатает проблемные строки. Параметр может требовать
модуль (см. kernel-modules).
Форвардинг включил, а пакеты не идут
Кроме ip_forward=1 нужны правила файрвола/NAT и маршруты (ip).
Параметр «read-only» / sysctl: cannot stat
Часть параметров задаётся только при загрузке (kernel cmdline) или появляется лишь
после загрузки модуля (например, net.netfilter.* — после nf_conntrack).
inotify «No space left»/«too many watches»
Не диск, а лимит: fs.inotify.max_user_watches мал. Подними в /etc/sysctl.d/.
sysctl ПАРАМЕТР # прочитать
sudo sysctl -w ПАРАМЕТР=ЗНАЧ # временно
echo 'param=val' | sudo tee /etc/sysctl.d/99-x.conf ; sudo sysctl --system # постоянно
sysctl net.ipv4.ip_forward ; sysctl vm.swappiness ; sysctl fs.inotify.max_user_watches
См. также
- Ядро и модули (lsmod, modprobe, dmesg) — Загрузка
- Файрвол (nftables / ufw) — Сеть
- Память и swap — Процессы