Linux Academy
28.2K subscribers
722 photos
89 videos
5 files
596 links
Download Telegram
Кто-то разобрал Claude Code почти до винтика

learn-coding-agent - репозиторий для тех, кто хочет понять, как устроены современные coding agents не на уровне промо-страниц, а на уровне архитектуры.

Автор собрал разбор Claude Code по публичным источникам: цикл агента, систему инструментов, разрешения, работу с контекстом, сессии, подпроцессы, MCP, удалённые настройки, телеметрию и скрытые флаги.

Получился не “гайд по использованию”, а карта внутренней логики CLI-агента: как он принимает решение, когда просит разрешение, как вызывает инструменты, как хранит историю и как расширяется через внешние интеграции.

https://github.com/justxor/Claudecourse/
15🤪4👍2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Скрытый майнер жрёт твой ПК годами, а ты не знаешь
NtWarden вскрывает Windows на уровне ядра: никакой пощады вирусам.


Разбираем NtWarden, мощный сканер Windows, который работает на уровне ядра и показывает то, что не видят обычные антивирусы и диспетчер задач.

Скачиваем с GitHub, запускаем от админа и делаем полную проверку системы: процессы, службы, сетевые соединения, драйверы и ядро. Инструмент находит скрытые процессы, руткиты, майнеры и трояны, показывает реальную нагрузку на процессор и подсвечивает подозрительную активность.

После анализа чистим систему: удаляем найденные угрозы, чистим автозагрузку, мусор и остатки вредоносов в пару команд.
github.com/mrT4ntr4/NtWarden
🤔168👍8🔥5👎1🥴1
После атаки в системе всегда остаются следы. Вопрос в том, умеет ли их кто-то прочитать.

Довольно сложно понять, что именно произошло, когда, через что зашли злоумышленники и какие данные могли быть затронуты. Особенно если инфраструктура на Linux — здесь многое устроено иначе, чем в Windows, и без отдельной экспертизы расследование часто застревает на уровне догадок.

В Codeby Academy есть практический онлайн-курс «Цифровая криминалистика и реагирование на инциденты в Linux (DFIR)»🚗

За 3,5 месяца вы научитесь проходить полный цикл расследования: от первых признаков компрометации до восстановленной картины атаки.

Что внутри:
⏺️ реальные кейсы на основе расследований КИ 2023–2024
⏺️ сбор и анализ артефактов: логи, процессы, файловая система, сетевая активность
⏺️ работа с open-source инструментами DFIR
⏺️ практика в учебной лаборатории + разбор домашних заданий с преподавателем
⏺️ удостоверение о повышении квалификации после экзамена

Запись на ближайший поток открыта до 6 августа.

Скидка 30% при оплате сразу. Доступна также поэтапная оплата 6 520 ₽/мес

➡️Записаться и посмотреть программу
🪧Бесплатная консультация @CodebyAcademyBot
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍4🔥2
Linux-совет: как быстро найти нужную строку в огромном файле

Нужно найти ошибку, IP-адрес или конкретное слово в большом логе? Используйте grep:


grep "keyword" filename


Например:


grep "error" /var/log/syslog


Команда выведет только строки, содержащие слово error.

Несколько полезных вариантов:


grep -i "error" filename


Поиск без учёта регистра.


grep -n "error" filename


Показать номера найденных строк.


grep -R "error" /var/log/


Искать сразу во всех файлах каталога.

Простой инструмент, который экономит время при работе с логами и большими текстовыми файлами.

#linux #bash #devops #linuxtips
🔥25👍75🎉1
💡 Linux-совет: как смотреть только свежие строки большого файла

Не нужно открывать огромный лог целиком. Используйте tail:


tail /var/log/syslog


По умолчанию команда покажет последние 10 строк.

Ещё полезные варианты:


tail -20 app.log
tail -f /var/log/syslog


-20 — вывести последние 20 строк.
-f — следить за файлом в реальном времени и сразу видеть новые записи.

Особенно удобно для логов приложений, nginx, systemd и любых файлов, которые постоянно дописываются.
🔥102
💡 Linux-совет: сравниваем два файла построчно

Чтобы посмотреть файлы рядом и сразу увидеть различия, используйте sdiff:


