Linux Skill - Освой Linux c нуля до DevOps – Telegram
Linux Skill - Освой Linux c нуля до DevOps
11.2K subscribers
54 photos
103 videos
482 links
Освой Linux c нуля до DevOps
Подробный гайд по Linux и море других уроков для системных администраторов

📩 По всем вопросам: @chorapov

РКН https://vk.cc/cMUwm4
Download Telegram
🔥 Забудь про $1 $2 $3: умные опции через getopts

Привет, архитектор CLI!

Надоело парсить аргументы через позиционные параметры? Делаем профессиональные флаги как в настоящих утилитах!

🔧 Базовый шаблон с getopts:
#!/bin/bash

# Проверка аргументов
if [ $# -eq 0 ]; then
echo "Usage: $(basename $0) -mnopqrs"
exit 1
fi

# Парсинг опций
while getopts ":mnopq:rs" Option; do
case $Option in
m ) echo "Опция -m активна";;
n|o ) echo "Опция -$Option активна";;
p ) echo "Опция -p активна";;
q ) echo "Опция -q с аргументом: $OPTARG";;
r|s ) echo "Опция -$Option";;
* ) echo "Неверная опция";;
esac
done

# Сдвиг к не-опциям
shift $(($OPTIND - 1))


💡 Как работает:
- :mnopq:rs — строка опций (: после q = требует аргумент)
- $OPTARG — значение для опции с аргументом
- $OPTIND — индекс следующего аргумента

🚀 Примеры вызова:
./noscript.sh -m -n
./noscript.sh -mn # можно слитно!
./noscript.sh -q "значение"
./noscript.sh -mnop -q test


📌 Бонус — импорт функций:
# Загружаем общие функции
source /path/to/common_functions.sh
# или
. ./config.sh


Теперь твои скрипты выглядят как настоящие Linux-утилиты!
____________________

Дополнительный материал:
🧠 - Командный центр Linux: Ваше руководство по базовым консольным программам
🧠 - Защитный барьер Linux: Как система обеспечивает безопасность пользователей и групп
🧠 - Мастер-класс по консольным программам Linux: Разбираемся с UID и GID

#bash_guide #bash #getopts #cli #noscripting #Linux #arguments
👍13
Media is too big
VIEW IN TELEGRAM
🔥 Сервер взломали? journalctl покажет следы

Привет, страж безопасности!

Константин Герасименко показывает, как с помощью journalctl найти следы взлома, отследить подозрительную активность и настроить мониторинг в реальном времени. Без логов — нет безопасности!

📹 Таймкоды:

00:25 — Зачем читать системные журналы
05:17 — Как логи помогают выявить взлом
14:00 — journalctl vs старый syslog
21:28 — Базовые команды journalctl
26:52 — Анализ загрузок системы
32:29 — Критически важно: время на сервере
41:48 — Логи конкретных служб
54:25 — Отслеживаем входы в систему
01:02:49 — Фильтрация по приоритету
01:06:25 — Мониторинг в реальном времени
01:13:01 — Управление размером логов

💡 Ключевые моменты:
- Время сервера в UTC — признак безопасности
- Корреляция событий выявляет атаки
- JSON-формат для автоматизации
- Ротация логов экономит место

🌐 Источник: YouTube - Cisco Ne Slabo / SEDICOMM TV
____________________

Дополнительный материал:
🧠 - История, которая изменила мир Linux: Путешествие файловой системы ext2
🧠 - Linux Mastery: Настройка разрешений файлов с восьмеричным представлением
🧠 - Ваш путеводитель по команде arch в Linux: Открытие архитектуры вашей системы

#Linux_youtube #journalctl #logs #security #Linux #monitoring #video
👍13
💾 Невидимые файлы съели весь диск? Вот решение

Привет, спасатель серверов!

Знакомо: df кричит "100% занято", а найти виновника не можешь? Держи шпаргалку для экстренных ситуаций — все команды проверены в боевых условиях.

Базовая диагностика

Смотрим общую картину:
# df -h


Ищем самые прожорливые директории:
# du -h -d 1 / | sort -hr
# du -hs /* | sort -hr

