🧠 Как точно измерить использование памяти процессом в Linux
Когда система начинает «тормозить» или неожиданно заканчивается память, первое, что стоит проверить - какие процессы её съедают. Команды ps и top помогают получить общее представление, но цифры там часто обманчивы.
Процесс может выглядеть как прожорливый монстр, хотя значительная часть его памяти 0 shared, то есть разделяется с другими процессами. А наоборот, «лёгкий» процесс может скрытно потреблять больше через общие библиотеки и кэш.
Чтобы понять реальную картину, нужно копнуть глубже — в файловую систему /proc, а именно в файл smaps, где хранится подробная карта памяти каждого процесса.
Перед этим важно разобраться в трёх ключевых метриках:
- VSZ (Virtual Memory Size) — общий объём виртуальной памяти;
- RSS (Resident Set Size) — реальный объём памяти в RAM;
- PSS (Proportional Set Size) — точная оценка «реального» потребления с учётом разделяемых страниц.
💡 Эти метрики показывают, сколько памяти процесс действительно использует — и где она делится с другими.
Полный разбор и примеры смотри в оригинальном материале: blog.sysxplore.com/p/how-to-accurately-check-process-memory-usage-in-linux
@linux_education
Когда система начинает «тормозить» или неожиданно заканчивается память, первое, что стоит проверить - какие процессы её съедают. Команды ps и top помогают получить общее представление, но цифры там часто обманчивы.
Процесс может выглядеть как прожорливый монстр, хотя значительная часть его памяти 0 shared, то есть разделяется с другими процессами. А наоборот, «лёгкий» процесс может скрытно потреблять больше через общие библиотеки и кэш.
Чтобы понять реальную картину, нужно копнуть глубже — в файловую систему /proc, а именно в файл smaps, где хранится подробная карта памяти каждого процесса.
Перед этим важно разобраться в трёх ключевых метриках:
- VSZ (Virtual Memory Size) — общий объём виртуальной памяти;
- RSS (Resident Set Size) — реальный объём памяти в RAM;
- PSS (Proportional Set Size) — точная оценка «реального» потребления с учётом разделяемых страниц.
💡 Эти метрики показывают, сколько памяти процесс действительно использует — и где она делится с другими.
Полный разбор и примеры смотри в оригинальном материале: blog.sysxplore.com/p/how-to-accurately-check-process-memory-usage-in-linux
@linux_education
Sysxplore
How to Accurately Check Memory Consumption of a Process in Linux
When your Linux system starts feeling sluggish or running out of memory, one of the first things you’ll want to check is which processes are consuming the most RAM.
🔥3
💀Безопасники опубликовали список самых популярных — и самых опасных — паролей 2025 года. Картина знакомая:
123456
12345678
123456789
admin
1234
Aa123456
12345
password
123
1234567890
Ничего не меняется
Полный список: https://www.comparitech.com/news/minecraft-qwerty-and-india123-among-2025s-most-common-passwords-report/
@linux_education
123456
12345678
123456789
admin
1234
Aa123456
12345
password
123
1234567890
Ничего не меняется
Полный список: https://www.comparitech.com/news/minecraft-qwerty-and-india123-among-2025s-most-common-passwords-report/
@linux_education
🐍 Linux-совет, о котором знает очень мало людей
Когда вы пытаетесь размонтировать файловую систему (NFS, SSHFS, FTP, CIFS) и получаете вечное:
device is busy
часто lsof или fuser не показывают настоящий процесс, который держит монтирование.
Есть трюк, который почти никто не использует — прямой поиск через файловые дескрипторы процессов.
Вот команда, которая находит любой процесс, реально удерживающий путь:
for pid in /proc/[0-9]*; do
grep -q "your/mount/path" "$pid/fd"/* 2>/dev/null \
&& echo "PID: ${pid#/proc/}"
done
Что делает этот приём:
- перебирает каждый процесс в системе
- просматривает его открытые файловые дескрипторы
- находит тех, кто удерживает нужный путь
- работает даже в ситуациях, где lsof «слепой»
- позволяет точно определить виновника ошибки “device is busy”
Где полезно:
- зависший NFS после сетевого лага
- SSHFS, который удерживает сессию “наполовину”
- удалённый каталог, который держит старый процесс
- случаи, когда файловая система размонтировалась логически, но процесс всё ещё держит дескриптор
Этот метод - настоящий рентген Linux, спасает там, где все остальные инструменты бессильны.
@linux_education
Когда вы пытаетесь размонтировать файловую систему (NFS, SSHFS, FTP, CIFS) и получаете вечное:
device is busy
часто lsof или fuser не показывают настоящий процесс, который держит монтирование.
Есть трюк, который почти никто не использует — прямой поиск через файловые дескрипторы процессов.
Вот команда, которая находит любой процесс, реально удерживающий путь:
for pid in /proc/[0-9]*; do
grep -q "your/mount/path" "$pid/fd"/* 2>/dev/null \
&& echo "PID: ${pid#/proc/}"
done
Что делает этот приём:
- перебирает каждый процесс в системе
- просматривает его открытые файловые дескрипторы
- находит тех, кто удерживает нужный путь
- работает даже в ситуациях, где lsof «слепой»
- позволяет точно определить виновника ошибки “device is busy”
Где полезно:
- зависший NFS после сетевого лага
- SSHFS, который удерживает сессию “наполовину”
- удалённый каталог, который держит старый процесс
- случаи, когда файловая система размонтировалась логически, но процесс всё ещё держит дескриптор
Этот метод - настоящий рентген Linux, спасает там, где все остальные инструменты бессильны.
@linux_education
👍7🔥3❤1
👣 Rust for Malware Development
В этом репозитории содержатся исходный код различных методов, используемых авторами вредоносных программ, участниками Red Team, злоумышленниками, спонсируемыми государством хакерскими группами и т. д.
Эти методы хорошо исследованы и реализованы на Rust.
Отличный материал для погружения в кибербез.
🟠Github: https://github.com/Whitecat18/Rust-for-Malware-Development
@linux_education
В этом репозитории содержатся исходный код различных методов, используемых авторами вредоносных программ, участниками Red Team, злоумышленниками, спонсируемыми государством хакерскими группами и т. д.
Эти методы хорошо исследованы и реализованы на Rust.
Отличный материал для погружения в кибербез.
🟠Github: https://github.com/Whitecat18/Rust-for-Malware-Development
@linux_education
❤1
🛡️ Продвинутый Linux-совет по защите: включи AppArmor/SELinux профайлы для изоляции сетевых инструментов
Большинство атак начинается с получения минимального доступа к системе через пользовательский процесс.
Чтобы даже с доступом злоумышленник не смог двигаться дальше, усиливай изоляцию ключевых CLI-инструментов (curl, wget, ssh, netcat), создавая для них ограниченные профайлы AppArmor или SELinux.
Что это даёт:
• запрет на выполнение произвольных системных вызовов
• запрет на доступ к файловой системе вне разрешённого диапазона
• недоступность /proc и /sys → сложнее собрать информацию об окружении
• ограничение сетевых направлений (например, только outbound HTTPS)
• невозможность запускать подпроцессы или загружать модули ядра
🛡️ Как быстро включить защиту команд в Linux (AppArmor)
1) Проверить, что AppArmor активен
sudo aa-status
Создать профиль для команды (пример: curl)
sudo nano /etc/apparmor.d/usr.bin.curl
Загрузить профиль
sudo apparmor_parser -r /etc/apparmor.d/usr.bin.curl
Включить режим enforcing
sudo aa-enforce /etc/apparmor.d/usr.bin.curl
Теперь команда работает в изолированном профиле.
Итог: даже если вредонос получил shell, он буквально «ходит по клетке» — минимальный damage, невозможность lateral movement и быстрый детект.
Если хочешь — напишу готовый шаблон AppArmor-профайла для конкретных утилит.
@linux_education
Большинство атак начинается с получения минимального доступа к системе через пользовательский процесс.
Чтобы даже с доступом злоумышленник не смог двигаться дальше, усиливай изоляцию ключевых CLI-инструментов (curl, wget, ssh, netcat), создавая для них ограниченные профайлы AppArmor или SELinux.
Что это даёт:
• запрет на выполнение произвольных системных вызовов
• запрет на доступ к файловой системе вне разрешённого диапазона
• недоступность /proc и /sys → сложнее собрать информацию об окружении
• ограничение сетевых направлений (например, только outbound HTTPS)
• невозможность запускать подпроцессы или загружать модули ядра
🛡️ Как быстро включить защиту команд в Linux (AppArmor)
1) Проверить, что AppArmor активен
sudo aa-status
Создать профиль для команды (пример: curl)
sudo nano /etc/apparmor.d/usr.bin.curl
Загрузить профиль
sudo apparmor_parser -r /etc/apparmor.d/usr.bin.curl
Включить режим enforcing
sudo aa-enforce /etc/apparmor.d/usr.bin.curl
Теперь команда работает в изолированном профиле.
Итог: даже если вредонос получил shell, он буквально «ходит по клетке» — минимальный damage, невозможность lateral movement и быстрый детект.
Если хочешь — напишу готовый шаблон AppArmor-профайла для конкретных утилит.
@linux_education
👍5
This media is not supported in your browser
VIEW IN TELEGRAM
✔️ Усиление ядра через sysctl
Продвинутый совет по Linux: включи контроль целостности системных конфигов через fs.protected_symlinks и fs.protected_hardlinks.
Эти параметры ядра блокируют атаки, использующие подмену симлинков и хардлинков в системных каталогах. Даже при локальном доступе злоумышленник не сможет подменить файлы или перенаправить операции системных служб.
# Включаем защиту симлинков
echo 1 | sudo tee /proc/sys/fs/protected_symlinks
# Включаем защиту хардлинков
echo 1 | sudo tee /proc/sys/fs/protected_hardlinks
# Делаем постоянным
sudo sh -c 'cat >> /etc/sysctl.d/99-hardening.conf
@linux_education
Продвинутый совет по Linux: включи контроль целостности системных конфигов через fs.protected_symlinks и fs.protected_hardlinks.
Эти параметры ядра блокируют атаки, использующие подмену симлинков и хардлинков в системных каталогах. Даже при локальном доступе злоумышленник не сможет подменить файлы или перенаправить операции системных служб.
# Включаем защиту симлинков
echo 1 | sudo tee /proc/sys/fs/protected_symlinks
# Включаем защиту хардлинков
echo 1 | sudo tee /proc/sys/fs/protected_hardlinks
# Делаем постоянным
sudo sh -c 'cat >> /etc/sysctl.d/99-hardening.conf
@linux_education
👍6
IP-сабнеттинг можно свести к одной простой шпаргалке
На картинке — таблица, которая помогает мгновенно понять:
- размер группы
- подходящую маску
- значение для каждого октета в CIDR
- как быстро вычислять подсети без калькулятора
Столбцы 128 64 32 16 8 4 2 1 — это двоичные веса восьми бит одного октета.
С их помощью можно за секунду определить любую маску сети (например, /20, /27, /29) и понять, как разбить адреса на подсети.
Если ты работаешь с сетями, DevOps или инфраструктурой — эта таблица реально заменяет любые длинные объяснения CIDR и subnet mask.
Минимальная, понятная и рабочая шпаргалка — больше и не нужно.
@linux_education
На картинке — таблица, которая помогает мгновенно понять:
- размер группы
- подходящую маску
- значение для каждого октета в CIDR
- как быстро вычислять подсети без калькулятора
Столбцы 128 64 32 16 8 4 2 1 — это двоичные веса восьми бит одного октета.
С их помощью можно за секунду определить любую маску сети (например, /20, /27, /29) и понять, как разбить адреса на подсети.
Если ты работаешь с сетями, DevOps или инфраструктурой — эта таблица реально заменяет любые длинные объяснения CIDR и subnet mask.
Минимальная, понятная и рабочая шпаргалка — больше и не нужно.
@linux_education
🔥2❤1
🔥 Linux-совет: ищи по **процессам**, а не по файлам
В Linux можно использовать grep для поиска прямо по аргументам запущенных процессов — это помогает быстро понять, какой сервис работает, какой конфиг загружен или какой порт слушается.
ps aux | grep --color=auto pattern
Примеры:
Найти процессы Nginx
ps aux | grep nginx
Проверить, какой конфиг использует Python-приложение
ps aux | grep config.yaml
Узнать, какой процесс слушает порт
ps aux | grep 8080
Хитрый трюк: добавь пробел перед шаблоном, чтобы не ловить в вывод сам grep.
ps aux | grep " nginx"
@linux_education
В Linux можно использовать grep для поиска прямо по аргументам запущенных процессов — это помогает быстро понять, какой сервис работает, какой конфиг загружен или какой порт слушается.
ps aux | grep --color=auto pattern
Примеры:
Найти процессы Nginx
ps aux | grep nginx
Проверить, какой конфиг использует Python-приложение
ps aux | grep config.yaml
Узнать, какой процесс слушает порт
ps aux | grep 8080
Хитрый трюк: добавь пробел перед шаблоном, чтобы не ловить в вывод сам grep.
ps aux | grep " nginx"
@linux_education
👍5🤩1
This media is not supported in your browser
VIEW IN TELEGRAM
Быстрый Linux совет 🐧💡
Если нужно найти все файлы, которые содержат определённую строку, используй:
grep -rl string .
• -r выполняет рекурсивный поиск
• -l выводит только список файлов, где найдено совпадение
Изучай Linux с удовольствием 😎
@linux_education
Если нужно найти все файлы, которые содержат определённую строку, используй:
grep -rl string .
• -r выполняет рекурсивный поиск
• -l выводит только список файлов, где найдено совпадение
Изучай Linux с удовольствием 😎
@linux_education
👍6
⚡️ Полное руководство по Bash: от основ к продвинутым темам
Bash (Bourne Again SHell) — это одна из самых популярных Unix-оболочек, широко используемая для запуска команд и написания скриптов в Linux и macOS.
Скрипты Bash позволяют автоматизировать рутинные задачи, объединять команды в программы и управлять системой через командную строку.
Данное руководство последовательно познакомит вас с основами Bash (синтаксис, переменные, условия, циклы и т.д.), а затем перейдет к продвинутым возможностям (таким как настройка strict mode, использование trap-обработчиков, планирование задач через cron и др.). Мы рассмотрим практические примеры скриптов, сопровождая их поясняющими комментариями, чтобы у вас сложилось цельное понимание создания надежных Bash-скриптов.
https://uproger.com/polnoe-rukovodstvo-po-bash-ot-osnov-k-prodvinutym-temam/
Видео: https://www.youtube.com/watch?v=ei0a1TT4ukU
@linux_education
Bash (Bourne Again SHell) — это одна из самых популярных Unix-оболочек, широко используемая для запуска команд и написания скриптов в Linux и macOS.
Скрипты Bash позволяют автоматизировать рутинные задачи, объединять команды в программы и управлять системой через командную строку.
Данное руководство последовательно познакомит вас с основами Bash (синтаксис, переменные, условия, циклы и т.д.), а затем перейдет к продвинутым возможностям (таким как настройка strict mode, использование trap-обработчиков, планирование задач через cron и др.). Мы рассмотрим практические примеры скриптов, сопровождая их поясняющими комментариями, чтобы у вас сложилось цельное понимание создания надежных Bash-скриптов.
https://uproger.com/polnoe-rukovodstvo-po-bash-ot-osnov-k-prodvinutym-temam/
Видео: https://www.youtube.com/watch?v=ei0a1TT4ukU
@linux_education
🔐 Self-hosted auth для ваших веб-приложений
OpenAuth - это лёгкий self-hosted провайдер аутентификации для веб-приложений.
Он позволяет развернуть собственную систему логина и управления пользователями без внешних сервисов.
Поддерживает современные протоколы, легко интегрируется и даёт полный контроль над данными.
GitHub: https://github.com/sst/openauth/
@linux_education
OpenAuth - это лёгкий self-hosted провайдер аутентификации для веб-приложений.
Он позволяет развернуть собственную систему логина и управления пользователями без внешних сервисов.
Поддерживает современные протоколы, легко интегрируется и даёт полный контроль над данными.
GitHub: https://github.com/sst/openauth/
@linux_education
Это настоящее откровение. 😆
Авторы статьи показывают, что превращение вредоносных запросов в поэзию заставляет многие чат-боты сбрасывать свои правила безопасности.
В эксперименте тестируют 25 моделей - и получают небезопасные ответы примерно в 60% случаев, а у некоторых моделей показатель превышает 90%.
Джейлбрейком считается ситуация, когда модель, которая должна отказать, вместо этого выдаёт чёткие шаги или советы для вредоносных действий.
Методика предельно простая: берут один пользовательский запрос, переписывают 20 опасных инструкций в виде стихов, затем превращают 1200 вредных запросов из стандартного набора для тестирования безопасности в поэзию с помощью фиксированной инструкции.
Каждый ответ проверяют три модель-судьи и люди-оценщики, помечая, помогает ли реплика выполнить опасный запрос.
Темы охватывают хакерство, опасные химические вещества и биологию, манипуляции, утечки приватных данных и сценарии потери контроля — и почти везде поэтическая форма вызывает резкий рост небезопасных ответов.
Это показывает, что обучение безопасности на обычном тексте плохо справляется с изменением стиля.
Источник: arxiv.org/abs/2511.15304
@linux_education
Авторы статьи показывают, что превращение вредоносных запросов в поэзию заставляет многие чат-боты сбрасывать свои правила безопасности.
В эксперименте тестируют 25 моделей - и получают небезопасные ответы примерно в 60% случаев, а у некоторых моделей показатель превышает 90%.
Джейлбрейком считается ситуация, когда модель, которая должна отказать, вместо этого выдаёт чёткие шаги или советы для вредоносных действий.
Методика предельно простая: берут один пользовательский запрос, переписывают 20 опасных инструкций в виде стихов, затем превращают 1200 вредных запросов из стандартного набора для тестирования безопасности в поэзию с помощью фиксированной инструкции.
Каждый ответ проверяют три модель-судьи и люди-оценщики, помечая, помогает ли реплика выполнить опасный запрос.
Темы охватывают хакерство, опасные химические вещества и биологию, манипуляции, утечки приватных данных и сценарии потери контроля — и почти везде поэтическая форма вызывает резкий рост небезопасных ответов.
Это показывает, что обучение безопасности на обычном тексте плохо справляется с изменением стиля.
Источник: arxiv.org/abs/2511.15304
@linux_education
❤1
⚡️ Секретное дзюцу Linux: моментальное исправление опечатки
Когда в длинной команде закралась опечатка — например, nginxx вместо nginx - можно не перепечатывать всё заново.
Используй редкий и малоизвестный приём:
^неправильно^правильно
Пример:
Вместо полной команды просто напиши:
^nginxx^nginx
Терминал автоматически повторит предыдущую команду, заменив только нужный фрагмент.
Итог: команда выполняется безупречно, а ты экономишь время и нервы.
Это реальный "FC-FU"-трюк - расширение истории, о котором знают единицы.
@linux_education
Когда в длинной команде закралась опечатка — например, nginxx вместо nginx - можно не перепечатывать всё заново.
Используй редкий и малоизвестный приём:
^неправильно^правильно
Пример:
Вместо полной команды просто напиши:
^nginxx^nginx
Терминал автоматически повторит предыдущую команду, заменив только нужный фрагмент.
Итог: команда выполняется безупречно, а ты экономишь время и нервы.
Это реальный "FC-FU"-трюк - расширение истории, о котором знают единицы.
@linux_education
❤5👍1
This media is not supported in your browser
VIEW IN TELEGRAM
💡 rusty lights - терминальная версия игры Lights Out
Это минималистичная TUI игра, которая запускается прямо в терминале и при этом включает быстрый солвер, способный решать огромные доски с помощью линейной алгебры.
🦀 Проект написан на Rust и использует ratatui rs для рендера интерфейса.
⭐ GitHub: https://github.com/arom1a/rusty-lights
#rustlang #ratatui #tui #gamedev #terminal #game #puzzle
@linux_education
Это минималистичная TUI игра, которая запускается прямо в терминале и при этом включает быстрый солвер, способный решать огромные доски с помощью линейной алгебры.
🦀 Проект написан на Rust и использует ratatui rs для рендера интерфейса.
⭐ GitHub: https://github.com/arom1a/rusty-lights
#rustlang #ratatui #tui #gamedev #terminal #game #puzzle
@linux_education
🔥1
⚡️ Быстрый Linux-совет:
Нужно повторять команду каждые несколько секунд?
Используй:
$ watch -n 2 df -h
Эта команда запускает df -h каждые 2 секунды — удобно, чтобы следить за:
- загрузкой диска
- нагрузкой на систему
- изменением размеров логов
Нажми q, чтобы выйти.
@linux_education
Нужно повторять команду каждые несколько секунд?
Используй:
$ watch -n 2 df -h
Эта команда запускает df -h каждые 2 секунды — удобно, чтобы следить за:
- загрузкой диска
- нагрузкой на систему
- изменением размеров логов
Нажми q, чтобы выйти.
@linux_education
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
👩💻 Знали ли вы, что можно открывать man-страницы из Vim?
- leader K - Нажмите курсором на любом слове, чтобы открыть man-страницу для этой команды.
- :Man command - Открыть man-страницу этой команды
@linux_education
- leader K - Нажмите курсором на любом слове, чтобы открыть man-страницу для этой команды.
- :Man command - Открыть man-страницу этой команды
@linux_education
❤1