linuxacademiya | Unsorted

Telegram-канал linuxacademiya - Linux Academy

28352

Admin - @workakkk РКН: clck.ru/3FmvFv

Subscribe to a channel

Linux Academy

⚙️ ASMLings - подробный гайд на русском

ASMLings - это набор из ~32 коротких упражнений на ассемблере Intel 8086, выстроенных по возрастанию сложности: от mov ax, 0x1337 до 32-битного сложения через carry flag, циклов, подпрограмм, работы с памятью и стеком.

Полный русскоязычный гайд по asmlings — интерактивной песочнице для изучения ассемблера Intel 8086, в которой 16-битный x86-эмулятор написан на Rust.

Внутри: что это, как устроено под капотом, как установить, как читать и решать упражнения, разборы реальных задач из репозитория, готовые примеры в examples/ и шпаргалки.

https://github.com/justxor/-ASMLingsru/

Читать полностью…

Linux Academy

👣 На Stepik обновили курс «Rust: полный курс разработчика. С нуля до профи»

Представьте: через три месяца вы открываете чужой Rust-код и читаете его как книгу.

Arc<Mutex<T>> не вызывает панику. impl Future не пугает. Вы точно знаете, почему компилятор ругается и как это починить за 10 секунд.

Это не фантазия. Это результат 50 уроков, в которых каждая концепция объясняется через код и закрепляется практикой.

Ownership, traits, generics, async, unsafe - всё, что казалось магией, станет рабочим инструментом.

А бонусом - портфолио проектов: от CLI-утилит до REST API и WebAssembly.

Вы и так знаете, что Rust - ваш следующий язык. Этот курс просто сделает это реальностью.

Сегодня - 55% процентов от цены, торопись: https://stepik.org/a/269250/

Читать полностью…

Linux Academy

Linux tip: когда процесс завис, не убивайте его вслепую

Если процесс завис, не обязательно сразу делать kill -9 и гадать, что там произошло.

Можно подключиться к нему через strace и посмотреть в реальном времени, на каком системном вызове он застрял.

Команда:


strace -p <PID> -e trace=read,write,open


Что это даёт:

видно, читает ли процесс данные
видно, пишет ли он куда-то
видно, какие файлы открывает
можно понять, ждёт ли он stdin, файл, сокет или pipe
не нужно менять код
не нужно перезапускать сервис

Например, если программа «висит», strace может показать, что она просто ждёт read() из file descriptor. То есть проблема не в CPU, не в deadlock и не в магии Linux, а в том, что процесс ждёт ввод.

Это особенно полезно в проде, когда нельзя просто взять и перезапустить сервис ради эксперимента.

Базовый сценарий:


pidof my_process
sudo strace -p <PID> -e trace=read,write


И дальше вы видите, чем процесс реально занят.

strace - один из тех инструментов, которые превращают «оно зависло» в нормальный технический диагноз.

Читать полностью…

Linux Academy

Как он создал Linux без OPUS 4.8 ??

Есть идеи?)

Читать полностью…

Linux Academy

🖥 Linux под капотом: как mknod превращает железо в файлы и почему это магия номер 133

Принцип "всё есть файл" в Linux часто звучит как маркетинговый слоган, хотя на самом деле это базовое инженерное решение, на котором держится вся система. Жёсткий диск /dev/sda, терминал /dev/tty и даже мышка открываются и читаются точно так же, как обычный текстовый файл. Возникает закономерный вопрос: каким образом физическая железка вообще оказывается в файловой системе?

Вся магия упирается в один привилегированный системный вызов: mknod. На архитектуре x86_64 у него номер 133. Именно он создаёт специальный узел в файловой системе, и именно через него ядро понимает, какой драйвер должен обработать обращение к этому пути.