# Ограничиваем вывод топ-10
# du -h -d 1 / | sort -hr | head -10

# Топ-20 самых больших директорий
# du -hcx --max-depth=6 / | sort -rh | head -n 20

# Топ-20 самых больших файлов
# find / -mount -ignore_readdir_race -type f -exec du -h "{}" + 2>&1 \
> | sort -rh | head -n 20


Проверка inodes

Иногда место есть, но закончились inodes:
# df -ih


Охота на файлы-призраки

Ситуация: du показывает мало занятого места, но df говорит "диск полный". Причина — удалённые файлы, которые держит процесс:

# lsof | grep '(deleted)'
# lsof +L1


Нашли большие deleted-файлы? Перезапусти службу или убей процесс через kill -9 <pid>.

Ловушка с точками монтирования

Хитрый случай: скрипт должен был писать в смонтированный диск /mnt/backup, но диск не подключился. Файлы записались в локальную систему и теперь скрыты под точкой монтирования!

Как проверить:
1. Отмонтируй диск временно
2. Загляни в директорию
3. Удали мусор
4. Примонтируй обратно

Профилактика: всегда проверяй успешность монтирования перед записью данных в скриптах.

💡 Итог: 90% проблем с местом решаются этими командами. Сохрани и используй при первых признаках "disk full".

____________________

Дополнительный материал:
🧠 - Осваиваем RAID Массивы в Linux: Путь к Надежности и Производительности
🧠 - История OpenSUSE: От Зеленого Ящерика к Глобальному Сообществу
🧠 - Разблокируем секреты Linux: Специальные разрешения файлов

#Linux_Mastery #bash #terminal #linux #sysadmin #troubleshooting #storage
🔥12👍8
🚀 Забудь про SCP! Вот как передавать файлы в 10 раз быстрее

Привет, повелитель скорости!

Устал ждать, пока SCP докачает твои гигабайты? NFS обгоняет SSH, SMB и HTTP по скорости передачи. Вот готовая шпаргалка — копипасть и используй.

Настройка NFS сервера

Создаём директорию для шары:
# mkdir /mnt/nfs
# chown nobody:nogroup /mnt/nfs


Ставим NFS сервер:
# apt install nfs-kernel-server


Настраиваем экспорт в /etc/exports:
# Для одного IP
/mnt/nfs 10.20.1.56(rw,all_squash,no_subtree_check,crossmnt)

# Для подсети
/mnt/nfs 10.20.1.56/24(rw,all_squash,no_subtree_check,crossmnt)

# Для нескольких IP (каждый в своей строке)
/mnt/nfs 10.20.1.56(rw,all_squash,no_subtree_check,crossmnt)
/mnt/nfs 10.20.1.52(rw,all_squash,no_subtree_check,crossmnt)


Перезапускаем и проверяем:
# systemctl restart nfs-server
# systemctl status nfs-server


💡 Важно: открой TCP порт 2049 в файрволе!

Настройка клиента

Ставим клиентский пакет:
# apt install nfs-common


Проверяем доступность сервера:
# showmount -e 10.20.1.36
Export list for 10.20.1.36:
/mnt/nfs 10.20.1.56


Монтируем шару:
# mkdir /mnt/nfs
# mount 10.20.1.36:/mnt/nfs /mnt/nfs


Проверяем результат:
# df -h | grep nfs
10.20.1.36:/mnt/nfs 48G 3.2G 43G 7% /mnt/nfs

# Смотрим версию протокола (должна быть v4)
# mount -t nfs4


Тестируем запись:
# echo "test" > /mnt/nfs/testfile


Для постоянного монтирования добавь в /etc/fstab:
10.20.1.36:/mnt/nfs /mnt/nfs nfs4 defaults 0 0


Результат: максимальная скорость передачи файлов между серверами. Особенно выручает для временных задач — поднял, скопировал, удалил.

____________________

Дополнительный материал:
🧠 - Путешествие во Времени: От ext до ext4 - Эволюция Файловых Систем Linux
🧠 - Linux Mastery: Организация файлов и каталогов
🧠 - Как пентестеры взломали ИТ-компанию через сайт уролога и Роскомнадзор

