NetworkAdmin.ru
Открыть в Telegram
Авторский блог про сетевое и системное администрирование. Сайт: networkadmin.ru Реклама: @dad_admin Биржа: https://telega.in/c/networkadminru
Больше4 715
Подписчики
-524 часа
-107 дней
-930 день
Архив постов
4 715
⚠️ Ваши приложения работают, но знаете ли вы, что происходит внутри? Проблемы часто обнаруживаются слишком поздно. Пора научиться предотвращать их.
☝️ На открытом уроке «Мониторинг и алертинг приложений с помощью Prometheus и Grafana» 28 августа 20:00 МСК мы покажем, как собирать метрики и трейсы, визуализировать их в Grafana и реагировать на сбои с помощью алертов. Мы разберем шаг за шагом, как настроить Prometheus и создать триггеры, которые помогут вам оперативно решать проблемы, не дождавшись их проявления.
🧠 Вебинар проходит в преддверие старта курса «DevOps практики и инструменты». Успейте на онлайн-курс от OTUS с максимальной скидкой по промокоду DevOps_09. Группа стартует уже 29 сентября.
👉 Зарегистрируйтесь для участия: https://otus.pw/Eaa1/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
4 715
👁 Проверка MTU и проблемы с фрагментацией пакетов
MTU (Maximum Transmission Unit) - это максимальный размер пакета, который может быть передан без фрагментации. Неправильно настроенное значение MTU может привести к странным сетевым багам: страницы не грузятся до конца, SSH висит, API-запросы обрываются и т.д.
▪️ Как проверить MTU между двумя узлами?
Один из самых надежных способов - использовать
ping с флагом запрета фрагментации (в Linux - -M do):
ping -c 4 -M do -s 1472 8.8.8.8
Почему 1472? 1472 байта данных + 28 байт заголовков (IP + ICMP) = 1500 байт - стандартное MTU для Ethernet.Если MTU меньше - вы получите ошибку:
Frag needed and DF set
Уменьшайте значение -s по шагам, пока ping не пройдет - это и будет максимальный размер без фрагментации.
▪️ Альтернатива - tracepath:
tracepath 8.8.8.8
Этот инструмент сам определяет, на каком узле в пути начинается фрагментация.
▪️ Настройка MTU:
Постоянная настройка через netplan (Ubuntu):
ethernets:
eth0:
dhcp4: yes
mtu: 1400
Для временного изменения:
ip link set dev eth0 mtu 1400
▪️ Проблемы с фрагментацией чаще всего появляются:
При использовании VPN и туннелей (WireGuard, IPsec, OpenVPN) В облачных сетях с Jumbo Frames При неправильно настроенном MSS (Maximum Segment Size)Для TCP можно использовать
iptables для автоматической коррекции MSS:
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
-j TCPMSS --clamp-mss-to-pmtu
#ping #MTU
🧑💻 NetworkAdmin4 715
🔥🔥Внимание! С 26 по 28 августа вы можете приобрести курсы для системных администраторов и программистов со скидкой 30%!
🐍 Курс "Python": создавай уникальные проекты и приложения, стань экспертом в программировании на языке Python.
⚙️ Курс "DevOps": освой все инструменты и методологии управления жизненным циклом программного обеспечения, стань техническим лидером в своей команде.
🐧 Курс "Linux": освой настройку серверов, работу с командной строкой и автоматизацию процессов, стань экспертом в администрировании операционной системы Linux. А еще, у нас есть курс по Windows Server 🌟
🌐 Курс "Сетевой инженер": овладей всеми тонкостями настройки маршрутизаторов и коммутаторов, обеспечь безопасность сетевых инфраструктур и стань востребованным специалистом.
🎓Диплом о профпереподготовке по окончанию обучения!
Готов выйти на новый уровень? Выбирай курс и достигай новых высот в карьере!
👉 Выбрать курс: https://tglink.io/0ecc9f5fa25f?erid=2W5zFHkMbLU
#реклама
О рекламодателе
4 715
⚙️ Управление оперативной памятью без перезагрузки
Знали ли вы, что в linux можно отключать и включать оперативную память без перезагрузки? Главное условие - отключаемые блоки памяти должны быть свободны.
▪️ Для начала - полезная команда:
lsmem
Она покажет, как ядро видит вашу память - в виде блоков. Например:
RANGE SIZE STATE REMOVABLE BLOCK
0x0000000000000000-0x00000000f7ffffff 3.9G online yes 0-30
0x0000000100000000-0x0000000107ffffff 128M online yes 32
Блоки - по 128M. Всего - 4G.
▪️ Пример: хотим временно отключить 1G памяти:
chmem -d 1G
▪️ Или выборочно - блоки с 22 по 29:
chmem -d -b 22-29
Если память занята, chmem попробует переместить данные и освободить нужные блоки. Это может занять некоторое время.
▪️ Проверяем результат:
lsmem
Теперь 1G памяти offline. Осталась активной - 3G.
▪️ Возвращаем память обратно:
chmem -e 1G
#linux #RAM
🧑💻 NetworkAdmin4 715
10–11 сентября встречаемся на IT Elements — конференции, сделанной айтишниками для айтишников.
Площадка в третий раз станет точкой притяжения тех, кто реально делает ИТ в России. В этом году в фокусе — критически важные направления отрасли: инфраструктура, сети, кибербезопасность, данные и AI/ML.
Тематические треки:
▪️Инфраструктура: антихрупкость в архитектуре, инфраструктура для ИИ, отечественные решения, защита, стратегии, ключевые платформы (гибридные облака, БД, хранилища), контейнеры и Kubernetes.
▪️Сети: будущее сетей, сервис, ЦОДы для ИИ, VXLAN, балансировка, UC, управление.
▪️Кибербезопасность: киберустойчивость, импортозамещение NGFW, безопасная разработка, управление уязвимостями, мониторинг инцидентов, киберучения.
▪️Данные и ИИ: Data-driven-инфраструктура, миграция на LakeHouse, Big Data, автоматизация разработки, MES-оптимизация, корпоративные GPT-ассистенты и агенты, ESM-системы.
Формат: офлайн в Москве или онлайн.
Участие бесплатное, по предварительной регистрации.
4 715
Бесплатный урок по Apache Kafka⭐️
Учим работать с реальными исходными данными, а не на теоретических примерах.
✅Расскажем про язык Кафки: топики, партиции, продюсеры-консьюмеры, кластер, ноды.
✅Рассмотрим: как работают очереди сообщений, сколько должно быть консьюмеров для эффективной вычитки, как повысить надёжность кластера с помощью репликации данных.
✅Покажем, как развернуть кластер Кафки на своём ПК с 3 нодами, schema-registry и авторизацией.
Обычно в инструкциях кластер из 1 ноды, зукипера и 1 брокера, но это не наш путь, смотрим сразу на практике.
Забрать урок👉🏻в боте
4 715
📍 Анализ открытых портов и процессов в Linux
Когда сервер начинает вести себя подозрительно - например, появляется неизвестный открытый порт, нестандартный трафик или система тормозит - важно быстро выяснить: что за процесс, что он слушает и какие соединения установлены. Для этого можно использовать связку: ss, lsof и каталог /proc.
1️⃣ ss - быстро и точно о сетевых соединениях. Современная замена netstat, работает быстрее и точнее:
ss -tulnp
Покажет все TCP/UDP-порты, которые слушают процессы:
-tuln - TCP/UDP, слушающие, без разрешения имен
-p - имя процесса и PID
Пример:
LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=1234,fd=6))
2️⃣ lsof - подробности о дескрипторах и файлах. lsof позволяет заглянуть глубже в то, что именно открыт у процесса:
lsof -i :80
Выведет все процессы, использующие порт 80.
lsof -nP -iTCP -sTCP:LISTEN
Список всех TCP-сервисов, которые слушают порты.
3️⃣ /proc - внутренняя кухня процесса. Для изучения процесса изнутри можно обратиться к /proc/<PID>/fd - тут видны все открытые дескрипторы:
ls -l /proc/1234/fd
Покажет, какие файлы, сокеты и каналы открыт у процесса с PID 1234.
Для конкретного сокета:
ls -l /proc/1234/fd | grep socket
Также можно посмотреть cmdline:
cat /proc/1234/cmdline
4️⃣ Комбинируем все вместе. Узнаем, какой процесс слушает порт:
ss -tulnp | grep :8080
Получаем его PID → проверяем, какие соединения установлены:
lsof -p 1234 -i
Лезем в /proc/1234/ за подробностями:
/fd - дескрипторы
/status - ресурсы и права
/cmdline - команда запуска
#linux #network
🧑💻 NetworkAdmin4 715
Представьте, что злоумышленники сами дают вам «дружеские» рекомендации. Читайте, проверяйте себя и запоминайте, как делать НЕ НАДО!
🤡 Смело переходить по неизвестным ссылкам
«Вы выиграли миллион!» — ну это же точно правда (НЕТ).
Это классический фишинг. Любая подозрительная ссылка может вести на поддельный сайт с целью похитить ваши данные.
🤡 Использовать самый простой пароль 123456
Зачем усложнять: быстро вводится, легко запоминается (НЕТ).
Слабый пароль взламывается за секунды. Безопасный пароль — это длинная и уникальная комбинация букв, цифр и символов.
🤡 Верить всему, что видите в Интернете
Если друг пишет, что ему срочно нужны деньги — значит нужно быстро ему помочь. Голосовые сообщения – стопроцентное доказательство, что это точно он (НЕТ).
Дипфейки и взломанные аккаунты – стандартный инструмент злоумышленников.
А теперь серьезно: все вышеперечисленное – прямой путь к взлому и потере данных. Будьте на шаг впереди злоумышленников, подписывайтесь на канал Индид – компании, создающей решения в области Identity Security, и прокачивайте свою цифровую безопасность.
📌Присоединяйтесь и читайте полезные материалы, которые помогут защитить ваши данные.
#реклама
О рекламодателе
4 715
👤 Как перенести пользователей между серверами с сохранением UID, групп и паролей
Иногда возникает необходимость перенести локальных пользователей с одного linux-сервера на другой - при миграции, клонировании окружений или настройке тестовой копии. Но важно не просто скопировать имена, а сохранить UID, GID, пароли и групповые принадлежности, чтобы избежать конфликтов и сохранить доступы.
🌟 Что нужно сохранить
/etc/passwd - основная информация о пользователях /etc/shadow - пароли пользователей /etc/group - группы /etc/gshadow - пароли групп (редко) /home/ - директории пользователей и их данные (если нужно)1️⃣ Фильтрация нужных пользователей. На проде часто много системных аккаунтов. Чтобы перенести только нужных людей, можно отфильтровать пользователей с UID > 1000 (или 500 - зависит от дистрибутива):
awk -F: '$3 >= 1000 && $3 < 60000 { print $1 }' /etc/passwd
2️⃣ Экспорт записей. Выполните на исходном сервере:
#пользователей
awk -F: '$3 >= 1000 && $3 < 60000' /etc/passwd > users.passwd
#пароли
awk -F: 'NR==FNR{a[$1]; next} $1 in a' users.passwd /etc/shadow > users.shadow
#группы
awk -F: '$3 >= 1000 && $3 < 60000' /etc/group > users.group
awk -F: 'NR==FNR{a[$1]; next} $1 in a' users.passwd /etc/gshadow > users.gshadow
Скопируйте файлы users.passwd, users.shadow, users.group, users.gshadow на новый сервер.
3️⃣ Импорт на новом сервере. На новом сервере:
Сначала делаем резервные копии оригинальных файлов:
cp /etc/passwd /etc/passwd.bak
cp /etc/shadow /etc/shadow.bak
cp /etc/group /etc/group.bak
cp /etc/gshadow /etc/gshadow.bak
Затем добавляем новые записи (убедитесь, что нет конфликтов UID/GID):
cat users.passwd >> /etc/passwd
cat users.shadow >> /etc/shadow
cat users.group >> /etc/group
cat users.gshadow >> /etc/gshadow
4️⃣ Копирование домашней директории
rsync -avz /home/ user@newserver:/home/
Не забудьте про владельцев:
chown -R username:groupname /home/username
Проверка
getent passwd имя_пользователя
id имя_пользователя
su - имя_пользователя
🌟 Если вы переносите пользователей с sudo-доступом, убедитесь, что их записи присутствуют в /etc/sudoers или /etc/sudoers.d/.
#linux #users
🧑💻 NetworkAdmin4 715
📄 Разделение логов по уровням и сервисам с systemd-journald
Если вы работаете на современном дистрибутиве linux, то почти наверняка используете systemd, а значит - и journald для сбора логов. Это система логирования, которая умеет куда больше, чем просто показывать логи командой journalctl. Сегодня - о том, как удобно фильтровать и разделять логи по уровню важности (info, warning, error и т.д.) и сервисам, чтобы быстро находить нужную информацию.
▪️ Фильтрация логов по юниту. Чтобы посмотреть логи конкретного сервиса:
journalctl -u nginx.service
Добавьте -b для вывода только с текущей загрузки:
journalctl -u ssh.service -b
▪️ Логи по уровню важности. Вы можете указать минимальный уровень важности:
journalctl -p err # Только ошибки и критичнее
Список уровней (от менее к более важным):
0: emerg 1: alert 2: crit 3: err 4: warning 5: notice 6: info 7: debugПример: показать все warning и выше от sshd:
journalctl -u ssh.service -p warning
▪️ Ограничение по времени. Чтобы не утонуть в огромных логах:
journalctl --since "1 hour ago"
journalctl --since "2025-09-18" --until "2025-09-19 03:00"
▪️ Разделение логов по каталогам. По умолчанию journald пишет в /run/log/journal (в RAM), если /var/log/journal отсутствует. Чтобы сохранять логи между перезагрузками:
mkdir -p /var/log/journal
systemd-tmpfiles --create --prefix /var/log/journal
systemctl restart systemd-journald
▪️ Настройка persist-логирования и лимитов. В файле /etc/systemd/journald.conf можно настроить:
Storage=persistent
SystemMaxUse=500M
RuntimeMaxUse=100M
MaxRetentionSec=7day
После правок - перезапустите journald:
systemctl restart systemd-journald
▪️ Глубокие фильтры. Вывести только ошибки от ядра:
journalctl _TRANSPORT=kernel -p err
Фильтр по PID:
journalctl _PID=1234
По имени бинарника:
journalctl _COMM=nginx
#logs #systemd
🧑💻 NetworkAdmin4 715
🚫 Блокировка стран по IP
Если нужно ограничить доступ к сервису из определенных стран (например, через iptables или nginx), потребуется актуальный список IP-сетей по географии.
Готовые списки можно взять отсюда. Например, список сетей России здесь
Каждая строка - отдельная подсеть, удобно парсить скриптами.
🛠 Пример скрипта: создаем IP whitelist через ipset
#!/bin/bash
# Удаляем старый список (если был)
ipset destroy whitelist 2>/dev/null
# Создаем новый
ipset create whitelist hash:net
# Скачиваем нужные страны (пример: некоторые страны СНГ)
wget -O netwhite http://www.ipdeny.com/ipblocks/data/countries/{ru,kz,by,uz,kg,am,az,ge,tj}.zone
# Добавляем подсети в ipset
for ipnet in $(cat netwhite); do
ipset add whitelist $ipnet
done
# Проверка
ipset save whitelist > whitelist-export.txt
echo "IP-сети загружены в ipset"
Теперь подключаем список к iptables:
iptables -A INPUT -m set --match-set whitelist src -p tcp --dport 80 -j ACCEPT
⚠️ Важно: если сетей больше ~2000, не загружайте их напрямую в iptables - используйте ipset, иначе правила займут много памяти и ресурсов.
▪️ Альтернатива - готовые конфиги под разные сервисы
Сервис: https://www.ip2location.com/free/visitor-blocker
Можно сразу получить правила под apache, nginx, iptables, mikrotik и другие.
#iptables #ipset
🧑💻 NetworkAdmin4 715
🐶 Фейковый root в linux: зачем он нужен и когда пригодится
Наткнулся на утилиту с говорящим названием -
fakeroot. Оказывается, она довольно старая и есть в стандартных репозиториях большинства дистрибутивов. Программа запускает окружение, в котором приложения думают, что работают с root-доступом. На самом деле вы остаетесь обычным пользователем, а fakeroot просто перехватывает системные вызовы (через LD_PRELOAD) и подменяет информацию.
▪️ Установка:
sudo apt install fakeroot
Запускаем:
fakeroot
В консоли появляется как будто бы root@host, и все поведение напоминает работу с sudo su.
▪️ Пример
touch test.txt
ls -la test.txt
Внутри fakeroot получите:
-rw-r--r-- 1 root root 0 ...
Выйдя из него:
-rw-r--r-- 1 username username 0 ...
То есть реально файл принадлежит обычному пользователю, но fakeroot создаёт иллюзию root-доступа.
❓ Зачем это вообще нужно?
Основное назначение - создание архивов и пакетов, содержащих файлы от имени root, без необходимости работать под настоящим root.
Например, вы собираете .deb-пакет с системными файлами или конфигами, которые в реальной установке должны принадлежать root. С помощью fakeroot вы можете задать нужные владельцы/права без прав суперпользователя.
🌟 Также будет полезно, если:
📍 Вы хотите пропустить ошибки доступа к файлам при архивации/копировании;
📍 Программа ругается на отсутствие root-доступа, но для вашей задачи это некритично;
📍 Вы работаете на CI/CD или в изолированном окружении без root-доступа
#fakeroot #linux
🧑💻 NetworkAdmin4 715
По мере того, как сети становятся сложнее и масштабнее, организации сталкиваются с растущими трудностями в поддержании точной, динамичной и безопасной сетевой инвентаризации.
Устаревшие системы, гибридные инфраструктуры и развивающиеся угрозы безопасности усложняют решение таких задач.
Готовые решения существуют, и, как всегда, есть различные “но”, вынуждающие либо идти на компромиссы или вложения дополнительных ресурсов, либо же раздувать штат соответствующих специалистов для увеличения охвата текущих задач по сетевой инфраструктуре.
В первой части статьи мы рассказали о нашей идеологии в инструментарии для поддержки и конфигурирования сети.
В этой части мы хотим детальнее рассказать о реализованных нами решениях по поднятым вопросам и размышлениям и поделиться результатами.
Прочитать можно здесь:⬇️
https://dzen.ru/a/aJx4knpIYn5Ct87m
4 715
🤢 HDD или SSD? Как быстро определить тип диска в linux
Если вы не уверены, установлен ли в вашем сервере SSD или классический жесткий диск, вот простой способ это проверить без сторонних утилит:
cat /sys/block/sda/queue/rotational
1
cat /sys/block/sde/queue/rotational
0
Значение 1 означает HDD (с вращающимся шпинделем), 0 - SSD (без вращения).
🌟 Как это работает?
Это файловый интерфейс к параметрам устройств в Linux. Поле rotational говорит ядру, как обращаться с устройством:
HDD - запросы стараются упорядочивать, чтобы сократить перемещения головки.
SSD - доступ равномерный, очередь не критична.
Поэтому для SSD оптимизация очереди часто не нужна - это влияет на планировщик ввода-вывода.
❓ А что в виртуалках?
Виртуальные машины чаще всего по умолчанию видят виртуальные диски как HDD, даже если физический диск - SSD. Проверка rotational внутри VM может вернуть 1.
Пример: Proxmox. Чтобы "объяснить" виртуалке, что она на SSD:
📍 В настройках диска активируйте опцию SSD Emulation.
📍 После этого значение rotational станет 0.
Это не критично, но желательно - для корректной работы планировщика в гостевой ОС.
❓ Trim в VM: работает или нет? Появляется логичный вопрос: если включить SSD-эмуляцию, будет ли работать TRIM в виртуалке?
Нет, сам по себе флаг SSD не включает поддержку TRIM.
Чтобы TRIM работал в гостевой ОС:
📍 Виртуальный диск должен поддерживать discard.
📍 Должна быть включена поддержка в гипервизоре (например, в proxmox - флаг Discard).
📍 Гостевая ОС должна использовать файловую систему, поддерживающую TRIM (ext4, btrfs и т.д.) и выполнять его (например, через fstrim или discard в /etc/fstab).
#linux #storage
🧑💻 NetworkAdmin4 715
🛡 Как корректно отслеживать и логировать выполнение Ansible-плейбуков
Если вы регулярно работаете с Ansible - важно не только писать рабочие плейбуки, но и контролировать, когда, кем и как они были запущены. Особенно, если в вашей инфраструктуре Ansible используется как часть CI/CD или централизованного управления.
1️⃣ Включаем логирование в конфиге Ansible. В файле
/etc/ansible/ansible.cfg (или в локальной копии ansible.cfg) пропишите:
[defaults]
log_path = /var/log/ansible.log
Ansible начнет писать все свои действия в указанный файл. Убедитесь, что у пользователя, запускающего Ansible, есть права на запись.
2️⃣ Используйте теги и переменные для понятности. Добавляйте теги к задачам:
- name: Установка nginx
apt:
name: nginx
state: present
tags:
- web
- nginx
Это поможет фильтровать задачи в логах, запускать только нужные части и документировать назначение.
3️⃣ Логируйте переменные, хосты, результаты. Для отладки - полезно писать значения переменных в лог:
- name: Показываем значение переменной
debug:
var: some_variable
Также можно логировать hostname, пользователя и дату запуска, добавляя кастомную задачу:
- name: Логируем запуск
shell: echo "{{ ansible_date_time.iso8601 }}: {{ inventory_hostname }} - {{ ansible_user }}" >> /var/log/ansible_run.log
4️⃣ Используйте Ansible Callback Plugins. Для более глубокого логирования можно подключить callback-плагины.
Например, json или yaml:
[defaults]
stdout_callback = yaml
А если хотите логировать в файл в формате JSON, можно использовать:
[defaults]
callback_whitelist = json
stdout_callback = json
log_path = /var/log/ansible-json.log
5️⃣ Храните вывод выполнения с ansible-playbook. При запуске:
ansible-playbook site.yml | tee -a /var/log/ansible-run-$(date +%F-%T).log
Так у вас будет отдельный лог под каждое выполнение.
6️⃣ Интеграция с CI/CD и мониторингом. Если Ansible запускается через GitLab, Jenkins, Drone и прочее - обязательно сохраняйте артефакты выполнения и возвращайте статус завершения. Также можно отправлять результаты выполнения в телегу через webhook после ansible-playbook.
#ansible #security
🧑💻 NetworkAdmin4 715
✨ Как работает LACP и зачем использовать агрегирование каналов
Когда одного сетевого интерфейса мало - приходит время объединять их в «команду». Это называется агрегация каналов, и один из самых популярных способов реализовать ее - протокол LACP (Link Aggregation Control Protocol).
LACP - часть стандарта IEEE 802.3ad. Он позволяет объединить несколько физических интерфейсов в один логический (LAG - Link Aggregation Group), который операционная система и приложения видят как один.
🌟 Зачем это нужно?
📍 Повышение пропускной способности; 📍 Повышение отказоустойчивости (если один порт отваливается - остальные продолжают работать); 📍 Балансировка нагрузки между портами.🌟 Как это работает
📍 LACP автоматически обнаруживает, какие интерфейсы можно объединить 📍 Обе стороны (свитч и хост) договариваются, какие порты войдут в LAG 📍 Если кабель выпал или порт упал - он просто исключается из группы, ничего не рушится▪️ Настройка в Linux. Пример для двух интерфейсов ens33 и ens34: 1️⃣ Устанавливаем ifenslave (если нужно):
sudo apt install ifenslave
2️⃣ Настраиваем bonding-мод LACP (mode 4): В /etc/network/interfaces или аналогичном конфиге:
auto bond0
iface bond0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
bond-slaves ens33 ens34
bond-mode 802.3ad
bond-miimon 100
bond-lacp-rate fast
bond-xmit-hash-policy layer3+4
3️⃣ Важно! На свитче тоже нужно включить LACP на соответствующих портах (обычно называются channel-group или LAG в интерфейсе).
⭐️ Несколько нюансов:
📍 LACP работает только при поддержке с обеих сторон (сервер + свитч) 📍 LAG не удваивает скорость для одного TCP-соединения, но позволяет нескольким соединениям распределяться по разным каналам 📍 Лучше всего работает с хешированием по Layer3+4 (IP + порт)#network #LACP 🧑💻 NetworkAdmin
4 715
📈 Как сымитировать нагрузку в linux без сторонних утилит
Иногда при настройке мониторинга на малонагруженных серверах нужно протестировать графики и дашборды, добавив искусственную нагрузку. Устанавливать отдельные утилиты вроде
stress или stress-ng не всегда хочется. К счастью, это можно сделать встроенными средствами - через dd, sha1sum, yes, /dev/zero, /dev/urandom и другие.
▪️ Нагрузка на диск и CPU одновременно. Сжимаем случайные данные и пишем во временный файл:
while true; do
dd if=/dev/urandom count=30M bs=1 | bzip2 -9 > /tmp/tempfile
rm -f /tmp/tempfile
done
/dev/urandom → нагрузка на диск bzip2 -9 → нагрузка на CPU count=30M - объем данных -9 - максимальная степень сжатияИзменяйте параметры, чтобы регулировать силу нагрузки. ▪️ Только диск: оценка скорости записи. Быстрое тестирование производительности диска:
sync; dd if=/dev/zero of=/tmp/tempfile bs=1M count=1024; sync
Вывод покажет, с какой скоростью пишутся 1 ГБ данных.
▪️ Только CPU: простейшие варианты.
Нагрузка на одно ядро:
dd if=/dev/zero of=/dev/null
Параллельная нагрузка на несколько ядер:
cpuload() {
dd if=/dev/zero of=/dev/null &
dd if=/dev/zero of=/dev/null &
}
cpuload; read; pkill dd
Либо:
sha1sum /dev/zero
Для нескольких ядер:
seq 4 | xargs -P0 -n1 timeout 10 sha1sum /dev/zero
▪️ Простая нагрузка в пространстве ядра
seq 4 | xargs -P0 -n1 timeout 10 yes > /dev/null
Запускается yes, который генерирует бесконечный вывод. Отлично грузит CPU в режиме ядра.
▪️ Загрузка памяти. Скрипт на Python, резервирующий 1 ГБ RAM:
python3 -c 'a="a"*1024**3; input()'
Можно менять объем, изменяя 1024**3.
#linux #monitoring
🧑💻 NetworkAdmin
Уже доступно! Исследование Telegram 2025 — ключевые инсайты года 
