Например,
ls показывает содержимое директории, cd помогает перемещаться между папками, а grep позволяет быстро находить нужный текст в файлах.На картинке — самые используемые команды: работа с файлами, процессами, сетью, правами доступа и системой. Такой набор закрывает 90% повседневных задач в терминале.
Сохрани, чтобы не потерять!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍10🤝8❤4
Смотрим, какие библиотеки реально отображены в адресное пространство процесса!
Когда приложение падает из-за несовместимой или отсутствующей библиотеки,
Если нужен точный ответ, что уже замаплено в память, используем
Сначала находим 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
👍14🔥10❤8
В этой статье:
• Подробно разбирается, что на самом деле скрывается за терминалом в Linux;
• Объясняется разница между консолью, терминалом, shell, TTY и эмуляторами;
• Показано, как процессы взаимодействуют с системой через stdin/stdout/stderr и файловые дескрипторы, и какую роль в этом играет ядро.🔊 Продолжайте читать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤10🔥8🤝1
Например,
0 0 * * * выполняет задачу ежедневно в полночь, а */5 * * * * — с интервалом в 5 минут.На изображении — структура cron-выражения, основные алиасы (
@daily, @weekly, @reboot) и типовые примеры расписаний, которые удобно использовать в повседневной работе.Сохрани, чтобы не потерять!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21❤9🤝8
Непонятно, откуда взялся процесс?
Большинство смотрят
Настоящая картина — это дерево процессов:
Здесь видно, какой процесс чей родитель, с аргументами и
Можно быстро понять: это
Если есть конкретный
Это показывает путь запуска, от
Для точечной проверки родителя:
И дальше можно идти вверх по 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
❤16👍10🔥8
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
👍14❤8🔥8
Пробрасываем локальный порт через SSH — доступ к закрытому сервису за одну команду!
Частый кейс: сервис крутится на удалённой машине, но слушает только localhost (например, база, админка, dev-сервер). Напрямую к нему не подключиться — но можно аккуратно протянуть порт к себе.
Команда:
Что происходит:
Теперь просто открываешь в браузере:
И видишь сервис с удалённой машины, даже если он не доступен извне.
Чтобы не держать терминал:
Остановить можно, например:
Практический пример: PostgreSQL на сервере слушает только localhost:
Теперь локально можно подключаться как будто база у тебя:
Если локальный порт уже занят — просто меняешь его:
Важно: трафик шифруется через SSH, не нужно открывать порты на сервере; работает для любых TCP-сервисов (HTTP, DB, Redis и т.д.).
🔥 Это базовый приём: быстро получить доступ к любому закрытому сервису без изменения конфигурации сервера.
🚪 Linux Ready | #практика
Частый кейс: сервис крутится на удалённой машине, но слушает только localhost (например, база, админка, dev-сервер). Напрямую к нему не подключиться — но можно аккуратно протянуть порт к себе.
Команда:
ssh -L 8080:localhost:3000 user@remote-server
Что происходит:
8080 — локальный порт на твоей машине; localhost:3000 — адрес сервиса на удалённой машине; всё, что ты открываешь на localhost:8080, идёт через SSH на localhost:3000 на удалённой машине.Теперь просто открываешь в браузере:
http://localhost:8080И видишь сервис с удалённой машины, даже если он не доступен извне.
Чтобы не держать терминал:
ssh -f -N -L 8080:localhost:3000 user@remote-server
Остановить можно, например:
pkill -f "ssh -L 8080"
Практический пример: PostgreSQL на сервере слушает только localhost:
ssh -L 5432:localhost:5432 user@remote-server
Теперь локально можно подключаться как будто база у тебя:
psql -h localhost -p 5432 -U user dbname
Если локальный порт уже занят — просто меняешь его:
ssh -L 9000:localhost:3000 user@remote-server
Важно: трафик шифруется через SSH, не нужно открывать порты на сервере; работает для любых TCP-сервисов (HTTP, DB, Redis и т.д.).
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥15❤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
👍19❤11🔥9
This media is not supported in your browser
VIEW IN TELEGRAM
Помогает быстро разобраться в работе с терминалом. Здесь собраны ключевые вещи: переменные, условия, циклы, работа с файлами, аргументы скриптов и базовые команды. Формат максимально простой, короткие примеры и конструкции, которые можно сразу использовать.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤8🔥7
Перенаправляем трафик процесса через прокси — без изменения кода приложения!
Иногда нужно прогнать готовое приложение через прокси: отладка 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
❤19🔥10👍9
На схеме структурированы направления: обучающие YouTube-каналы, профильные блоги, специализированная литература, популярные дистрибутивы, сертификации.
Это удобная схема — можно быстро понять, куда двигаться дальше и какие ресурсы использовать.
Сохраните, чтобы не потерять!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤11🤝8👎1
Как понять, что делает процесс в 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
👍18❤9🔥9
Например, Phishing обманывает пользователя и заставляет ввести свои данные на поддельной странице, а SQL Injection позволяет атакующему получить доступ к базе данных через уязвимость в запросах.
На картинке — самые распространённые типы атак, которые важно понимать каждому разработчику и специалисту по безопасности.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍10🤝9
Знали, что можно просканировать поведение процесса без его исходников и перезапуска?
Когда процесс ведёт себя странно, но трогать его нельзя,
Подключаешься к уже запущенному процессу и смотришь, что он делает на уровне ядра:
Видно, куда он ходит по сети, какие файлы читает или пытается открыть. Это быстрый способ понять, где он залип.
Если нужен общий профиль без тонны вывода, можно использовать агрегированную статистику:
🔥 Это один из самых быстрых способов первичной диагностики на Linux, когда нет логов, нет доступа к коду и нельзя перезапускать сервис.
🚪 Linux Ready | #совет
Когда процесс ведёт себя странно, но трогать его нельзя,
strace даёт доступ к системным вызовам в реальном времени.Подключаешься к уже запущенному процессу и смотришь, что он делает на уровне ядра:
$ strace -p 1234 -e trace=%network
$ strace -p 1234 -e trace=%file
Видно, куда он ходит по сети, какие файлы читает или пытается открыть. Это быстрый способ понять, где он залип.
Если нужен общий профиль без тонны вывода, можно использовать агрегированную статистику:
$ strace -p 1234 -c
$ strace -p 1234 -c -f
strace -p использует ptrace, требует прав и при подключении может прервать текущий syscall (редко, но бывает).Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17❤11👍8🤝2
В этой статье:
• Пошаговая сборка загрузочного диска на базе Debian;
• Минимизация размера системы — всего ~25 МБ;
• Удаление ненужного и настройка initramfs под себя.🔊 Продолжай читать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥19👍10🤝8❤1😁1
Права доступа — одна из основ безопасности в Linux. Через chmod, chown и umask можно управлять доступом к файлам, а команды вроде ls -l и stat помогут быстро проанализировать текущие разрешения и владельцев.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🤝14🔥11❤6
This media is not supported in your browser
VIEW IN TELEGRAM
Это структурированная коллекция заметок по Linux и смежным темам: процессы, файловые системы, shell и работа с ядром. Материал ориентирован на практическое понимание того, как устроена система на низком уровне. Информация подаётся в компактном формате без избыточной теории, с акцентом на реальные сценарии использования.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍12🤝8