#Linux_Mastery #fileserver #nfs #linux #sysadmin #devops #performance
👍12
Media is too big
VIEW IN TELEGRAM
❄️ Серверы-снежинки убивают бизнес. Ansible спасёт!

Привет, борец с хаосом!

У тебя есть серверы, которые не перезагружались 2 года? Боишься их трогать? Это "снежинки" — уникальные, хрупкие, невоспроизводимые. Автор показывает, как Ansible превращает хаос в код!

📹 Таймкоды:
00:00 — Что такое DevOps и зачем он нужен
00:23 — Проблема серверов-снежинок
01:20 — Infrastructure as Code: основная идея
02:15 — Обзор инструментов (Ansible, Terraform, Puppet)
02:51 — Что умеет Ansible
04:55 — Почему Ansible: без агентов, только SSH
06:56 — Структура Ansible-проекта
08:14 — Inventory: список серверов
10:59 — Переменные и их приоритеты
11:46 — Tasks и handlers
13:44 — Шаблоны с Jinja2
15:50 — Playbooks и roles
16:34 — Запуск и результат

💡 Почему Ansible побеждает:
- Не нужны агенты на серверах
- Работает через SSH
- Конфиги в YAML (читаемо!)
- Версионирование через Git
- Идемпотентность

🚀 Результат:
Вместо уникальных "снежинок" — воспроизводимая инфраструктура. Упал сервер? Запусти playbook — всё восстановится!

🌐 Источник: YouTube - Слёрм
____________________

Дополнительный материал:
🧠 - История зеленого великана: Как Linux Mint стал символом простоты и элегантности
🧠 - Защита данных в Linux: Как обойти ограничения файловой системы
🧠 - Все, что вам нужно знать о команде ar в Linux

#Linux_youtube #ansible #devops #automation #infrastructure #video #IaC
👍6🔥3
Вопрос из теста Linux Essentials Certification: Identify the proper device for the third partition, on the second hard disk, on the first IDE controller on a PC system. / Определите правильное устройство для третьего раздела на втором жестком диске первог
Anonymous Quiz
5%
dev/hdc1a3
12%
/dev/hd1b3
31%
/dev/hdc1d2p3
48%
/dev/hdb3
4%
dev/hdc1b3
🎯 Почему твой Nmap работает медленно: трюки ускорения

Эй, сканер сетей!

Устал ждать, пока Nmap просканирует сеть? Я тоже постоянно забываю нужные ключи и лезу в заметки. Собрал рабочую шпаргалку с трюками ускорения — сохраняй и используй.

Базовое сканирование

Быстрый скан портов до 1024:
nmap 192.168.1.1
nmap 192.168.1.1 192.168.2.1
nmap 192.168.1.1-254
nmap 192.168.1.0/24


Полное сканирование всех 65535 портов:
nmap 192.168.1.1 -p-


Скан хоста, игнорирующего ping:
nmap 192.168.1.1 -Pn


Техники сканирования

nmap 192.168.1.1 -sS  # TCP SYN (по умолчанию)
nmap 192.168.1.1 -sT # TCP connect
nmap 192.168.1.1 -sU # UDP сканирование

# Полное TCP+UDP (очень долго!)
nmap 192.168.1.1 -sS -sU -p-


Поиск живых хостов

Обнаружение без сканирования портов:
nmap 192.168.1.1/24 -sn


ARP-сканирование в локалке (в разы быстрее!):
nmap 192.168.1.1/24 -PR


Просто список IP без проверки:
nmap 192.168.1.1-15 -sL


Определение сервисов

Быстрая проверка версий (1 порт = 1 строка):
nmap 192.168.1.1 -sV


Полный анализ (ОС, версии, скрипты, traceroute):
nmap 192.168.1.1 -A


🚀 Трюк для ускорения в 10 раз

Вместо долгого полного сканирования — сначала найди открытые порты, потом анализируй только их:

#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)
nmap -p$ports -A $1