sdiff old.txt new.txt


Команда выведет содержимое в две колонки и отметит отличия:

* | — строки различаются
* < — строка есть только в первом файле
* > — строка есть только во втором

Примеры:


sdiff config_old.txt config_new.txt
sdiff users_old.txt users_new.txt
sdiff list1.txt list2.txt


Удобно для сравнения конфигов, списков и разных версий файлов.

#Linux #CLI
🔥13👍126
This media is not supported in your browser
VIEW IN TELEGRAM
watch запускает любую команду по кругу и показывает свежий вывод каждую секунду. Память через watch free -h, время через watch date, файлы через watch ls -l, процессы через watch "ps aux | grep nginx", сеть через watch "ip addr". Никаких ручных повторов и своих скриптов, всё видно в реальном времени прямо в терминале.
11🔥8👍7
💡 Как запустить одну команду сразу для списка файлов

Если имена файлов записаны в files.txt, передайте их в xargs:


xargs file < files.txt


Так команда file выполнится для каждого файла из списка.

Другие примеры:


xargs ls -lh < files.txt
xargs wc -l < files.txt


Поиск ошибок во всех `.log`-файлах:


find . -name "*.log" -print0 | xargs -0 grep "ERROR"


Связка -print0 и -0 корректно обрабатывает пробелы и специальные символы в именах файлов.

Удобный способ массово обрабатывать файлы без циклов и ручного запуска команд.

#Linux #Bash #Terminal
🔥12👍107👏1
This media is not supported in your browser
VIEW IN TELEGRAM
Забыл tmux? Процесс всё равно можно спасти

Знакомая ситуация: запустил обучение на удалённой машине, отошёл, и тут понимаешь, что сессия висит в обычном SSH без tmux. Разрыв соединения — и всё насмарку, часы работы в трубу.

Спасение занимает пять секунд и три шага.

bash
Ctrl+Z # ставим задачу на паузу
bg # продолжаем в фоне
disown -h %1 # отвязываем от shell

Работает это так. Ctrl+Z останавливает foreground job и возвращает управление, bg отправляет его обратно в работу уже в фоне, а disown -h убирает задачу из таблицы заданий шелла. После этого при выходе шелл не пошлёт ей SIGHUP, и процесс спокойно доживёт до конца.

Тот же приём выручает на долгих rsync, сборках и кодировании через ffmpeg:

bash
rsync -avP /data backup:/mnt/backup
Ctrl+Z
bg
disown -h %1


Пара нюансов. Вывод в терминал после отвязки уже никуда не денется, поэтому логи лучше писать в файл заранее. Управлять процессом как в tmux тоже не выйдет, вернуть его в интерактив не получится. Работает только для того, что запущено в текущем шелле.

Так что приём выручает постфактум, но лучше сразу начинать работу с tmux new -s work и не доводить до спасательной операции.
👍18🔥94🗿1
🐧 Linux появился из проекта, который вообще не должен был стать операционной системой

Весной 1991 года Линус Торвальдс изучал возможности нового компьютера на базе Intel 386. Сначала он написал драйвер клавиатуры, затем последовательный порт и простую терминальную программу.

Потом появились переключение задач, драйвер диска и небольшая файловая система. Обычный эксперимент постепенно превратился в ядро собственной ОС.

25 августа Линус написал знаменитое сообщение: он делает бесплатную систему «просто как хобби» и не ждёт, что она станет большой и профессиональной.

Спустя 35 лет Linux работает на серверах, смартфонах, суперкомпьютерах и почти всей современной облачной инфраструктуре.

Один из главных проектов в истории технологий начался с любопытства к новому компьютеру.

https://www.cs.cmu.edu/~awb/linux.history.html

#Linux #OpenSource #Programming #ИсторияIT
32👍16🔥11👏5
💡Совет Linux #68: как автоматически остановить зависшую команду

Команда выполняется слишком долго? Ограничьте её время через timeout:


timeout 10s command


Например:


timeout 10s ping google.com


Через 10 секунд процесс будет автоматически остановлен.

Ещё примеры:


timeout 30s top
timeout 60s tail -f /var/log/syslog
timeout 5s sleep 20
timeout 2m find / -name "*.log"


