Admin Guides | Сисадмин – Telegram
Admin Guides | Сисадмин
11.5K subscribers
1.39K photos
20 videos
34 files
590 links
Обучающий канал по ОС Linux & Windows для начинающих и действующих администраторов.

Админ, реклама: @Ak_Mihail
Биржа: https://telega.in/c/admguides

РКН: https://kurl.ru/nQejS
Download Telegram
Вышел Rust 1.91.0!

30 октября 2025 года состоялся релиз новой версии языка Rust — одной из самых стабильных и безопасных экосистем в мире. 


В обновлении участвовали 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.
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍3
💬 Вопрос на собеседовании для DevOps-инженера

Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.


Вопрос: Что такое seq_file API в Linux и зачем оно используется?

Ответ: seq_file — это интерфейс ядра Linux, упрощающий вывод последовательных данных из ядра в пространство пользователя, например через /proc или /sys. Он нужен для безопасного и эффективного отображения длинных структурированных данных (таблицы, списки, статистику и т.п.).

Без seq_file разработчикам приходилось вручную управлять буферами, обрезками строк и позиционированием, что повышало риск ошибок.
seq_file решает эти проблемы, обеспечивая:

• последовательную генерацию данных в чанках,
• автоматическую поддержку seek/read,
• потокобезопасный доступ к данным ядра,
• экономию памяти за счёт ленивой генерации.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍64
Как безопасно удалить старые логи и кэши, не трогая нужное

Со временем на сервере накапливаются гигабайты старых логов и временных файлов.

Рука не поднимается чистить /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 — чистка логов.
10🔥8👍4
Отслеживаем, кто открывает соединения на сервере

На продакшн-сервере важно знать, какие процессы слушают порты и кто к ним подключается.

Даже если 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
👍128
Как защитить важные файлы от случайного удаления

На сервере есть критичные файлы: конфиги, скрипты, сертификаты.

Случайное удаление или модификация могут сломать сервис.

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


Пользователь deploy получает только чтение.
Список прав:

getfacl /etc/nginx/nginx.conf


Правильная настройка sudoers
Не даём всем полный ALL доступ.
Пример: разрешить перезагрузку nginx без права удалять файлы:

deploy ALL=(root) NOPASSWD: /bin/systemctl restart nginx
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥97
Microsoft готовит Windows 11 26H1 - апдейт без новых фишек

Microsoft подтвердила скорый выход версии 26H1 - первой весенней сборки новой Windows.

Она уже доступна инсайдерам, начиная со сборки 28000.


26H1 не добавит пользовательских функций - только платформенные изменения под новое железо, предположительно Snapdragon X2 для ПК Copilot+ следующего поколения.

Основные обновления по-прежнему будут выходить в рамках 25H2, которая уже развёртывается массово и продлевает поддержку Windows 11 до 2028 года.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍21👎1
Изолируем сетевые интерфейсы для тестов

Надо попробовать что-то с сетью, но боишься сломать основную? 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
💬 Вопрос на собеседовании для сисадмина

Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.


Вопрос: Что такое slab shrinker в Linux и как он участвует в освобождении памяти?

Ответ: Slab shrinker — это механизм ядра Linux, который отвечает за освобождение памяти, занятой кэширующими структурами (slab caches). Когда системе не хватает памяти, ядро вызывает shrinker-функции, зарегистрированные подсистемами, чтобы те попытались вернуть часть неиспользуемых объектов в общий пул памяти.

• Каждый кэширующий объект (например, inode cache, dentry cache, buffer head) имеет свой shrinker, который знает, какие элементы можно безопасно удалить.
• Процесс может быть запущен как фоновым демоном kswapd, так и напрямую при page reclaim.
• Shrinker сообщает ядру, сколько объектов он может освободить, и постепенно очищает кэш, не разрушая актив
Please open Telegram to view this post
VIEW IN TELEGRAM
👍94
Как проверять 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
👍103
Как отследить утечки памяти у демонов?

Иногда сервисы начинают «распухать» по памяти, особенно те, что работают месяцами без рестартов.

В 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
👍15🔥51
💬 Вопрос на собеседовании для DevOps-инженера

Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.


Вопрос: Что такое Linux PSI (Pressure Stall Information) и как его использовать для мониторинга?

Ответ: PSI — это механизм ядра Linux, позволяющий отслеживать давление на ресурсы: CPU, память и I/O. Он показывает, сколько времени процессы провели в ожидании этих ресурсов, что помогает выявить узкие места до того, как ситуация станет критичной (например, до вмешательства oom-killer).

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
😁20👍6🤔1
Как сделать аварийный 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


(адрес — интерфейс, который не трогают твои основные правила).

🚀 Запускаем второй sshd вручную

sudo /usr/sbin/sshd -f /etc/ssh/sshd_config_alt


или через systemd:

sudo systemctl start sshd@alt.service


(в некоторых дистрибутивах можно создать отдельный unit-файл).

🧭 Проверяем доступ

С другой машины:

ssh -p 2222 user@192.168.100.10


Если всё работает — можно спать спокойнее: при сбое сети или блокировке основного порта резервный SSH всё ещё жив.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍164👎1🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣20😁103
💬 Вопрос на собеседовании для сисадмина

Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.


Вопрос: Чем отличается fork() от exec() в Linux и когда использовать каждый из них?

Ответ: fork() — это системный вызов, создающий новый процесс путём копирования текущего. Получившийся дочерний процесс будет точной копией родительского: он унаследует дескрипторы файлов, переменные окружения и текущее состояние. Основное отличие — у него будет свой PID. Это полезно, если вы хотите создать процесс, который продолжит выполнять ту же программу, но, например, с другими параметрами.

exec() — это семейство функций (execl, execp, execve и др.), которое заменяет текущий процесс на новый, загружая в его адресное пространство другую программу. После вызова exec() оригинальный код процесса больше не выполняется — он полностью замещается. Это удобно, если вы после fork() хотите в дочернем процессе запустить другую программу (что и делает большинство шеллов при запуске команд).
Please open Telegram to view this post
VIEW IN TELEGRAM
👍103🔥1
Как замерить время DNS, TCP и TLS при подключении?

Порой сайт вроде открывается, но медленно, и непонятно, где затык: DNS, сеть или сервер.
curl умеет показать время на каждом этапе.

curl -o /dev/null -s -w \
"DNS: %{time_namelookup}s\nTCP: %{time_connect}s\nTLS: %{time_appconnect}s\nStartTransfer: %{time_starttransfer}s\nTotal: %{time_total}s\n" \
https://example.com


🤚Что показывает:
DNS — сколько ушло на резолв домена
TCP — время установки соединения
TLS — рукопожатие HTTPS
StartTransfer — когда сервер начал отдавать ответ
Total — общее время запроса

Если DNS кеш мешает, можно сбросить его:

systemd-resolve --flush-caches


или указать IP напрямую:

curl --resolve example.com:443:1.2.3.4 https://example.com
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥8👍7
Microsoft заблокировала KMS38 в Windows 11

В последних обновлениях Windows 11 (Patch Tuesday, ноябрь 2025) удалили функционал, позволяющий продлевать активацию ОС до 2038 года через KMS38 и скрипты MAS.

Метод работал через обход GatherOSstate, теперь он полностью отключён. 


Разработчики MASSGRAVE советуют использовать другие способы активации, например HWID или TSforge.

Интересно, что Microsoft официально почти не против подобных обходов: ключи для KMS и проекты GitHub остаются доступными, пока они не мешают обновлениям и телеметрии.
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥5