Linux Academy
28.2K subscribers
714 photos
88 videos
5 files
594 links
Download Telegram
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.

Он внутри ядра.
13👍6😍1🐳1
⚡️ 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
42👌65😡1
Rocky Linux ввёл в строй репозиторий для оперативного устранения уязвимостей

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

Подробнее:
https://opennet.ru/65457/
https://opennet.me/65457/
👍14🔥71
40👍6🗿6🤣1
🔥 Linux-трюк: найдите, какой процесс жрёт диск прямо сейчас

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

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


sudo iotop -oPa


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

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

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

/var/log/app.log (deleted)

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

Что делать:

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

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

Полезно после ротации логов, падений приложений, runaway-контейнеров и ситуаций, когда df -h показывает забитый диск, а du -sh /* ничего подозрительного не находит.
👍126😁1
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
8👍6
⚡️ Деннис Ритчи и Стив Джобс умерли в одном месяце: одного оплакивал весь мир, второго почти не заметили

Об этом факте регулярно вспоминают в сообществе разработчиков, но и сейчас он продолжает бить в больную точку. Стив Джобс и Деннис Ритчи ушли в одном и том же месяце одного и того же года, в октябре 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 были бы просто красивыми пресс-папье.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8532💯19😢6👏4👨‍💻1
🖥 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.
Please open Telegram to view this post
VIEW IN TELEGRAM
19👍15🔥6
Релиз 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/
👍94🙈2
Как он создал Linux без OPUS 4.8 ??

Есть идеи?)
🔥35🤣309👍5
В C код может выполниться ещё до `main()`

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

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

__attribute__((constructor))

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

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

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

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

Иногда до него уже кто-то успел поработать.
16🔥9🤣2👍1👏1
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 - один из тех инструментов, которые превращают «оно зависло» в нормальный технический диагноз.
👍3511
В 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
🔥3515👏4
😁71👎17🥴143💯2
В России могут ввести доступ к интернет-сервисам по паспорту.

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

Формально речь идёт о защите несовершеннолетних, но по факту такая система может стать первым шагом к более жёсткой идентификации пользователей в интернете.
🙈37🤣16🤬9👻9🗿8👍5🌚2👾21
⚙️ ASMLings - подробный гайд на русском

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

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

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

https://github.com/justxor/-ASMLingsru/
👍128🔥2
А вы знали, что Linux тоже можно забэкдорить?

Многие считают Linux почти неуязвимым. Но это не так.

В 2024 году злоумышленник почти 2 года тихо встраивал бэкдор в XZ Utils - базовую библиотеку сжатия, которая есть почти во всех крупных Linux-дистрибутивах.

Целью был sshd. При наличии правильного ключа шифрования можно было внедрять код через SSH-сертификаты входа. Тихо, без алертов, внешне всё выглядело полностью легитимно.

Один разработчик заметил проблему только потому, что sshd стал запускаться примерно на 500 мс медленнее обычного.

Именно из-за этого бэкдор не успел попасть в production-системы по всему миру.

Linux не неуязвим. Просто долгое время он не был главной целью. Теперь это меняется.
😁20🔥12👍9💊42
⚡️ Linux Roadmap: подробный практический курс от нуля до уверенного администратора

Это пошаговый маршрут изучения Linux с упором на практику. Каждый раздел содержит объяснение «почему это устроено именно так», разбор команд и обязательные задания, которые нужно выполнить руками в терминале. Чтение без повторения навыка не даёт — держите терминал открытым рядом с этим текстом.

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

https://github.com/justxor/linuxfullroadmap/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥65🗿1
Линус Торвальдс мог быть богаче Илона Маска. Но он выбрал другой путь.

В 2005 году его команда внезапно потеряла доступ к инструменту, с помощью которого управляла кодом Linux. Один разработчик сделал реверс-инжиниринг этой системы, и компания, которой она принадлежала, просто отключила проект без предупреждения.

Тысячи разработчиков. Никакого нормального способа совместной работы. Никакого запасного плана.

Торвальдс не стал паниковать. Он сел и написал собственную систему контроля версий с нуля.

За 10 дней.

Он назвал её Git. Уже в первый день Git отслеживал собственный исходный код. Через несколько недель на нём управлялся весь проект Linux. К концу 2005 года официально вышел Git 1.0.

А потом Линус просто отдал его бесплатно. Open source. Без компании. Без патентов. Без монетизации.

Через несколько месяцев он передал проект другим людям и вернулся к Linux, будто ничего особенного не произошло.

Зато другие быстро поняли, что он оставил на столе.

На Git вырос GitHub: 100 млн разработчиков, покупка Microsoft в 2018 году за $7,5 млрд. GitLab вышел на биржу в 2021 году с оценкой почти $12 млрд. Сегодня Git контролирует больше 85% рынка систем контроля версий.

Каждое приложение в вашем телефоне. Каждый сайт, который вы открываете. Почти всё это создаётся с помощью Git.

Торвальдс не заработал на этом $0.

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

А потом отдал его бесплатно, потому что считал: такой инструмент должен быть доступен всем.

И он ни разу публично не сказал, что жалеет об этом.
👍5827🔥14