В отличие от обычного файла, при вызове mknod никто не выделяет блоки на диске. Вместо хранения данных создаётся связка пути с парой чисел: major и minor. Major-номер указывает ядру на конкретный драйвер, а minor-номер уточняет конкретное устройство внутри этого драйвера. Считайте их координатами, по которым ядро бьёт в нужную точку без поиска.

Именно поэтому команда cat /dev/urandom не читает никаких байт с накопителя. Файловая система видит специальный узел, перенаправляет запрос в генератор случайных чисел ядра, и вы получаете бесконечный поток энтропии. На диске при этом не лежит ровным счётом ничего.

Поскольку создание такого узла фактически даёт прямой доступ к драйверу ядра, вызов требует capability CAP_MKNOD. Без прав процесс получит EPERM и быстро поймёт, что раздавать доступ к железу от имени обычного пользователя ядро не собирается. Это дополнительный барьер безопасности поверх обычных прав на файлы.

Ниже пример на C, который полностью клонирует /dev/null. Major-номер 1 в ядре зарезервирован под memory devices, а minor-номер 3 указывает именно на null. Запускать нужно от root.


#include <sys/types.h>
#include <sys/stat.h>
#include <sys/sysmacros.h>
#include <stdio.h>

int main(void) {
// 1 = major number for memory devices
// 3 = minor number for the null device
dev_t dev = makedev(1, 3);

// S_IFCHR creates a character device file
if (mknod("my_null", S_IFCHR | 0666, dev) == -1) {
perror("mknod failed (try running with sudo)");
return 1;
}

printf("Successfully created my_null!\n");
return 0;
}


После компиляции и запуска появится файл my_null, который ведёт себя как исходный /dev/null. Любой вывод, перенаправленный в этот файл, попадёт в тот же самый null-драйвер ядра. Различий в поведении по сравнению с системным /dev/null не будет вообще.

Такой пример хорошо показывает, почему инженеры Unix в своё время свели работу с железом к файловым операциям. Вместо десятков разных API для дисков, терминалов и сети программист получает единый интерфейс read, write, open и close. А вся сложная матчасть по маршрутизации запросов прячется внутри mknod и пары major/minor.

Читать полностью…

Linux Academy

Rust-приложение, которое превращает скучный терминал в живой dashboard

Splashboard - это splash screen для терминала, написанный на Rust. Открываешь новый shell - и вместо пустого экрана видишь контекст по проекту.

Он может показывать Git-статус, состояние CI, открытые PR, contribution heatmap и даже фазу Луны. Да, зачем-то это тоже есть.

Главная фишка в DX: репозиторий сам может описать свой dashboard через один dashboard.toml. Заходишь в папку проекта через cd - и терминал сразу подхватывает нужный контекст без флагов, ручной настройки и лишней возни.

Под капотом Rust и ratatui, работает кроссплатформенно, пакет доступен на crates.io.

Вот так выглядит нормальный zero-overhead DX: не ещё одна тяжёлая панель в браузере, а быстрый TUI прямо там, где разработчик и так живёт - в терминале.


🔗 http://github.com/unhappychoice/splashboard

#Rust #RustLang #CLI #TerminalTools #OpenSource #DeveloperTools #TUI #Ratatui #Rustacean

Читать полностью…

Linux Academy

🔐 Стань этичным хакером - с нуля до Pro

Хочешь зарабатывать на поиске уязвимостей, а не бояться их? Этот курс проведёт тебя от первой команды в терминале до реальных техник пентеста.

Что внутри:
→ Разведка целей: nmap, curl, анализ заголовков
→ Криптография и разбор кода на практике
→ Эксплуатация уязвимостей и документирование находок
→ Только живые задачи - никакой воды
Без скучной теории. Только то, за что платят в bug bounty и на собеседованиях в InfoSec.

📈 От «что такое порт» — до отчёта пентестера за несколько недель.

👉 Записывайся на Stepik и начни взламывать легально уже сегодня.

Читать полностью…

Linux Academy

