Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.Как это работает:
• Ядро поддерживает два списка: active и inactive.
• Активные страницы недавно использовались, неактивные — давно не трогались.
• При нехватке памяти запускается kswapd, который перемещает страницы из active → inactive и затем освобождает их, сбрасывая dirty-страницы на диск или удаляя чистые.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍4
Как запретить юзерам выключать сервер или менять сетевые настройки
Иногда на сервере несколько пользователей, и не все должны иметь полные права.
Например, кто-то случайно жмёт “Выключить” в GUI — и сервер падает.
Linux даёт способ это запретить без удаления sudo: через PolicyKit (polkit).
Запрет выключения и перезапуска
Создаём правило:
И добавляем:
Теперь только пользователи из группы wheel (или другой, если заменишь) смогут перезагружать и выключать систему.
Запрет изменения сети
Файл:
Код:
Теперь менять соединения, IP и Wi-Fi смогут только пользователи группы netadmin.
Как проверить:
Покажет все доступные polkit-действия.
Иногда на сервере несколько пользователей, и не все должны иметь полные права.
Например, кто-то случайно жмёт “Выключить” в GUI — и сервер падает.
Linux даёт способ это запретить без удаления sudo: через PolicyKit (polkit).
Запрет выключения и перезапуска
Создаём правило:
sudo nano /etc/polkit-1/rules.d/49-disable-shutdown.rules
И добавляем:
polkit.addRule(function(action, subject) {
if ((action.id == "org.freedesktop.login1.power-off" ||
action.id == "org.freedesktop.login1.reboot") &&
!subject.isInGroup("wheel")) {
return polkit.Result.NO;
}
});Теперь только пользователи из группы wheel (или другой, если заменишь) смогут перезагружать и выключать систему.
Запрет изменения сети
Файл:
sudo nano /etc/polkit-1/rules.d/50-disable-network.rules
Код:
polkit.addRule(function(action, subject) {
if (action.id.indexOf("org.freedesktop.network-manager.settings.") == 0 &&
!subject.isInGroup("netadmin")) {
return polkit.Result.NO;
}
});Теперь менять соединения, IP и Wi-Fi смогут только пользователи группы netadmin.
Как проверить:
pkaction | grep power
pkaction | grep network
Покажет все доступные polkit-действия.
👍12🔥8
Вышел Rust 1.91.0!
В обновлении участвовали 235 разработчиков, а ключевые улучшения направлены на производительность, удобство и расширение поддержки платформ.
Главное в релизе:
⏺ Windows на ARM (aarch64-pc-windows-msvc) получила статус Tier-1 — теперь есть официальные бинарники и полный саппорт.
⏺ Новые lint-проверки: защита от висячих указателей и преобразования чисел в указатели через transmute.
⏺ В Cargo стабилизирована опция build.build-dir — можно указать каталог для временных артефактов сборки.
⏺ Поддержка inline-ассемблера для LoongArch32 и обновление компилятора до LLVM 21.
⏺ Добавлены десятки стабильных API — от PathBuf::add_extension до Ipv6Addr::from_segments.
30 октября 2025 года состоялся релиз новой версии языка Rust — одной из самых стабильных и безопасных экосистем в мире.
В обновлении участвовали 235 разработчиков, а ключевые улучшения направлены на производительность, удобство и расширение поддержки платформ.
Главное в релизе:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍3
Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.Без seq_file разработчикам приходилось вручную управлять буферами, обрезками строк и позиционированием, что повышало риск ошибок.
seq_file решает эти проблемы, обеспечивая:
• последовательную генерацию данных в чанках,
• автоматическую поддержку seek/read,
• потокобезопасный доступ к данным ядра,
• экономию памяти за счёт ленивой генерации.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤4
Как безопасно удалить старые логи и кэши, не трогая нужное
Со временем на сервере накапливаются гигабайты старых логов и временных файлов.
Рука не поднимается чистить /var/log — страшно что-то удалить лишнее.
Но всё можно сделать аккуратно, одной командой find с правильными фильтрами.
Удалим файлы старше 30 дней
-mtime +30 — старше 30 дней
-type f — только файлы
-delete — удалить (осторожно, без подтверждения)
Добавим исключения:
Так мы не тронем systemd-журналы и конфиги лог-демонов.
Чистим кэш без вреда
Можно ограничить размер:
и удалить вручную то, что реально разрослось (например, apt или pip кэши).
Тест перед удалением:
Покажет, что будет удалено. Меняем -delete на -print, если нужно просто посмотреть.
Автоматизация:
Добавляем в cron:
и строку:
Каждое воскресенье в 3:00 — чистка логов.
Со временем на сервере накапливаются гигабайты старых логов и временных файлов.
Рука не поднимается чистить /var/log — страшно что-то удалить лишнее.
Но всё можно сделать аккуратно, одной командой find с правильными фильтрами.
Удалим файлы старше 30 дней
sudo find /var/log -type f -mtime +30 -delete
-mtime +30 — старше 30 дней
-type f — только файлы
-delete — удалить (осторожно, без подтверждения)
Добавим исключения:
sudo find /var/log -type f -mtime +30 \
! -name "*.conf" \
! -path "/var/log/journal/*" \
-delete
Так мы не тронем systemd-журналы и конфиги лог-демонов.
Чистим кэш без вреда
sudo find /var/cache -type f -mtime +15 -delete
Можно ограничить размер:
sudo du -sh /var/cache/*
и удалить вручную то, что реально разрослось (например, apt или pip кэши).
Тест перед удалением:
sudo find /var/log -type f -mtime +30 -print
Покажет, что будет удалено. Меняем -delete на -print, если нужно просто посмотреть.
Автоматизация:
Добавляем в cron:
sudo crontab -e
и строку:
0 3 * * 0 find /var/log -type f -mtime +30 -delete
Каждое воскресенье в 3:00 — чистка логов.
❤9🔥8👍4
Что произойдет, если удалить запись /etc/fstab для корневого раздела и перезагрузить систему?
Anonymous Quiz
2%
Система загрузится нормально
26%
Kernel автоматически пересоздаст fstab
67%
Система не сможет смонтировать корневой раздел и не загрузится
5%
Будет использован swap вместо корня
❤4😁3
Отслеживаем, кто открывает соединения на сервере
На продакшн-сервере важно знать, какие процессы слушают порты и кто к ним подключается.
Даже если firewall настроен, иногда нужно понять активность внутри системы.
Посмотреть текущие соединения и процессы
• -t — TCP
• -u — UDP
• -l — слушающие порты
• -p — показать процесс
• -n — без резолва имен
Пример вывода:
Альтернативы
• Показывает все открытые сетевые сокеты с процессами.
• Старый, но привычный вариант для мониторинга.
Автоматическая запись в лог для аудита
• Каждую минуту логируются текущие соединения.
• Можно добавить logger для syslog:
На продакшн-сервере важно знать, какие процессы слушают порты и кто к ним подключается.
Даже если firewall настроен, иногда нужно понять активность внутри системы.
Посмотреть текущие соединения и процессы
ss -tulpn
• -t — TCP
• -u — UDP
• -l — слушающие порты
• -p — показать процесс
• -n — без резолва имен
Пример вывода:
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3))Альтернативы
lsof -i -P -n
• Показывает все открытые сетевые сокеты с процессами.
netstat -tulnp
• Старый, но привычный вариант для мониторинга.
Автоматическая запись в лог для аудита
watch -n 60 'ss -tupn >> /var/log/active_connections.log'
• Каждую минуту логируются текущие соединения.
• Можно добавить logger для syslog:
ss -tupn | logger -t net-audit
👍12❤7
Как защитить важные файлы от случайного удаления
На сервере есть критичные файлы: конфиги, скрипты, сертификаты.
Случайное удаление или модификация могут сломать сервис.
Linux даёт несколько инструментов для защиты: chattr, ACL и правильный sudoers.
Файлы “только для чтения” с chattr
• +i — ставит immutable, файл нельзя удалить, переименовать или изменить, даже root.
• Чтобы снять защиту:
Разграничение прав через ACL
⏺ Пользователь deploy получает только чтение.
⏺ Список прав:
Правильная настройка sudoers
⏺ Не даём всем полный ALL доступ.
⏺ Пример: разрешить перезагрузку nginx без права удалять файлы:
На сервере есть критичные файлы: конфиги, скрипты, сертификаты.
Случайное удаление или модификация могут сломать сервис.
Linux даёт несколько инструментов для защиты: chattr, ACL и правильный sudoers.
Файлы “только для чтения” с chattr
sudo chattr +i /etc/nginx/nginx.conf
• +i — ставит immutable, файл нельзя удалить, переименовать или изменить, даже root.
• Чтобы снять защиту:
sudo chattr -i /etc/nginx/nginx.conf
Разграничение прав через ACL
sudo setfacl -m u:deploy:r /etc/nginx/nginx.conf
getfacl /etc/nginx/nginx.conf
Правильная настройка sudoers
deploy ALL=(root) NOPASSWD: /bin/systemctl restart nginx
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤7
Microsoft готовит Windows 11 26H1 - апдейт без новых фишек ❌
Microsoft подтвердила скорый выход версии 26H1 - первой весенней сборки новой Windows.
26H1 не добавит пользовательских функций - только платформенные изменения под новое железо, предположительно Snapdragon X2 для ПК Copilot+ следующего поколения.
⏺ Основные обновления по-прежнему будут выходить в рамках 25H2, которая уже развёртывается массово и продлевает поддержку Windows 11 до 2028 года.
Microsoft подтвердила скорый выход версии 26H1 - первой весенней сборки новой Windows.
Она уже доступна инсайдерам, начиная со сборки 28000.
26H1 не добавит пользовательских функций - только платформенные изменения под новое железо, предположительно Snapdragon X2 для ПК Copilot+ следующего поколения.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍2❤1👎1
Изолируем сетевые интерфейсы для тестов
Надо попробовать что-то с сетью, но боишься сломать основную? Linux умеет создавать отдельные сетевые пространства через ip netns.
Внутри них можно поднимать интерфейсы, запускать сервисы и даже NAT - всё, что угодно, не трогая основной сервер.
Делаем быстро
Назначаем адреса и поднимаем интерфейсы
И вот сейчас внутри testns можно запускать свои тесты, пинговать veth0 и проверять всё, что угодно, не трогая остальную сеть.
Проверим:
Надо попробовать что-то с сетью, но боишься сломать основную? Linux умеет создавать отдельные сетевые пространства через ip netns.
Внутри них можно поднимать интерфейсы, запускать сервисы и даже NAT - всё, что угодно, не трогая основной сервер.
Делаем быстро
# Создаём namespace
sudo ip netns add testns
# Делаем пару виртуальных интерфейсов
sudo ip link add veth0 type veth peer name veth1
# Перемещаем один интерфейс внутрь namespace
sudo ip link set veth1 netns testns
Назначаем адреса и поднимаем интерфейсы
# На основной сети
sudo ip addr add 192.168.100.1/24 dev veth0
sudo ip link set veth0 up
# В namespace
sudo ip netns exec testns ip addr add 192.168.100.2/24 dev veth1
sudo ip netns exec testns ip link set veth1 up
sudo ip netns exec testns ip link set lo up
И вот сейчас внутри testns можно запускать свои тесты, пинговать veth0 и проверять всё, что угодно, не трогая остальную сеть.
Проверим:
sudo ip netns exec testns ping 192.168.100.1
❤9👍7
Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.• Каждый кэширующий объект (например, inode cache, dentry cache, buffer head) имеет свой shrinker, который знает, какие элементы можно безопасно удалить.
• Процесс может быть запущен как фоновым демоном kswapd, так и напрямую при page reclaim.
• Shrinker сообщает ядру, сколько объектов он может освободить, и постепенно очищает кэш, не разрушая актив
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤4
Как проверять DNS и маршруты на продакшн-сервере
Когда что-то “не пингуется”, виноват не всегда фаервол.
Иногда DNS не резолвит, а иногда маршрут просто уходит не туда.
Проверять это на проде нужно аккуратно — без лишних правок и даунтайма.
Проверка DNS
Быстрее всего — dig.
Он показывает, какой сервер отвечает и какой IP вернулся.
Если у сервера systemd, можно проверить текущую конфигурацию DNS так:
или точечно:
Это покажет, какой DNS-сервер реально используется и как долго кэшируются записи.
Логирование результатов
Иногда удобно писать результаты проверок в лог, особенно при отладке периодических проблем с сетью:
Когда что-то “не пингуется”, виноват не всегда фаервол.
Иногда DNS не резолвит, а иногда маршрут просто уходит не туда.
Проверять это на проде нужно аккуратно — без лишних правок и даунтайма.
Проверка DNS
Быстрее всего — dig.
Он показывает, какой сервер отвечает и какой IP вернулся.
dig example.com
dig @8.8.8.8 example.com +short
Если у сервера systemd, можно проверить текущую конфигурацию DNS так:
resolvectl status
или точечно:
resolvectl query example.com
Это покажет, какой DNS-сервер реально используется и как долго кэшируются записи.
Логирование результатов
Иногда удобно писать результаты проверок в лог, особенно при отладке периодических проблем с сетью:
{
date
dig +short example.com
ip route get 8.8.8.8
} >> /var/log/netcheck.log 2>&1👍10❤3
Что произойдёт, если в Linux PID 1 (init/systemd) аварийно завершится?
Anonymous Quiz
20%
Процесс автоматически перезапустится
21%
Ядро создаст новый init
54%
Система упадёт с kernel panic
5%
Сервисы продолжат работать
❤2
Как отследить утечки памяти у демонов?
Иногда сервисы начинают «распухать» по памяти, особенно те, что работают месяцами без рестартов.
В Linux это можно заметить и даже ограничить — без внешних мониторингов.
🔍 Проверяем использование памяти
Посмотреть, кто сколько ест:
или подробнее по процессу:
Если сервис запущен через systemd — можно сразу смотреть в разрезе cgroup:
или точечно:
⚙️ Автоматическое ограничение памяти
В unit-файле можно задать предел, после которого systemd перезапустит сервис:
После изменения — не забыть:
Иногда сервисы начинают «распухать» по памяти, особенно те, что работают месяцами без рестартов.
В Linux это можно заметить и даже ограничить — без внешних мониторингов.
Посмотреть, кто сколько ест:
smem -p | sort -k 4 -h
или подробнее по процессу:
pmap -x <PID>
Если сервис запущен через systemd — можно сразу смотреть в разрезе cgroup:
systemd-cgtop
или точечно:
systemctl status myservice
В unit-файле можно задать предел, после которого systemd перезапустит сервис:
[Service]
MemoryMax=500M
Restart=on-failure
После изменения — не забыть:
sudo systemctl daemon-reload
sudo systemctl restart myservice
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥5❤1
Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.PSI не измеряет загрузку напрямую — он измеряет «stall time» — сколько процессов одновременно не могли продолжить работу из-за нехватки ресурса. Это дает более реалистичную картину деградации системы.
Проверка PSI осуществляется через:
cat /proc/pressure/cpu
cat /proc/pressure/memory
cat /proc/pressure/io
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4
Как сделать аварийный SSH-вход при падении сети
Бывает, обновил firewall или NetworkManager — и основной SSH отвалился.
Чтобы не остаться без доступа, можно поднять резервный sshd — на другом порту и интерфейсе.
⚙️ Создаём копию конфигурации
В файле sshd_config_alt укажи, например:
(адрес — интерфейс, который не трогают твои основные правила).
🚀 Запускаем второй sshd вручную
или через systemd:
(в некоторых дистрибутивах можно создать отдельный unit-файл).
🧭 Проверяем доступ
С другой машины:
Если всё работает — можно спать спокойнее: при сбое сети или блокировке основного порта резервный SSH всё ещё жив.
Бывает, обновил firewall или NetworkManager — и основной SSH отвалился.
Чтобы не остаться без доступа, можно поднять резервный sshd — на другом порту и интерфейсе.
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_alt
В файле sshd_config_alt укажи, например:
Port 2222
ListenAddress 192.168.100.10
PidFile /run/sshd-alt.pid
(адрес — интерфейс, который не трогают твои основные правила).
sudo /usr/sbin/sshd -f /etc/ssh/sshd_config_alt
или через systemd:
sudo systemctl start [email protected]
(в некоторых дистрибутивах можно создать отдельный unit-файл).
С другой машины:
ssh -p 2222 [email protected]
Если всё работает — можно спать спокойнее: при сбое сети или блокировке основного порта резервный SSH всё ещё жив.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤4👎1🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣20😁10❤3
Почему может зависнуть SSH-сессия, если в .bashrc есть команда stty?
Anonymous Quiz
8%
Неправильные права доступа
62%
Терминал не инициализирован при non-interactive входе
14%
Конфликт портов
15%
Ошибка PAM-модуля
❤6👍3
Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.exec() — это семейство функций (execl, execp, execve и др.), которое заменяет текущий процесс на новый, загружая в его адресное пространство другую программу. После вызова exec() оригинальный код процесса больше не выполняется — он полностью замещается. Это удобно, если вы после fork() хотите в дочернем процессе запустить другую программу (что и делает большинство шеллов при запуске команд).
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤3🔥1