Использование:
./nmap.sh 192.168.1.1


Скорость сканирования

-T0  # paranoid (паранойдный)
-T1 # sneaky (хитрый)
-T2 # polite (вежливый)
-T3 # normal (обычный, по умолчанию)
-T4 # aggressive (для локалки)
-T5 # insane (безумный)


💡 Совет: в локальной сети смело используй -T4, для внешних хостов — -T3 или ниже.

Итог: правильные ключи = экономия времени. Особенно скрипт с двухэтапным сканированием — реально ускоряет работу в разы.
____________________

Дополнительный материал:
🧠 - Путешествие по Виртуальным Интерфейсам и Канальному Уровню в Linux: От Туннелей до Мостов
🧠 - История AppArmor: Как Linux Стал Крепостью Безопасности
🧠 - Linux Mastery: Быстрое создание пакетов файлов для тестирования

#Linux_Mastery #nmap #security #pentesting #networking #linux
👍15🔥3
Media is too big
VIEW IN TELEGRAM
🔥 Kubernetes обязателен для DevOps в 2025. Вот почему

Привет, будущий мастер оркестрации!

Kubernetes стал стандартом для средних и крупных компаний. Без него — никуда. Автор за 100 минут проводит от основ до запуска первого приложения в кластере. Практика на реальном проекте!

📹 Таймкоды:
00:00 — Почему K8s стал стандартом
01:10 — Контейнеризация vs традиционный деплой
03:50 — K8s vs Docker Swarm: кто победил
07:59 — Кому подходит курс
09:40 — Проект: сокращатель ссылок
15:03 — Настройка окружения
18:42 — Установка Kubernetes
23:10 — macOS: Homebrew + Minikube
29:39 — Linux: пошаговая установка
33:23 — Windows: Hyper-V setup
43:07 — Pod — основа всего
45:02 — Services: постоянный доступ
55:07 — Императивный vs Декларативный
01:00:52 — YAML: основы синтаксиса
01:12:08 — Первая конфигурация Pod
01:29:06 — NodePort Service
01:38:50 — Запуск и проверка
01:44:20 — Жизненный цикл Pod

🚀 Результат:
За 1.5 часа запустишь приложение в Kubernetes, поймёшь основные концепции и будешь готов к работе с K8s в продакшене.


🌐 Источник: YouTube - PurpleSchool | Anton Larichev
____________________

Дополнительный материал:
🧠 - SELinux: От Секретного Проекта до Корпоративного Стража
🧠 - Linux Mastery: Настройка разрешений каталогов с помощью chmod
🧠 - Разгадываем тайны архитектуры: Что такое i686 в Ubuntu

#Linux_youtube #kubernetes #k8s #docker #devops #video #yaml
👍11
📊 Мониторинг без боли: Prometheus + Grafana одной командой

Привет, строитель мониторинга!

Prometheus проще Zabbix'а в разы — никаких агентов, баз данных, сложных конфигов. 10 минут и у тебя работающий мониторинг с красивыми графиками. Держи готовую шпаргалку.

Установка Docker

# curl https://get.docker.com | bash -


Подготовка файлов

# mkdir ~/prometheus && cd ~/prometheus
# touch docker-compose.yml


Docker-compose конфиг

Создай файл docker-compose.yml:
version: '3.9'
networks:
monitoring:
driver: bridge
volumes:
prometheus_data: {}

services:

prometheus:
image: prom/prometheus:latest
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
container_name: prometheus
hostname: prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
expose:
- 9090
restart: unless-stopped
environment:
TZ: "Europe/Moscow"
networks:
- monitoring

node-exporter:
image: prom/node-exporter
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
container_name: exporter
hostname: exporter
command:
- '--path.procfs=/host/proc'
- '--path.rootfs=/rootfs'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
expose:
- 9100
restart: unless-stopped
environment:
TZ: "Europe/Moscow"
networks:
- monitoring