⚡️ 1Password поднял цену индивидуального плана до $47,88 в год.

LastPass Premium стоит $36 в год.
Dashlane Premium - $59,88 в год.

И все это за одну базовую задачу: хранить строки текста в зашифрованном хранилище.

На этом фоне KeePassXC выглядит почти как антидот.

Это open-source парольный менеджер, который не требует аккаунта, подписки и доверия к очередному облачному сервису. Ваши пароли хранятся в одном .kdbx файле, который контролируете вы сами.

Что внутри:
- AES-256
- Argon2
- автозаполнение в браузерах
- TOTP/HOTP коды
- поддержка YubiKey и OnlyKey
- passkeys
- SSH agent для разработчиков
- Windows, macOS, Linux и BSD
- синхронизация через Dropbox, OneDrive, Nextcloud, Syncthing, флешку или что угодно

Главная магия в простоте: база паролей - это просто файл.

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

KeePassXC развивается с 2016 года, имеет почти 27 тысяч звезд на GitHub, сотни контрибьюторов и полностью открытую GPLv2-лицензию.

На фоне индустрии, где парольные менеджеры превращаются в еще одну подписку, KeePassXC напоминает старую добрую идею:

- ваши пароли
- ваш файл
- ваш контроль


https://github.com/keepassxreboot/keepassxc

Читать полностью…

Linux Academy

Ты читал десять статей про XSS и до сих пор не знаешь, почему один сайт ломается через <img onerror>, а другой нет.

Ты прошёл три курса по «основам безопасности» и не сможешь сейчас провести нмап своей сетки.
Ты решал CTF, но если спросят «как работает Kerberos», ты залипнешь.

Проблема не в тебе. Проблема в том, что безопасность преподают как теорию.

Этот курс делает наоборот. С первого урока ты ломаешь, чинишь, поднимаешь стенды, читаешь HTTP-сырьём, собираешь ROP-цепочки руками. SQLi, XSS, CSRF, SSRF, IDOR, обход аутентификации, переполнение буфера, атаки на AD, побег из K8s-пода, реверс мобильных приложений, сборка собственного C2.

20 блоков, реальные задания с кодом, финальный пентест с отчётом для портфолио. С нуля. До Pro.

Начать Учиться: https://stepik.org/a/279968/

Читать полностью…

Linux Academy

Linux умеет запускать программы в почти контейнерной изоляции вообще без Docker.

За это отвечает `unshare`.

Команда создает для процесса отдельные namespace: свой список процессов, свой mount-view, hostname, IPC, network и user namespace. В итоге программа видит не всю систему, а только ограниченный «кусок» окружения.

Пример:


sudo unshare --pid --fork --mount --uts --ipc --net --user --map-root-user --mount-proc bash


Внутри новой shell можно выполнить:


ps aux


И вместо сотен процессов увидеть почти пустую систему: bash с PID 1 и сам ps.

Это не Docker, не container runtime и не магия. Это базовый механизм ядра Linux, на котором контейнеры во многом и построены.

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

Читать полностью…

Linux Academy

Пересмотр решения о создании редакции Fedora AI Developer Desktop

Управляющий совет проекта Fedora (Fedora Council) отозвал ранее принятое решение о создании Fedora AI Developer Desktop - официальной редакции дистрибутива для разработчиков, использующих AI-инструменты. Изначально все 6 членов управляющего совета проголосовали за создание проекта, но после ознакомления с критикой, высказанной в ходе обсуждения в сообществе, через несколько дней два участника изменили свои голоса и высказались против. Так как единогласия не достигнуто, утверждение решения отложено. Вопрос планируют решить до проведения конференции Flock 2026, которая пройдёт с 14 по 16 июня.

Подробнее:
https://opennet.ru/65454/
https://opennet.me/65454/

Читать полностью…

Linux Academy

🐧 Быстрый Linux совет

Место на Диске снова «внезапно» закончилось? Начни с этой команды:

