This media is not supported in your browser
VIEW IN TELEGRAM
Это сайт, посвящённый современным практикам разработки и эксплуатации программных систем. Материалы охватывают ключевые инструменты и процессы DevOps. Публикации сопровождаются примерами и практическими заданиями, что позволяет применять полученные знания в реальных рабочих процессах.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤8🔥8
Почему диск полный, хотя файлы уже удалены?
Удалили огромный лог, но место на диске не освободилось,
Причина в том, что процесс держит открытый файловый дескриптор.
Файл удалён из файловой системы, но продолжает существовать, пока процесс его не закроет.
Найти такие файлы можно так:
Там будет
Теперь можно освободить место без перезапуска сервиса:
Это обнуляет файл через файловый дескриптор, и место возвращается системе.
🔥 Если диск заполнен невидимыми файлами, часто нужно найти открытые дескрипторы и очистить их через
🚪 Linux Ready | #совет
Удалили огромный лог, но место на диске не освободилось,
df показывает, что диск всё ещё заполнен.Причина в том, что процесс держит открытый файловый дескриптор.
Файл удалён из файловой системы, но продолжает существовать, пока процесс его не закроет.
Найти такие файлы можно так:
lsof | grep deleted
Там будет
PID процесса и номер дескриптора.Теперь можно освободить место без перезапуска сервиса:
: > /proc/<PID>/fd/<FD>
Это обнуляет файл через файловый дескриптор, и место возвращается системе.
/proc.Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥9🤝8
Например, ls показывает содержимое директории, cd помогает перемещаться между папками, а grep позволяет быстро находить нужный текст в файлах.
На картинке — самые используемые команды: работа с файлами, процессами, сетью, правами доступа и системой. Такой набор закрывает 90% повседневных задач в терминале.
Сохрани, чтобы не потерять!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16❤9👍8
Смотрим, какие библиотеки реально отображены в адресное пространство процесса!
Когда приложение падает из-за несовместимой или отсутствующей библиотеки,
Если нужен точный ответ, что уже замаплено в память, используем
Сначала находим PID процесса:
Допустим, это 1234. Теперь смотрим, какие shared objects отображены в его адресное пространство:
Что здесь важно:
Пример:
Это означает, что в адресном пространстве процесса есть маппинг этой версии
Если нужен список без дублей:
Практический кейс — конфликт версий после обновления: систему обновили, новая библиотека уже лежит на диске, а процесс всё ещё держит старую версию в памяти.
Проверить можно так:
Если у файла есть пометка (deleted), это сильный сигнал: файл на диске уже удалён или заменён, но процесс продолжает использовать старый
🔥 Что важно помнить: изменения на диске не влияют на уже загруженные библиотеки в работающем процессе, после обновления библиотек сервисы обычно нужно перезапускать, доступ к
🚪 Linux Ready | #практика
Когда приложение падает из-за несовместимой или отсутствующей библиотеки,
ldd полезен, но он показывает, как динамический загрузчик разрешает зависимости для бинаря, а не текущее состояние уже запущенного процесса.Если нужен точный ответ, что уже замаплено в память, используем
/proc.Сначала находим PID процесса:
pgrep -a python
Допустим, это 1234. Теперь смотрим, какие shared objects отображены в его адресное пространство:
grep '\.so' /proc/1234/maps
Что здесь важно:
/proc/<pid>/maps — карта памяти процесса; каждая строка — отдельный участок памяти; если в строке есть путь к .so, значит есть файловый маппинг этого объекта.Пример:
7f2c1a000000-7f2c1a200000 r-xp ... /usr/lib/x86_64-linux-gnu/libssl.so.1.1
Это означает, что в адресном пространстве процесса есть маппинг этой версии
libssl (и, с высокой вероятностью, она используется процессом).Если нужен список без дублей:
grep '\.so' /proc/1234/maps | awk '{print $6}' | sort -u
Практический кейс — конфликт версий после обновления: систему обновили, новая библиотека уже лежит на диске, а процесс всё ещё держит старую версию в памяти.
Проверить можно так:
ls -l /proc/1234/map_files/
Если у файла есть пометка (deleted), это сильный сигнал: файл на диске уже удалён или заменён, но процесс продолжает использовать старый
inode через существующий маппинг./proc/<pid> и особенно map_files может быть ограничен правами.Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤7🔥7🤝1
В этой статье:
• Подробно разбирается, что на самом деле скрывается за терминалом в Linux;
• Объясняется разница между консолью, терминалом, shell, TTY и эмуляторами;
• Показано, как процессы взаимодействуют с системой через stdin/stdout/stderr и файловые дескрипторы, и какую роль в этом играет ядро.🔊 Продолжайте читать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥8🤝6❤1
Непонятно, откуда взялся процесс?
Большинство смотрят
Настоящая картина — это дерево процессов:
Здесь видно, какой процесс чей родитель, с аргументами и
Можно быстро понять: это
Если есть конкретный
Это показывает путь запуска, от
Для точечной проверки родителя:
И дальше можно идти вверх по PPID.
Важно: PPID показывает текущего родителя. Если процесс был перезапущен, демонезирован или его родитель умер — он может быть перепривязан к
🔥 Дерево процессов даёт быстрый ответ в большинстве случаев.
🚪 Linux Ready | #совет
Большинство смотрят
ps aux, но он не показывает причинно-следственную связь.Настоящая картина — это дерево процессов:
pstree -ap
Здесь видно, какой процесс чей родитель, с аргументами и
PID.Можно быстро понять: это
systemd-сервис, cron-задача или дочерний процесс скрипта.Если есть конкретный
PID, смотри цепочку до корня:pstree -s <PID>
Это показывает путь запуска, от
init/systemd до нужного процесса.Для точечной проверки родителя:
ps -o pid,ppid,cmd -p <PID>
И дальше можно идти вверх по PPID.
Важно: PPID показывает текущего родителя. Если процесс был перезапущен, демонезирован или его родитель умер — он может быть перепривязан к
systemd/init, и исходный источник уже не виден.Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍9🔥8
Например,
0 0 * * * выполняет задачу ежедневно в полночь, а */5 * * * * — с интервалом в 5 минут.На изображении — структура cron-выражения, основные алиасы (
@daily, @weekly, @reboot) и типовые примеры расписаний, которые удобно использовать в повседневной работе.Сохрани, чтобы не потерять!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13❤9👍8
Ваши старые SSH-ключи могут быть под угрозой взлома!
Алгоритм
Современный стандарт требует минимум 3072 бит для
Проверка длины и типа существующих ключей в вашей системе:
Генерация максимально защищенного ключа на базе эллиптических кривых:
Параметр -a 100 увеличивает количество раундов хеширования парольной фразы для защиты от брутфорса.
Вывод отпечатка ключа для быстрой верификации на сервере:
🔥 Мини-совет: Всегда защищайте приватный ключ сложной парольной фразой (
➡️ Hacking Ready | #совет
Алгоритм
RSA с длиной ключа 1024 бит уже давно не обеспечивает надежную защиту из-за возросших вычислительных мощностей. Современный стандарт требует минимум 3072 бит для
RSA, но лучшим выбором сегодня является алгоритм Ed25519 — он быстрее, короче и значительно устойчивее к криптоанализу.Проверка длины и типа существующих ключей в вашей системе:
ssh-keygen -l -f ~/.ssh/id_rsa
Генерация максимально защищенного ключа на базе эллиптических кривых:
ssh-keygen -t ed25519 -a 100 -C "main_access"
Параметр -a 100 увеличивает количество раундов хеширования парольной фразы для защиты от брутфорса.
Вывод отпечатка ключа для быстрой верификации на сервере:
ssh-keygen -lf ~/.ssh/id_ed25519.pub
passphrase), чтобы даже при краже файла злоумышленник не смог им воспользоваться без подбора пароля.Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍5🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
Cтруктурированный справочник по Linux, где собраны основные команды и утилиты, разбитые по категориям: пользователи, файлы и директории, права доступа, сеть, процессы, пакеты, поиск, SSH и многое другое. Каждая команда сопровождается описанием и примерами использования, поэтому можно быстро понять, как она работает и где применяется.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍8❤7🤝1
В этом посте собраны 7 команд для анализа проблем при старте системы: от времени запуска сервисов до задержек диска и ошибок драйверов. dmesg, top, iostat, systemd-analyze, journalctl, lsblk, smartctl — всё, что нужно, чтобы быстро понять, что тормозит загрузку.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍7🤝5❤1
В этой статье:
• Автор последовательно показывает, как избавиться от традиционной загрузки с SD-карты и перейти на сетевую загрузку;
• Пошагово настраивается среда для сетевой загрузки с использованием DHCP, TFTP и NFS;
• Разбираются особенности загрузочного процесса Raspberry Pi;
• Приводится готовый Docker-образ и конфигурации.🔊 Продолжайте читать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍10🤝9❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Руководство охватывает около 60 основных Bash-команд с примерами и пояснениями, что позволяет быстро понять их назначение и применение. Каждая команда сопровождается примерами использования и краткими рекомендациями, поэтому ресурс удобно использовать как справочник при работе с терминалом или при изучении Linux с нуля.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12🤝7👍6❤2
Как понять, что делает процесс в Linux?
Бывает ситуация, когда процесс есть, но непонятно, что он делает. В Linux можно смотреть системные вызовы.
Подключаемся к живому процессу:
Видно, какие файлы он открывает, читает или не может найти.
Если подозрение на сеть:
Покажет сетевые
Если нужно понять поведение целиком:
Флаг
🔥 Это часто даёт ответ быстрее, чем чтение кода или логов, особенно при работе с чужими бинарями, контейнерами или нестабильными сервисами.
🚪 Linux Ready | #совет
Бывает ситуация, когда процесс есть, но непонятно, что он делает. В Linux можно смотреть системные вызовы.
Подключаемся к живому процессу:
strace -e trace=%file -p <PID>
Видно, какие файлы он открывает, читает или не может найти.
Если подозрение на сеть:
strace -e trace=%network -p <PID>
Покажет сетевые
syscalls (connect, send*, recv*).Если нужно понять поведение целиком:
strace -f -o trace.log your_command
Флаг
-f отслеживает дочерние процессы, а лог можно спокойно разобрать позже.Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥8❤7
This media is not supported in your browser
VIEW IN TELEGRAM
Помогает быстро разобраться в работе с терминалом. Здесь собраны ключевые вещи: переменные, условия, циклы, работа с файлами, аргументы скриптов и базовые команды. Формат максимально простой, короткие примеры и конструкции, которые можно сразу использовать.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍7🤝6
Перенаправляем трафик процесса через прокси — без изменения кода приложения!
Иногда нужно прогнать готовое приложение через прокси: отладка API, анализ трафика, тестирование доступа через альтернативный сетевой маршрут.
В Linux это делается через
Установка:
В большинстве дистрибутивов используется
Настройка: конфиг обычно лежит в
Добавляем прокси:
Можно указать SOCKS4/5 или HTTP CONNECT-прокси. Частый кейс — Tor или локальный прокси анализатора (Burp/ZAP).
Использование:
Подходит для многих CLI-утилит, использующих стандартные сетевые вызовы через libc (но не для всех).
Практический пример:
Можно прогнать трафик через Tor или анализатор. С браузерами возможны нюансы из-за их архитектуры и многопроцессности — иногда надёжнее использовать встроенные настройки прокси.
Ограничения и нюансы: работает только с dynamically linked бинарями (из-за
🔥 Минимальный способ управлять сетевым поведением приложений без правки кода.
🚪 Linux Ready | #практика
Иногда нужно прогнать готовое приложение через прокси: отладка API, анализ трафика, тестирование доступа через альтернативный сетевой маршрут.
В Linux это делается через
proxychains, который с помощью LD_PRELOAD перехватывает вызовы connect() и связанные DNS-функции, проксируя соединения без изменения самого приложения.Установка:
# Debian/Ubuntu
sudo apt install proxychains4 -y
# Arch
sudo pacman -S proxychains-ng
# RHEL/CentOS (обычно через EPEL или совместимые репозитории)
sudo yum install proxychains-ng
В большинстве дистрибутивов используется
proxychains-ng — поддерживаемая реализация proxychains.Настройка: конфиг обычно лежит в
/etc/proxychains4.conf или /etc/proxychains.conf.sudo nano /etc/proxychains4.conf
Добавляем прокси:
socks5 127.0.0.1 9050
Можно указать SOCKS4/5 или HTTP CONNECT-прокси. Частый кейс — Tor или локальный прокси анализатора (Burp/ZAP).
Использование:
proxychains curl https://example.com
proxychains перехватывает вызовы connect() и DNS-функции, поэтому приложение продолжает работать как обычно, но его исходящие соединения идут через прокси:proxychains git clone https://github.com/repo.git
Подходит для многих CLI-утилит, использующих стандартные сетевые вызовы через libc (но не для всех).
Практический пример:
proxychains firefox
Можно прогнать трафик через Tor или анализатор. С браузерами возможны нюансы из-за их архитектуры и многопроцессности — иногда надёжнее использовать встроенные настройки прокси.
Ограничения и нюансы: работает только с dynamically linked бинарями (из-за
LD_PRELOAD), статически скомпонованные — не поддерживаются; некоторые приложения обходят libc, поэтому трафик может не проксироваться. Возможны проблемы с DNS (иногда требуется proxy_dns).Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍8🔥5🤝2
На схеме структурированы направления: обучающие YouTube-каналы, профильные блоги, специализированная литература, популярные дистрибутивы, сертификации.
Это удобная схема — можно быстро понять, куда двигаться дальше и какие ресурсы использовать.
Сохраните, чтобы не потерять!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍8🤝7