grafana:
image: grafana/grafana
user: root
depends_on:
- prometheus
ports:
- 3000:3000
volumes:
- ./grafana:/var/lib/grafana
- ./grafana/provisioning/:/etc/grafana/provisioning/
container_name: grafana
hostname: grafana
restart: unless-stopped
environment:
TZ: "Europe/Moscow"
networks:
- monitoring


Конфиг Prometheus

Создай файл prometheus.yml:
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 5s
scrape_timeout: 5s
static_configs:
- targets: ['localhost:9090']

- job_name: 'node-local'
scrape_interval: 5s
static_configs:
- targets: ['node-exporter:9100']


Запуск всего стека

# docker-compose up -d


Настройка Grafana

1. Открой http://твой-ip:3000
2. Логин: admin / admin
3. Connections → Data sources → Add Prometheus
4. URL: http://prometheus:9090
5. Dashboards → New → Import
6. Введи ID: 1860 (готовый дашборд для Node Exporter)

Добавление удалённого сервера

На удалённом сервере запусти exporter:
# docker run -d --net="host" --pid="host" -v "/:/host:ro,rslave" \
prom/node-exporter:latest --path.rootfs=/host

# Проверка
# ss -tulnp | grep 9100


Добавь в prometheus.yml:
 - job_name: 'node-remote'
scrape_interval: 5s
static_configs:
- targets: ['10.20.1.56:9100']


Перезапусти:
# docker compose restart


💡 Результат: полноценный мониторинг с графиками CPU, RAM, диска, сети. Всё за 10 минут без танцев с бубном!

❗️ Важно: в проде закрой порты файрволом — оставь доступ только нужным IP.
____________________

Дополнительный материал:
🧠 - Мастерство Управления Правами в Linux: От Новичка до Профи
🧠 - Максимизируйте безопасность с минимальными разрешениями в Linux
🧠 - От Slackware до Pacman: Путешествие Систем Управления Пакетами в Linux

#Linux_Mastery #мониторинг #prometheus #devops #grafana #docker
👍10🔥3
🐳 Почему ты не можешь просто скопировать файл из Docker образа

Привет, укротитель контейнеров!

Знакомая боль: нужен один файл из Docker образа, но запускать контейнер не хочется. Docker почему-то не даёт простого решения. Рассказываю рабочий способ и показываю инструмент для анализа образов.

Извлекаем файл из образа

Скачиваем образ и создаём контейнер БЕЗ запуска:
# docker pull nginx:latest
# docker create --name nginx nginx:latest


Теперь копируем нужный файл:
# docker cp nginx:/docker-entrypoint.d/30-tune-worker-processes.sh ~/


Или выгружаем весь образ:
# docker export nginx -o ~/nginx-docker.tar.gz


Dive — рентген для образов

Утилита показывает слои образа и что в каждом слое изменилось. Запускаем прямо в Docker:

# docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock \
wagoodman/dive nginx:latest


Создаём alias для удобства:
alias dive="docker run -ti --rm -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive"


Теперь просто:
# dive nginx:latest


Проверка раздутости образа

Вместо docker build используй dive build — получишь анализ эффективности сборки:
# dive build -t myapp:latest .


Dive покажет:
- Размер каждого слоя
- Что добавилось/удалилось
- Efficiency Score образа
- Wasted Space (лишнее место)

💡 Фишка: встрой проверку в CI/CD — автоматически отлавливай неоптимальные образы.

Итог: Docker создан для изоляции, поэтому прямого доступа к файлам нет. Но способы есть — используй их правильно.
____________________

Дополнительный материал:
🧠 - Linux Essentials: Понимание относительных и абсолютных путей к файлам
🧠 - Открытие Rancher: Путешествие от Стартапа до Лидера в Контейнеризации
🧠 - Осваиваем Docker: Искусство Сборки Образов и Управления Сетью

#Linux_Mastery #docker #devops #containers #optimization
👍15
Media is too big
VIEW IN TELEGRAM
🚨 Всем раздал kubectl? Как не потерять кластер

Привет, хранитель кластера!

Дал разработчикам полный доступ к K8s и теперь не спишь ночами? Александр Кузьмин из КРОК показывает, как правильно настроить RBAC и интегрировать Kubernetes с Active Directory. От теории до практики!