`du -h / --max-depth=1 2>/dev/null | sort -rh | head -10`

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

2>/dev/null просто скрывает ошибки доступа, чтобы вывод не превращался в кашу из permission denied.

На продакшн-серверах чаще всего раздуваются /var/log, /var/lib/docker, кэши пакетных менеджеров и временные файлы. Поэтому если место исчезло без причины, сначала смотри туда.

Одна команда - и уже понятно, где копать.

Читать полностью…

Linux Academy

FTXUI

Простая кроссплатформенная библиотека C++ для пользовательских интерфейсов на базе терминала!

• Функциональный стиль
• Простой и элегантный синтаксис
• Создаваемые консольные UI поддерживают навигацию с помощью клавиатуры и мыши
• Поддержка UTF8
• Поддержка анимации
• Поддержка рисования
• Нет зависимостей
• Кроссплатформенность: Linux/MacOS, WebAssembly, Windows


https://github.com/ArthurSonzogni/FTXUI

Читать полностью…

Linux Academy

Cамые нужные команд SSH

Запускай команды быстро
Чтобы выполнить всего одну удаленную команду, совсем не обязательно подключаться к SSH, вводить команду, а затем отключаться. Можно сделать это сразу. Например, так можно посмотреть заполненность ФС удаленной машины:
$ ssh user@host df -h
А так — перезагрузить ее:
$ ssh user@host sudo reboot

Составляй списки команд и запускай их разом
Если у тебя есть целый список команд, которые следует выполнить, их можно записать в файл и скормить этот файл SSH:
$ ssh user@host "`cat file.txt`"

Редактируй удаленные файлы локальным редактором
Чтобы отредактировать файл на удаленной машине, не требуется заходить на нее и использовать консольный редактор. На самом деле файл можно открыть в твоем любимом текстовом редакторе на локальной машине (gvim заменяем на свой редактор):
$ gvim scp://user@host//путь/к/файлу

Копируй содержимое удаленного файла в буфер обмена
Если необходимо скопировать содержимое удаленного файла или вывод команды в буфер обмена, не обязательно выводить его на экран или открывать в текстовом редакторе и копировать вручную. Можно использовать следующую команду:
$ ssh user@host cat /путь/к/файлу | xclip
А так можно скопировать вывод команды:
$ ssh user@host uname -a | xclip

Сравнивай удаленный и локальный файл без копирования
Похожий прием можно использовать для сравнения двух файлов:
$ ssh user@host cat /путь/к/удаленному/файлу | diff /путь/к/лoкальному/файлу -

Работай с удаленными файлами с помощью локального файлового менеджера
Не всегда удобно работать с большим количеством файлов с помощью консольных команд или mc, запущенного на удаленной машине. Но всегда можно подключить любой каталог удаленной машины как сетевой диск. Для этого достаточно установить sshfs:
$ sudo apt-get install sshfs
Создать каталог для подключения «сетевого диска»:
$ mkdir remote_files
И подключить его:
$ sshfs user@host:/home/user ~/remote_files/
Теперь все файлы удаленного каталога /home/user будут видны в каталоге ~/remote_files/ и с ними можно работать, как с обычными.

Копируй ключи быстро
Хоть и копирование публичного ключа на удаленный сервер — задача простая, но она требует выполнения нескольких действий вручную. Если тебя это напpягает, скопировать ключ можно в автоматическом режиме:
$ ssh-copy-id user@host
При этом не обязательно копировать основной ключ, с помощью флага -i можно указать любой другой:
$ ssh-copy-id -i ~/my_key.pub user@host

Создай постоянное соединение с машиной
Если в течение дня ты часто подключаешься к одной машине, в том числе на несколько минут или секунд (чтобы просто запустить одну команду, например), есть смысл создать с ней постоянное соединение. Твой комп будет держать соединение открытым и использовать его для каждого подключения к машине. Это намного быстрее и экономичнее с точки зрения трафика и нагрузки на процессор.
Добавь следующие строки в ~/.ssh/config:
Host host
ControlPath ~/.ssh/master-%r@%h:%p
ControlMaster no