Поддерживаются разные единицы времени:


s - секунды
m - минуты
h - часы
d - дни


Полезно для тестов, мониторинга, CI-скриптов и команд, которые могут зависнуть.

После срабатывания тайм-аута команда обычно завершается с кодом 124, поэтому результат легко проверить в скрипте:


timeout 10s command

if [ $? -eq 124 ]; then
echo "Время выполнения истекло"
fi


Простой способ не ждать бесконечно и не останавливать процесс вручную через Ctrl+C.
👍22🔥113👏1
🚀 Как ядро Linux создаёт пакеты переменной длины без лишних копирований

В C есть мощный паттерн — flexible array member.

Вместо хранения заголовка и данных отдельно:


header → отдельно
payload → отдельно


можно сделать один непрерывный блок памяти:


+----------------+
| struct msg |
| len |
+----------------+
| payload data[] |
+----------------+


Код:


struct msg {
uint32_t len;
uint8_t data[];
};

struct msg *m = malloc(sizeof(*m) + n);


Один malloc() → один блок памяти → один free().

Почему это любят в системном коде:

меньше аллокаций
лучше работа с CPU cache
проще сериализация
нет лишних указателей и разрозненных данных

Такой подход используется в низкоуровневом коде: ядрах, драйверах, сетевых стеках.

До C99 часто писали:


uint8_t data[1];


и вручную обходили ограничения языка.

Теперь data[] — официальный способ сказать:

«После структуры здесь будет динамический массив данных».

Маленькая особенность C, которая помогает писать быстрый код на уровне ядра.
👍126🔥4
Как Redis украли — не нарушив ни одного закона

В 2009 году итальянский разработчик Сальваторе Санфилиппо, известный как antirez, создал Redis и выпустил его под свободной лицензией BSD. Проект быстро стал одним из ключевых инструментов современной инфраструктуры.

Но рядом с Redis постепенно росла компания, которая однажды получила контроль не только над бизнесом вокруг проекта, но и над самим его именем.

В 2013 году хостинг-провайдер Garantia Data попытался переименоваться в RedisDB. Сообщество возмутилось, antirez публично выступил против, и компания отступила.

Ненадолго.

Через год Garantia стала Redis Labs. В 2015 году она наняла самого antirez и превратилась в официального спонсора проекта. В 2018 году создатель Redis передал компании права на бренд и интеллектуальную собственность. В 2020-м он ушёл из проекта, а ещё через год Redis Labs сократила название до одного слова — Redis.

Компания, которой когда-то не позволили забрать имя, спустя восемь лет стала его законным владельцем.

В марте 2024 года Redis отказалась от прежней открытой лицензии для новых версий и перешла на условия, которые Open Source Initiative не признаёт open source.

Сообщество ответило почти сразу: появился форк Valkey, который поддержали Linux Foundation, AWS, Google Cloud, Oracle и другие крупные игроки.

Юридически Redis ничего не украла. Код был открыт, а права передали добровольно.

Именно поэтому история настолько показательна: чтобы получить контроль над open source-проектом, необязательно красть его код. Иногда достаточно годами финансировать развитие, получить торговую марку, оформить права и дождаться момента, когда возражать будет уже некому.

Открытый исходный код ещё не означает открытое будущее проекта.
👍19😢8🔥43👏1
Media is too big
VIEW IN TELEGRAM
Linux показывает 0 свободной памяти: почему это нормально

Открываешь free -h, видишь free 0B и хватаешься за голову. Спокойно, память никуда не делась, она ушла в buff/cache и освободится в ту же секунду, когда понадобится приложению. Показываю за 45 секунд, какая колонка реально отвечает за здоровье системы и по каким двум признакам понятно, что проблема всё-таки есть.
🔥12👍91
🦀 Один TUI, чтобы управлять всем локальным web-стеком.

Reeve - менеджер localhost-окружения для разработки, который собирает привычные dev-инструменты в одном терминальном интерфейсе.

Что умеет:

- переключать версии PHP;
- управлять Caddy, Apache и nginx;
- работать с базами данных;
- настраивать локальный SSL и DNS;
- управлять parked sites;
- смотреть live traffic;
- держать весь локальный стек под рукой без десятка отдельных команд.