📹 Таймкоды:
00:20 — Почему важно разграничивать доступ
02:49 — Опасности полного доступа
04:46 — RBAC: основы и принципы
07:58 — Создание ролей и привязок
11:31 — Способы аутентификации
12:12 — Клиентские сертификаты
13:40 — Автоматизация через Ansible
15:41 — LDAP-интеграция
16:22 — Dex: простое решение
18:28 — Как работает аутентификация
24:02 — Keycloak: enterprise-вариант
28:19 — Сравнение подходов
31:40 — Работа с несколькими LDAP

🚀 Итог:
Правильная настройка доступа = спокойный сон админа!


🌐 Источник: YouTube - КРОК
____________________

Дополнительный материал:
🧠 - От RPM до Snap: Путешествие через эволюцию систем управления пакетами
🧠 - Linux Deep Dive: Разбираемся с UID и группами
🧠 - Как использовать команду basename для упрощения ваших скриптов Bash

#Linux_youtube #kubernetes #rbac #ldap #security #authentication #vide
👍7
Вопрос из теста Linux Essentials Certification: Which of the following commands can be used to view a file and do search operations within it while viewing the contents? / Какая из следующих команд может быть использована для просмотра файла и выполнения
Anonymous Quiz
14%
see
41%
less
29%
grep
4%
report
11%
find
👍10👎1
Вопрос из теста Linux Essentials Certification: Which of the following can be used to access the command line? / Что из следующего может быть использовано для доступа к командной строке?
Anonymous Quiz
1%
BIOS
93%
Terminal
1%
Firefox
1%
XWindow
3%
xargs
👍4👀1
🔐 Забудь про Nginx для тестов: вот решение проще

Эй, мастер быстрых решений!

Знаешь трюк с HTTP сервером на Python для передачи файлов? А что если нужен HTTPS для тестов, но лень возиться с Nginx? Показываю способ поднять защищённый сервер за минуту.

Классика для HTTP

# python3 -m http.server 8000


## Апгрейд до HTTPS

Генерируем самоподписный сертификат:
# openssl req -new -x509 -keyout localhost.pem -out localhost.pem -days 365 -nodes


Создаём файл webserver.py:
import http.server, ssl

server_address = ('172.20.0.210', 8000)
httpd = http.server.HTTPServer(server_address, http.server.SimpleHTTPRequestHandler)
httpd.socket = ssl.wrap_socket(httpd.socket,server_side=True,certfile='localhost.pem',ssl_version=ssl.PROTOCOL_TLSv1_2)
httpd.serve_forever()


Запускаем HTTPS сервер:
# python3 webserver.py


Проверяем:
# Открываем в браузере
https://172.20.0.210:8000


Что получаем:
- Полноценный HTTPS сервер для тестов
- Файловый браузер по умолчанию
- Или веб-страница, если есть index.html
- Никаких конфигов и лишней возни

💡 Где пригодится:
- Тестирование приложений, требующих HTTPS
- Быстрая передача файлов по защищённому каналу
- Временный сервер для демо
- Проверка SSL/TLS настроек

Совет: сохрани скрипт в /usr/local/bin/ и используй как команду для быстрого запуска HTTPS где угодно.
____________________

Дополнительный материал:
🧠 - Открываем тайны Linux: Почему скрыть файлы от пользователя root невозможно?
🧠 - Как Создать Идеальный Dockerfile: Секреты Эффективности и Лаконичности
🧠 - Ускоряем YouTube и обходим блокировки на Linux: Ваше руководство

#Linux_Mastery #webserver #python #https #quickfix #sysadmin
👍14🔥3
🔍 Как объединить логи всех контейнеров в одном месте

Привет, укротитель логов!

Вчера в комментах подсказали инструмент logdy — теперь смотрю все логи через браузер. Один бинарник, никаких зависимостей. Показываю все режимы работы.

Установка за 10 секунд

# curl https://logdy.dev/install.sh | sh


## Простой режим — один лог

# tail -f /var/log/syslog | logdy --ui-ip=0.0.0.0