А затем создай соединение:
$ ssh -MNf user@host

Читать полностью…

Linux Academy

👉 Linux - strace: один из самых недооценённых инструментов

Он нужен в тот момент, когда приложение падает, не видит конфиг, не может найти библиотеку или ругается на файл, которого “вроде бы нет”.

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

Но strace позволяет не гадать.

Он показывает, к каким файлам процесс реально обращается во время работы. Не то, что написано в документации. Не то, что вы предполагаете. А то, что программа делает на самом деле.

И вот тут часто всё становится очевидно: приложение ищет config не в той директории, лезет за библиотекой по старому пути, не может открыть сертификат или получает отказ из-за прав доступа.

Это особенно полезно при отладке сервисов, Docker-контейнеров, странных production-багов и бинарников, у которых нет нормальных логов.

Главная идея простая: когда Linux-программа ведёт себя непонятно, сначала посмотри её системные вызовы.

https://www.youtube.com/shorts/iRnNQWKozSA

Читать полностью…

Linux Academy

В России могут ввести доступ к интернет-сервисам по паспорту.

Минцифры обсуждает систему подтверждения возраста пользователей в сети. По словам главы ведомства, в ближайшее время власти займутся механизмом, который позволит сайтам и онлайн-сервисам проверять, сколько лет человеку.

Формально речь идёт о защите несовершеннолетних, но по факту такая система может стать первым шагом к более жёсткой идентификации пользователей в интернете.

Читать полностью…

Linux Academy

В MIT учат операционным системам так: дают живое ядро Unix и просят его сломать
В большинстве вузов операционные системы изучают по слайдам.


Студент слушает про процессы, виртуальную память и планировщик, рисует схемы на экзамене и в итоге так и не видит, как это работает внутри. В MIT пошли другим путём. Там студенту выдают полностью рабочее ядро в духе Unix и предлагают самому в нём ковыряться, ломать и переписывать.

Это ядро называется xv6. По сути это переосмысление шестой версии Unix 1975 года, переписанное на современном C под многопроцессорные системы RISC-V. Оригинальный Unix V6 был отличным учебным материалом, но устарел и опирался на железо, которого давно нет. xv6 сохраняет идеи оригинала, но запускается на современной архитектуре и читается куда легче.

Главное, что подкупает, это размер. Всё ядро занимает около шести тысяч строк. Это объём, который реально прочитать целиком за разумное время, а не абстрактная гора кода, в которой теряешься на первой неделе. Здесь на месте процессы, системные вызовы, виртуальная память, файловые дескрипторы, каналы и планировщик. Всё это можно открыть, прочитать и тут же поэкспериментировать.

Хорошо видно это на примере каналов. Реализация чтения из pipe в файле kernel/pipe.c укладывается примерно в пятнадцать строк. Если канал пуст, читатель засыпает и ждёт. Как только писатель добавляет данные, читателя будят. Блокировка, засыпание и пробуждение согласованы всего в паре десятков строк, и этот кусок кода объясняет про синхронизацию больше, чем целая лекция про мьютексы и условные переменные.

Именно так и стоит разбираться в операционных системах, когда хочешь понять, как они работают на самом деле, а не как это описывают на высоком уровне. Отличная новость в том, что всё это выложено в открытый доступ и бесплатно. Книга и исходники лежат на сайте курса MIT 6.828, и любой желающий может пройти тот же путь, что и студенты.

https://pdos.csail.mit.edu/6.828/2025/xv6/book-riscv-rev5.pdf

Читать полностью…

Linux Academy

В C код может выполниться ещё до `main()`

В Linux и GCC есть constructor-функции - они запускаются автоматически до входа в main().