Проект написан на Rust и использует Ratatui для интерфейса.

Для тех, кто устал вручную переключаться между nginx, PHP, базой, hosts и сертификатами — выглядит очень удобно.

GitHub:
https://github.com/yetidevworks/reeve

#Rust #DevTools #TUI #WebDevelopment #OpenSource
👍7🔥43
⚡️ Быстрый Linux-трюк: `tr` меняет символы в тексте без открытия редактора.

Например, перевести весь текст файла в нижний регистр:


tr 'A-Z' 'a-z' < name.txt


Ещё несколько полезных вариантов:


echo "hello linux" | tr 'a-z' 'A-Z'
# HELLO LINUX



echo "HELLO LINUX" | tr 'A-Z' 'a-z'
# hello linux



echo "hello linux" | tr ' ' '_'
# hello_linux


tr работает как простой character translator:

* tr 'a-z' 'A-Z' — lowercase → uppercase
* tr 'A-Z' 'a-z' — uppercase → lowercase
* tr ' ' '_' — пробелы → подчёркивания

Но есть важный нюанс: команда


tr 'A-Z' 'a-z' < name.txt


не изменяет сам файл, а выводит результат в stdout.

Чтобы сохранить его:


tr 'A-Z' 'a-z' < name.txt > name_lower.txt


Небольшая утилита, но очень удобная для shell-скриптов, пайплайнов и быстрой обработки текста.

#Linux #Bash #CLI #DevOps
12👍11🔥5👏1
💡 Быстрый Linux-совет: как упаковать файлы и папки через tar

Создать обычный архив:


tar -cvf project.tar ~/Documents/Project/


Посмотреть содержимое без распаковки:


tar -tf project.tar


Создать архив со сжатием gzip:


tar -czvf project.tar.gz Documents/


Распаковать:


tar -xzvf project.tar.gz


Что значат флаги:

-c - создать архив
-x - распаковать
-t - показать содержимое
-v - выводить обрабатываемые файлы
-f - указать имя архива
-z - использовать gzip

Полезно для бэкапов, переноса директорий и упаковки проекта в один файл.

#Linux #CLI
🔥166👍5🤣1👻1
🦀 Rust всё глубже заходит в Linux — и это уже не эксперимент ради эксперимента.

Главная идея проста: Rust позволяет писать системный код с более сильными гарантиями безопасности памяти ещё на этапе компиляции.

Для ядра Linux это особенно важно, потому что огромный класс багов связан именно с:

- use-after-free;
- null pointer;
- гонками;
- ошибками работы с памятью;
- небезопасным управлением ресурсами.

Rust не заменит C завтра, но его роль в ядре будет расти там, где безопасность и поддерживаемость важнее абсолютной совместимости со старым кодом.

Будущее Linux выглядит не как «C против Rust», а как постепенное сосуществование двух языков внутри одного ядра.

Видео:
https://youtu.be/nEa6uGO9LEk

#Rust #Linux #Kernel #SystemsProgramming #OpenSource
👍186🔥2😐2🗿1
Согласны ?)
💊65👎24😁15🔥21👍1
🌳 Каждый Ethernet-коммутатор в мире до сих пор использует алгоритм, который Рада Перлман придумала в 1985 году.

Её разработка — Spanning Tree Protocol (STP) — решила одну из самых опасных проблем сетей: петли.

Если соединить коммутаторы в несколько путей, пакеты могут начать бесконечно ходить по кругу, создавая шторм и ломая всю сеть.

Перлман придумала способ превратить любую сложную топологию в дерево без циклов:

«Сначала выбирается корень. Затем каждый узел оставляет самый дешёвый путь к нему. Остальные связи блокируются».

Но самое необычное — её научная статья 1985 года начиналась не с обычной аннотации, а со стихотворения.

«I think that I shall never see
a graph more lovely than a tree…»

Это был не просто красивый текст. Стих буквально описывал работу алгоритма: выбор корневого узла, поиск кратчайших путей и построение бесциклового дерева.

Рада Перлман позже получила прозвище «мать интернета» за вклад в сетевые технологии.

Иногда самые важные алгоритмы в истории начинаются не с формул, а со стихов.
👍2816🔥2🗿1