Или так:
# logdy --ui-ip=0.0.0.0 follow /var/log/syslog


Открывай http://твой-ip:8080 — логи в браузере!

Логи Docker контейнера

# docker logs 761965fa13b2 --follow | logdy --ui-ip=0.0.0.0


Объединение нескольких контейнеров

Запускаем logdy в режиме сокетов:
# logdy --ui-ip=0.0.0.0 socket 8123 8124


Направляем логи каждого контейнера:
# docker logs d20339949095 --follow | logdy forward 8123
# docker logs 761965fa13b2 --follow | logdy forward 8124


Теперь все логи в одном интерфейсе с фильтрацией по источнику!

Для локальной разработки

# node app.js | logdy


В VS Code: Ctrl+Shift+P → "Simple Browser: Show" → http://localhost:8080

API режим с токеном

Запускаем с API:
# logdy --ui-ip=0.0.0.0 --api-key=secrettoken


Отправляем логи через curl:
curl --location --request POST 'http://1.2.3.4:8080/api/log' \
--header 'Authorization: Bearer secrettoken' \
--header 'Content-Type: application/json' \
--data '{"logs": [{"log": "this is a log message as a string" }],"source":"machine identifier"}'


Режим stdin для пайпов

# logdy stdin


Фишки logdy:
- Парсит JSON логи автоматически
- Разбивает на колонки
- Фильтрация и поиск в реальном времени
- Защита паролем через ключи запуска
- Экспорт логов

💡 Где выручает:
- Отладка микросервисов
- Мониторинг нескольких контейнеров
- Быстрый просмотр логов без SSH
- Демо для заказчика

Итог: один инструмент покрывает 90% задач с логами. Особенно круто для Docker-окружения.
____________________

Дополнительный материал:
🧠 - Путешествие LXD: Как Контейнеры LXD Переопределили Виртуализацию
🧠 - Удаление файлов и каталогов без стресса
🧠 - Создание Docker Образов и Магия Сетей: От Одиночных Узлов до Docker Swarm

#Linux_Mastery #logs #devops #docker #monitoring #tools
👍9🔥7
🔧 История команд исчезает? Вот решение

Привет, хранитель команд!

Бесит, когда нужная команда не сохранилась в history? На всех своих серверах первым делом настраиваю правильное хранение истории. Делюсь проверенными настройками для ~/.bashrc.

Мгновенное сохранение команд

PROMPT_COMMAND='history -a'

Команда сохраняется сразу после ввода, а не при выходе из сессии.

Метки времени для команд

export HISTTIMEFORMAT='%F %T '

Теперь видно когда выполнялась команда: 2024-09-25 16:39:30

Увеличение размера истории

export HISTSIZE=10000

Вместо дефолтных 500 команд — храним 10000. Хватает с запасом.

Исключение мусорных команд

export HISTIGNORE="ls:history:w:htop:pwd:top:iftop"

Эти команды не засоряют историю.

Пробел = команда не сохраняется

export HISTCONTROL=ignorespace

Поставил пробел перед командой — она не попадёт в историю.

Применение настроек

# source ~/.bashrc


Проверка параметров

# export | grep -i hist


Для всех пользователей

Создай файл /etc/profile.d/history.sh с этими настройками — применится для всех.

Поиск по истории

Быстрый поиск: Ctrl+R и начинай вводить команду. Повторное Ctrl+R — следующее совпадение.

Мой способ через grep:
# history | grep 'apt install'


⚠️ Опасный подвох HISTIGNORE

История из жизни: htop в исключениях → перезагрузил сервер командой reboot → зашёл обратно → запустил htop → закрыл → нажал стрелку вверх для повтора → там reboot (htop не сохранился!) → Enter на автомате → сервер ушёл в ребут 🤦

Мораль: осторожнее с исключениями и стрелкой вверх!

💡 Итог: правильная настройка history экономит часы при поиске той самой команды, которую вводил месяц назад.
____________________