Выглядит почти как магия:

__attribute__((constructor))

Такую функцию не нужно вызывать вручную. Компилятор сам пометит её как код, который должен выполниться при старте программы.

Где это используется:

- инициализация глобального состояния
- подготовка shared libraries
- регистрация плагинов
- настройка runtime-окружения
- выполнение служебного кода до основной логики

Именно поэтому в C-программе не всегда всё начинается с main().

Иногда до него уже кто-то успел поработать.

Читать полностью…

Linux Academy

Релиз AlmaLinux 9.8 и 10.2

Представлен релиз дистрибутива AlmaLinux 10.2, а также обновление прошлой ветки - AlmaLinux 9.8. Релизы синхронизированны c Red Hat Enterprise Linux 9.8 и 10.2, и содержат все предложенные в данных выпусках изменения. Установочные образы подготовлены для архитектур x86_64_v3, x86_64_v2, ARM64, ppc64le и s390x в форме загрузочного (1 ГБ), минимального (1.6 ГБ) и полного образа (10 ГБ). Позднее будут сформированы Live-сборки с GNOME, KDE, MATE и Xfce, а также образы для плат Raspberry Pi, контейнеров, WSL (Windows Subsystem for Linux) и облачных платформ.

Подробнее:
https://opennet.ru/65533/
https://opennet.me/65533/

Читать полностью…

Linux Academy

⚡️ Деннис Ритчи и Стив Джобс умерли в одном месяце: одного оплакивал весь мир, второго почти не заметили

Об этом факте регулярно вспоминают в сообществе разработчиков, но и сейчас он продолжает бить в больную точку. Стив Джобс и Деннис Ритчи ушли в одном и том же месяце одного и того же года, в октябре 2011. Их уход превратился в символ того, насколько по-разному мир относится к людям, которые формируют технологии.

Джобса оплакивали планетой, выпускали книги, сняли фильмы, именем назвали улицы. Он подарил iPhone, iPad, iPod и Macintosh, собрал вокруг Apple одну из самых дорогих компаний в истории. Денниса Ритчи провожали разве что в узком кругу и парой статей в блогах. Это был человек, который подарил нам язык C и вместе с Кеном Томпсоном Unix.

Дальше просто пройдёмся по цепочке. Без C нет Unix. Без Unix нет Linux, нет BSD, нет macOS и iOS. Без C не было бы Windows в его нынешнем виде, не было бы C++, Objective-C, Java, JavaScript в их привычном виде. Нет Chrome и Firefox, нет PostgreSQL и SQLite, нет Nginx, нет Photoshop, нет PlayStation и Xbox. Даже Python и PHP написаны на C.

При таком влиянии Ритчи оставался человеком, которого было сложно представить на сцене с черной водолазкой и в режиссёрском свете. Он работал в Bell Labs, носил бороду, избегал интервью и писал программы. Человек, без которого современный цифровой мир просто не выглядел бы так, как сейчас, провёл жизнь в тени своих собственных результатов.

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

Поэтому этот сюжет приятно иногда вытаскивать наружу. Не чтобы принижать Джобса, он действительно изменил потребительский рынок. Но чтобы напомнить, что рядом жил тихий инженер в свитере, без которого все эти коробочки от Apple были бы просто красивыми пресс-папье.

Читать полностью…

Linux Academy

🔥 Linux-трюк: найдите, какой процесс жрёт диск прямо сейчас

Когда сервер тормозит, top часто показывает CPU и RAM, но не отвечает на главный вопрос: кто прямо сейчас долбит диск.

Используйте:


sudo iotop -oPa


Что покажет команда:

• удалённые файлы, которые всё ещё открыты
• процесс, который их держит
PID
• размер файла
• путь до удалённого файла

Типичный кейс:

/var/log/app.log (deleted)

Файл уже удалён из директории, но пока процесс жив, место не освободится.

