На схеме структурированы направления: обучающие YouTube-каналы, профильные блоги, специализированная литература, популярные дистрибутивы, сертификации.
Это удобная схема — можно быстро понять, куда двигаться дальше и какие ресурсы использовать.
Сохраните, чтобы не потерять!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍8🤝7
Со временем даже минималистичная Linux-система захламляется: остаются старые логи, кеши пакетов, временные файлы. Всё это съедает пространство и мешает обслуживанию.
В этом посте:
• Удаляем кеш APT и старые версии пакетов.
• Чистим временные файлы и мусор от приложений.
• Удаляем старые логи, освобождаем /var/log.
• Проверяем свободное место и очищаем остатки.
Такой подход помогает освободить несколько гигабайт и держать систему в порядке.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤8👍8🤝2
В этой статье:
• Научитесь запускать tmux-сессии в фоне и управлять ими из bash-скрипта;
• Автоматически поднимете несколько окон и панелей с нужными командами;
• Разберётесь с new-session, new-window, split-window и send-keys для сценариев «всё готово за один запуск»;
• Соберёте удобный шаблон, который можно адаптировать под разработку, мониторинг или отладку.🔊 Продолжайте читать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤7👍6🤝2
Например, Phishing обманывает пользователя и заставляет ввести свои данные на поддельной странице, а SQL Injection позволяет атакующему получить доступ к базе данных через уязвимость в запросах.
На картинке — самые распространённые типы атак, которые важно понимать каждому разработчику и специалисту по безопасности.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11🔥8👍6🤝2
Ищем и убираем дубликаты строк в терминале!
Частая задача: есть файл с логами, списком ID, email-адресами или любыми строками, где встречаются повторы. Нужно быстро привести данные в порядок прямо в консоли.
Базовый инструмент —
Самый простой вариант:
Что здесь происходит:
Если нужны только строки, которые встретились ровно один раз:
Если нужно посчитать, сколько раз встречается каждая строка:
Если нужно сразу увидеть самые частые значения сверху:
Практический пример для логов — топ IP по количеству запросов:
Если нужно записать результат обратно в тот же файл:
Если важно игнорировать регистр:
Это эквивалентно связке с
Важно:
🔥 Такого набора хватает для большинства задач: быстро почистить данные, посмотреть частоты, выявить лишние записи в логах.
🚪 Linux Ready | #практика
Частая задача: есть файл с логами, списком ID, email-адресами или любыми строками, где встречаются повторы. Нужно быстро привести данные в порядок прямо в консоли.
Базовый инструмент —
uniq. Важно понимать: он удаляет только соседние одинаковые строки. Поэтому в большинстве случаев перед ним нужна сортировка.Самый простой вариант:
sort data.txt | uniq
Что здесь происходит:
sort сортирует строки, чтобы одинаковые значения оказались рядом, uniq убирает повторяющиеся соседние строки.Если нужны только строки, которые встретились ровно один раз:
sort data.txt | uniq -u
Если нужно посчитать, сколько раз встречается каждая строка:
sort data.txt | uniq -c
Если нужно сразу увидеть самые частые значения сверху:
sort data.txt | uniq -c | sort -nr
Практический пример для логов — топ IP по количеству запросов:
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head
Если нужно записать результат обратно в тот же файл:
sort -u -o data.txt data.txt
Если важно игнорировать регистр:
sort -fu data.txt
Это эквивалентно связке с
uniq, но короче.Важно:
uniq не ищет все дубликаты по всему файлу — он работает только с соседними строками. Без sort он уберет только те повторы, которые уже идут подряд.Please open Telegram to view this post
VIEW IN TELEGRAM
❤11🔥9👍8
This media is not supported in your browser
VIEW IN TELEGRAM
Это ресурс, где собраны вопросы и практические сценарии по DevOps, разбитые по ключевым темам: Docker, Kubernetes, CI/CD, облака, безопасность, мониторинг и др. Формат построен как тренажёр, можно проходить вопросы по категориям. Отдельно выделяются реальные сценарии, где разбираются проблемы и их решения.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥9🤝6❤4
Как переиспользовать команды из history?
Набрал длинную команду, но забыл sudo и получил отказ. Вместо перепечатывания просто можно повторить её с повышенными правами:
Bash подставит предыдущую команду целиком и выполнит её с
Нужно вернуться к команде, которую выполнял пару шагов назад, не листая историю:
Bash возьмёт команду по относительному номеру из history и выполнит её сразу.
Если помнишь только начало команды, можно вызвать последнюю подходящую:
Bash найдёт последнюю команду, начинающуюся с этого слова, и выполнит её.
Команда выполняется сразу. Для проверки можно добавить
🔥 Это ускоряет работу в терминале кратно, особенно когда команды длинные и сложные.
🚪 Linux Ready | #совет
Набрал длинную команду, но забыл sudo и получил отказ. Вместо перепечатывания просто можно повторить её с повышенными правами:
$ apt install nginx
$ sudo !!
Bash подставит предыдущую команду целиком и выполнит её с
sudo.Нужно вернуться к команде, которую выполнял пару шагов назад, не листая историю:
$ !-2
Bash возьмёт команду по относительному номеру из history и выполнит её сразу.
Если помнишь только начало команды, можно вызвать последнюю подходящую:
$ !docker
$ !grep
Bash найдёт последнюю команду, начинающуюся с этого слова, и выполнит её.
Команда выполняется сразу. Для проверки можно добавить
:p (например, !grep:p).Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤7🤝7🔥5
Например, при подключении по SSH сначала устанавливается TCP-соединение, затем происходит согласование версий и алгоритмов, после чего выполняется key exchange и аутентификация по ключам.
На картинке — полный процесс: от установления соединения до выполнения команд внутри зашифрованного канала.
Сохрани, чтобы не потерять!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤7🔥6🤝4
Пробрасываем локальный порт через 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
🔥17❤10👍8🤝2
This media is not supported in your browser
VIEW IN TELEGRAM
Это структурированная коллекция заметок по Linux и смежным темам: процессы, файловые системы, shell и работа с ядром. Материал ориентирован на практическое понимание того, как устроена система на низком уровне. Информация подаётся в компактном формате без избыточной теории, с акцентом на реальные сценарии использования.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤8🤝6🔥3
Перехватываем вывод процесса через tee — лог и консоль одновременно!
Частый кейс: запускаешь задачу (деплой, миграция, билд) и хочешь одновременно видеть вывод в терминале и сохранять его в файл. Обычный редирект
Команда:
Что происходит:
Добавление в файл (
Без потери кода возврата (важно для скриптов):
Без
Альтернатива:
Важно:
Пример: деплой
Лог сохраняется, при этом видно всё в реальном времени.
Пример: долгий билд
Разделение потоков с сохранением,
Используется process substitution (bash).
Пример: отладка пайплайна
Сохраняешь и исходные данные, и результат фильтрации.
Что это даёт: полный контроль над логами без потери интерактивности; удобно для CI, деплоя, отладки; прозрачная диагностика.
🔥 Ограничения и нюансы:
🚪 Linux Ready | #практика
Частый кейс: запускаешь задачу (деплой, миграция, билд) и хочешь одновременно видеть вывод в терминале и сохранять его в файл. Обычный редирект
> убирает вывод из консоли. Решается через tee.Команда:
command 2>&1 | tee output.log
Что происходит:
2>&1 объединяет stderr и stdout; tee дублирует поток — пишет в файл и выводит в терминал.Добавление в файл (
append):command 2>&1 | tee -a output.log
Без потери кода возврата (важно для скриптов):
set -o pipefail
command 2>&1 | tee output.log
echo $?
Без
pipefail код возврата будет от tee, а не от command. echo $? нужно вызывать сразу после пайплайна, иначе значение перезапишется.Альтернатива:
command 2>&1 | tee output.log
exit ${PIPESTATUS[0]}
Важно:
PIPESTATUS нужно читать сразу после пайплайна, иначе он перезапишется.Пример: деплой
set -o pipefail
./deploy.sh 2>&1 | tee deploy.log
Лог сохраняется, при этом видно всё в реальном времени.
Пример: долгий билд
make -j4 2>&1 | tee build.log
stderr не теряется, но порядок строк может перемешиваться (из-за параллельности и буферизации).Разделение потоков с сохранением,
stdout в файл, stderr отдельно:command > >(tee out.log) 2> >(tee err.log >&2)
Используется process substitution (bash).
stdout/stderr остаются в консоли, но порядок между потоками не гарантируется.Пример: отладка пайплайна
tee raw.log < data.txt | grep error | tee filtered.log
Сохраняешь и исходные данные, и результат фильтрации.
Что это даёт: полный контроль над логами без потери интерактивности; удобно для CI, деплоя, отладки; прозрачная диагностика.
pipe меняет код возврата (решается pipefail или PIPESTATUS); pipefail не POSIX (bash/zsh/ksh); некоторые программы буферизуют вывод; при больших потоках — нагрузка на диск.Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤8🔥5🤝4
Например, HTTP (80) используется для обычного веб-трафика, SSH (22) — для удалённого доступа к серверу, а DNS (53) — для преобразования доменных имён в IP.
На картинке — базовые и наиболее часто используемые сетевые протоколы с портами и типами транспорта (TCP/UDP).
Сохрани, чтобы не потерять!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤7🔥5🤝5
Как передавать файлы между машинами без scp, rsync и настройки SSH?
Когда нет доступа по SSH, сломан scp или нужно быстро скинуть файл между контейнерами, серверами или в изолированной сети — выручает
На принимающей стороне открываешь порт и пишешь всё в файл:
На отправляющей стороне отправляешь данные напрямую в сокет:
Если нужен прогресс передачи:
Важно: без шифрования и аутентификации (использовать в доверенной сети), синтаксис может отличаться (например, BusyBox: nc -l -p 9000).
🔥 Работает даже в минимальных окружениях, контейнерах и
🚪 Linux Ready | #совет
Когда нет доступа по SSH, сломан scp или нужно быстро скинуть файл между контейнерами, серверами или в изолированной сети — выручает
netcat.На принимающей стороне открываешь порт и пишешь всё в файл:
$ nc -l 9000 > output.bin
$ ls -lh output.bin
На отправляющей стороне отправляешь данные напрямую в сокет:
$ nc -N <host> 9000 < input.bin
$ echo done
Если нужен прогресс передачи:
$ pv input.bin | nc -N <host> 9000
или на приёме:
$ nc -l 9000 | pv > output.bin
Важно: без шифрования и аутентификации (использовать в доверенной сети), синтаксис может отличаться (например, BusyBox: nc -l -p 9000).
rescue-системах, где кроме nc почти ничего нет.Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍8🤝5🔥3
Это наглядная шпаргалка по основным DNS-записям. Таблица охватывает
A и AAAA для IPv4/IPv6, CNAME для алиасов, MX для почты, PTR для reverse DNS, NS для name servers и TXT для произвольной информации. Идеально для быстрого понимания, как DNS связывает домены, IP-адреса и почтовую инфраструктуру.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11🤝9👍8
This media is not supported in your browser
VIEW IN TELEGRAM
От базовых понятий и структуры системы до понимания дистрибутивов и принципов работы ОС. Материал построен последовательно и помогает сформировать целостное представление о Linux. Уроки ориентированы на системное понимание: объясняется не только работа команд, но и логика самой системы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥8🤝6