Дополнительный материал:
🧠 - Btrfs: Революция Файловых Систем в Мире Linux
🧠 - Станьте мастером привилегий в Linux: Всё о sudo и su
🧠 - Docker Swarm & GitLab: Ускоряем Деплой Проектов с Шифрованием Секретов

#Linux_Mastery #linux #terminal #bash #productivity #sysadmin
👍23🔥2
SS: находим атакующих за 30 секунд

Эй, ловец сетевых пакетов!

Netstat устарел, в новых дистрибутивах его нет. Пора привыкать к SS. Делюсь рабочими командами и трюком, как запомнить ключи через слово "тулуп".

Базовые команды SS

Все открытые порты (запомни как "тулуп"):
# ss -tulnp


Проверка unix-сокетов:
# ss -l | grep .sock


Все unix-сокеты (но вывод перегружен):
# ss -ax


Активные соединения

# ss -ntu


Поиск атакующих — практика

Подсчёт соединений с каждого IP:
# ss -ntuH | awk '{print $6}' | grep -vE 127.0.0.1 | \
cut -d: -f1 | sort | uniq -c | sort -n | sed 's/^[ \t]*//'


Только IP с более 30 соединениями:
# ss -ntuH | awk '{print $6}' | grep -vE 127.0.0.1 | \
cut -d: -f1 | sort | uniq -c | sort -n | sed 's/^[ \t]*//' | \
awk '{if ($1 > 30) print$2}'


Общее количество активных соединений:
# ss -ntuH | awk '{print $6}' | grep -vE 127.0.0.1 | wc -l


Все соединения (не только активные):
# ss -ntua


Применение на практике

Получил список подозрительных IP? Отправляй их в:
- fail2ban
- ipset
- nftables

И блокируй атакующих автоматически!

Минус SS: в узком терминале вывод расползается. Приходится разворачивать окно на весь экран, в отличие от компактного netstat.

Лайфхак: "tulnp" = "тулуп". Глупо звучит, но реально помогает запомнить ключи навсегда.

💡 Итог: SS неудобнее netstat визуально, но работает быстрее и есть везде по умолчанию. Пора переучиваться.
____________________

Дополнительный материал:
🧠 - От Knoppix до MX Linux: Путешествие Debian-базированных Дистрибутивов
🧠 - Управление файлами и каталогами как профи
🧠 - Ваш путеводитель по командам Adduser и Addgroup в Linux

#Linux_Mastery #linux #terminal #networking #security #ddos
👍22
Media is too big
VIEW IN TELEGRAM
🔥 Как я ускорил поиск с 10 секунд до миллисекунд

Привет, цифровой архитектор!

Твой поиск по базе тормозит как трактор в болоте? Пользователи ждут результаты вечность, а ты не знаешь, как это починить? Сейчас покажу реальное решение.

📍 Таймкоды видео:
00:00 — Введение в Elasticsearch
02:05 — Почему обычный поиск тормозит
05:49 — Основные понятия: индексы, документы, запросы
07:09 — Установка через Docker
08:23 — Базовые команды GET, PUT, POST
10:51 — Добавление и обновление документов
14:19 — Настройка поиска и ранжирование
18:29 — Реальный пример: веб-приложение на Spring Boot
25:43 — Тестирование и результаты

🚀 Попробуй настроить у себя и сравни скорость!

🌐 Источник: https://youtu.be/vxE1aGTEnbE?si=1tTdg2QASMGfF6f_
____________________

Дополнительный материал:
🧠 - От простого до грандиозного: Путешествие Kubernetes в мире контейнеризации
🧠 - Linux Mastery: Управление разрешениями каталогов с помощью chmod
🧠 - Станьте мастером управления пользователями и группами в Linux с помощью команд adduser и addgroup

#Linux_youtube #Elasticsearch #DevOps #Search #Docker #Performance #Database
🔥3
Вопрос из теста Linux Essentials Certification: How could one search for the file foo.txt under the directory /home? | Как можно найти файл foo.txt в директории /home?
Anonymous Quiz
43%
find /home -name foo.txt
16%
find /home -file foo.txt
6%
search /home -file foo.txt
7%
search /home foo.txt
28%
find /home foo.txt
👍9👎2