Что делать:

sudo systemctl restart имя_сервиса

или аккуратно завершить конкретный процесс по PID.

Полезно после ротации логов, падений приложений, runaway-контейнеров и ситуаций, когда df -h показывает забитый диск, а du -sh /* ничего подозрительного не находит.

Читать полностью…

Linux Academy

Rocky Linux ввёл в строй репозиторий для оперативного устранения уязвимостей

Разработчики дистрибутива Rocky Linux объявили о создании отдельного репозитория для внеплановой публикации срочных обновлений пакетов с устранением уязвимостей, не синхронизированного с репозиториями Red Hat Enterprise Linux. Отмечается, что проект Rocky Linux придерживается принципа максимально близкого соответствия пакетной базе RHEL, при этом возникающие последнее время угрозы безопасности вынуждают сделать исключение.

Подробнее:
https://opennet.ru/65457/
https://opennet.me/65457/

Читать полностью…

Linux Academy

Linux Совет: почему память занята, хотя free говорит, что RAM ещё есть

Если на сервере «куда-то пропала память», не всегда виновато приложение.

Часть RAM может сидеть в kernel slab cache - это память, которую ядро использует под свои внутренние объекты: dentries, inodes, сетевые буферы, структуры файловой системы и другие аллокации ядра.

Проверить это можно командой:


slabtop


Она показывает live-картину slab-памяти:

• какие kernel objects занимают больше всего RAM
• сколько объектов активно
• сколько памяти уходит на dentries и inodes
не растёт ли filesystem cache слишком агрессивно
нет ли признаков kernel memory leak

Это очень полезно в проде, когда free -h показывает, что память вроде бы доступна, но система ведёт себя странно.

Типовые случаи, где помогает slabtop:

внезапный рост inode cache
слишком много dentries после работы с миллионами файлов
утечки в kernel modules
• сетевые буферы съедают память
• файловый кэш выглядит нормально, но slab раздувается

Большинство админов при memory debugging смотрят только top, free, htop и процессы.

А иногда главный потребитель памяти вообще не userspace.

Он внутри ядра.

Читать полностью…

Linux Academy

На UNIX stdout - это просто файловый дескриптор 1.

И из-за этого можно поймать очень неприятный эффект: если закрыть stdout, следующий открытый файл может получить тот же дескриптор 1.

То есть код вроде этого:


close(1);
FILE *f = fopen("output.txt", "w");
printf("hello\n");


Может записать printf не в терминал, а прямо в output.txt.

Потому что система обычно выдаёт минимальный свободный файловый дескриптор. Закрыл 1 - значит он снова свободен. Открыл файл - он может стать новым stdout.

Мелочь, но именно из таких мелочей и состоит настоящее понимание UNIX.

Читать полностью…

Linux Academy

📁🧹 Умный файловый организатор для терминала

File Organizer — это современный инструмент CLI для автоматической организации файлов в папках. С интуитивно понятным интерфейсом TUI, он поддерживает более 170 форматов файлов, обеспечивает дублирование и интеллектуальную категоризацию.

🚀Основные моменты:
- Автоматическая категоризация по типу файлов
- Интерактивный TUI с живым предварительным просмотром
- Режим "сухого запуска" для безопасного тестирования
- Поддержка JSON для гибкой настройки правил
- Обнаружение дубликатов с реальным временем прогресса

📌 GitHub: https://github.com/SaschaKohler/file-organizer

#cpp

Читать полностью…

Linux Academy

👣 На Stepik обновили курс «Rust: полный курс разработчика. С нуля до профи»

Представьте: через три месяца вы открываете чужой Rust-код и читаете его как книгу.

Arc<Mutex<T>> не вызывает панику. impl Future не пугает. Вы точно знаете, почему компилятор ругается и как это починить за 10 секунд.

Это не фантазия. Это результат 50 уроков, в которых каждая концепция объясняется через код и закрепляется практикой.

Ownership, traits, generics, async, unsafe - всё, что казалось магией, станет рабочим инструментом.

А бонусом - портфолио проектов: от CLI-утилит до REST API и WebAssembly.

Вы и так знаете, что Rust - ваш следующий язык. Этот курс просто сделает это реальностью.

Сегодня - 55% процентов от цены, торопись: https://stepik.org/a/269250/

Читать полностью…

Linux Academy

Linux не станет свалкой AI-кода

Линус Торвальдс довольно ясно обозначил позицию: Linux не собираются превращать в мусорку для кода, который сгенерировали ИИ-инструменты и толком не проверили.

После долгих споров в сообществе появились официальные правила по использованию GitHub Copilot, Claude и других помощников при разработке ядра.

пользоваться ИИ можно. Протаскивать slop - нельзя.

Главная фраза всей истории: «За ошибки отвечают люди».

Хочешь писать с Copilot - пиши. Хочешь просить Claude помочь с патчем - проси. Но если код попадает в Linux kernel, ответственность лежит не на модели, не на тулзе и не на «оно само так сгенерировало».

Ответственность на тебе.

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

И это, пожалуй, самая взрослая позиция open source-сообщества по отношению к ИИ.

Linux строили больше 30 лет. Его не будут ломать ради экономии 20 минут на написании кода.

Читать полностью…

Linux Academy

🖥 На Stepik обновили курс «C# с нуля до профи»

Представьте: через четыре месяца вы открываете чужой .NET-проект и читаете его как книгу.

IServiceCollection не вызывает ступора. async Task<IActionResult> пишется на автомате. Вы точно знаете, почему EF Core сгенерировал именно такой SQL - и как переписать запрос, чтобы он летал.

Это не фантазия. Это результат после 16 модулей, в которых каждая концепция объясняется через код и закрепляется практикой.

ООП, SOLID, LINQ, async/await, DI, EF Core, ASP.NET Core, Docker, Kubernetes - всё, что казалось магией, станет рабочим инструментом.

А бонусом - портфолио проектов: от CLI-утилит и REST API до собственного SaaS с multi-tenancy, JWT и деплоем в Kubernetes под TLS.

Скидка - 58% доступна 48 часов: https://stepik.org/a/282984/

Читать полностью…

Linux Academy

🔥 Продвинутый Rust без учебных игрушек

Базу уже прошли? Тогда следующий шаг - production-разработка.

На Stepik идет скидка 60% на продвинутый курс по Rust для тех, кто хочет не просто знать синтаксис, а строить реальные системы.

Внутри: async, unsafe, gRPC, lock-free, observability, Kafka, NATS, axum, tower, CI/CD и канареечный деплой.

Финальный проект - production-ready feed-сервис от архитектуры до релиза.

21 модуль, 84 урока, 400+ проверочных шагов.

Если хотите перейти от маленьких Rust-утилит к коммерческой разработке, сейчас хороший момент зайти: https://stepik.org/a/285608/pay

Читать полностью…

Linux Academy

Если Linux-приложение падает и пишет что-то вроде “config not found”, не гадай, где оно ищет файл.

Используй strace.

Команда:

strace -f -e trace=file myapp 2>&1 | grep -E 'ENOENT|EACCES|openat|stat'

Она покажет, какие файлы программа реально пытается открыть.

Смотри на три вещи:

ENOENT - файл не найден

EACCES - нет прав

openat / stat - точный путь, куда программа полезла

Это особенно спасает, когда сервис не видит конфиг, бинарник не находит .so библиотеку или приложение ищет сокет и сертификат вообще не там, где ты думал.

А если процесс уже запущен:

sudo strace -f -e trace=file -p PID

Один из самых полезных приёмов для отладки Linux: не угадывать проблему, а посмотреть, что процесс делает на самом деле.

Читать полностью…
Subscribe to a channel