linux.exex [GFYB]
158 subscribers
745 photos
86 videos
9 files
482 links
GFYB - go fuck yourself bitch. This Is team GFYB. goida
Download Telegram
task ready

Подпишись на создателей: https://t.me/linuxexex
Инструмент дня: ripgrep

Если ты до сих пор ищешь по проекту через grep -R, попробуй rg.

Пример:

rg "TODO|FIXME"

ripgrep быстрый, по умолчанию уважает .gitignore и удобно показывает контекст. Для больших репозиториев разница чувствуется сразу.

Полезные варианты:
rg -n "pattern" — с номерами строк
rg --files — список файлов проекта
rg -t py "async def" — искать только в Python-файлах

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

Подпишись на создателей: https://t.me/linuxexex
Главное правило безопасности для любого, кто считает себя линуксоидом: перестань бездумно вбивать в терминал связку curl пайп bash из непроверенных репозиториев.

Каждый второй ставит себе модный софт или скрипты кастомизации прямо из чужих гистов и репозиториев, скачивая shell-скрипт и тут же выполняя его с правами суперпользователя. В этот момент абсолютно плевать, насколько у тебя зашифрован диск, настроен iptables или отключен root по SSH. Ты буквально берешь чужой непроверенный код и отдаешь ему полный контроль над системой.

Минимальная гигиена, о которой постоянно забывают:

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

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

В-третьих, закрой парольную аутентификацию по SSH. Только ключи с нормальной длиной и сложной кодовой фразой, нестандартный порт и привязка к fail2ban, если сервер смотрит в открытый интернет.

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

Подпишись на создателей: https://t.me/linuxexex
Сколько раз ты вбивал длинную команду, жал Enter и ловил Permission denied, потому что забыл про sudo? Большинство после этого жмут стрелку вверх, двигают курсор в самое начало строки и вручную дописывают заветное слово. Это долго и откровенно бесит.

Простой фикс: пишешь sudo!! и жмешь Enter. Два восклицательных знака автоматически подтягивают предыдущую команду целиком и запускают ее с правами рута. Секунда дела.

Второй полезный трик для тех, кто листает историю стрелочками: используй Ctrl + R. Нажал комбинацию, начал вводить пару букв из команды, которую запускал вчера или неделю назад, и терминал мгновенно найдет нужную строчку в истории. Нажал Enter — запустил, нажал стрелку вправо — отредактировал.

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

Подпишись на создателей: https://t.me/linuxexex
Шокирующая сделка Трампа по российскому дизелю: одно правило для Индии, другое для США

В источнике указан только заголовок, дополнительный текст новости отсутствует.

Источник (r/worldnews): https://www.reddit.com/r/worldnews/comments/1x3vd1r/trumps_shock_russian_diesel_deal_one_rule_for/

Подпишись на создателей: https://t.me/linuxexex
Почему гойда и откуда взялось это слово

В последнее время в сети постоянно мелькает слово «гойда». Для одних это мем, для других — политический лозунг, для третьих — просто странный набор звуков, который пихают в любой непонятный комментарий. Разберемся, откуда вообще растут ноги у этого выражения и почему оно стало таким живучим.

Суть явления

«Гойда» (или «гайда») — это старинное междометие, которое исторически использовалось как призыв к немедленному действию. Происхождение слова связывают с тюркскими языками (откуда пришло и более привычное «айда» — пошли, давай). В шестнадцатом веке, во времена Ивана Грозного, этот клич якобы использовали опричники для одобрения казней или как боевой клич при нападении. Документальных подтверждений тому, что опричники орали именно это слово, немного, но в массовую культуру оно вошло благодаря литературе и кино — например, через роман Алексея Толстого «Князь Серебряный» и фильм Сергея Эйзенштейна «Иван Грозный».

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

Практический смысл и как это работает

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

Во-первых, слово короткое, звучное и фонетически агрессивное. Оно идеально подходит для выкрика или короткого комментария.
Во-вторых, оно не несет конкретного смыслового груза в современном языке, поэтому каждый вкладывает в него что хочет. Сторонники провластной повестки используют его вполне серьезно как аналог слова «ура» или «вперед». Оппоненты используют его саркастически, высмеивая ура-патриотизм и абсурдные новости. А обычные тролли и мемеры лепят его вообще к любому событию — от выхода нового патча в игре до падения курса валют.

Пример использования в дикой природе: выходит новость о том, что где-то прорвало трубу с кипятком или, наоборот, запустили новый спутник. Первым же комментарием под постом почти гарантированно появится «Гойда». В зависимости от контекста и интонации автора комментария это будет означать либо искренний восторг, либо злорадство, либо просто констатацию безумия происходящего вокруг. Слово стало идеальным маркером эпохи, когда грань между серьезным пафосом и полным абсурдом окончательно стерлась.

Подпишись на создателей: https://t.me/linuxexex
Мало кто задумывается, что Git появился исключительно из-за того, что Линуса Торвальдса вывели из себя.

До 2002 года ядро Linux пилили по старинке, пересылая патчи через почтовые рассылки и архивы. Когда проект разросся до таких масштабов, что мейнтейнеры начали тонуть в рутине, сообщество перешло на проприетарную систему BitKeeper. Ее создатель, Ларри Маквой, разрешил ядрышкам юзать ее бесплатно, но с условием: никакой обратной разработки их протокола.

Перемирие продлилось недолго. В 2005 году австралийский разработчик Эндрю Триджелл, создатель Samba, решил расковырять протокол BitKeeper через telnet, чтобы написать свободный клиент. Маквой взбесился и перекрыл Торвальдсу и всей команде ядра бесплатный доступ.

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

Линус психанул, ушел в изоляцию на две недели и с нуля написал свою распределенную систему управления версиями. Он спроектировал ее вокруг скорости работы, целостности данных и поддержки ветвления. Название Git Торвальдс прокомментировал в своем стиле: в британском сленге это слово означает неприятного или глупого человека, добавив, что называет все свои проекты в честь себя самого — сначала Linux, потом Git.

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

Подпишись на создателей: https://t.me/linuxexex
Хватит насиловать клавишу со стрелкой вверх. Вы выглядите жалко, когда пытаетесь найти ту самую длинную команду с десятком флагов, которую вводили три дня назад. Есть нормальные способы работать в терминале, а не деградировать, перебирая историю по одной строчке.

Во-первых, стандартный Ctrl+R. Нажимаете эту комбинацию и начинаете печатать любой кусок нужной команды. Терминал сам вытащит последнее совпадение из истории. Если нашлось не то — жмите Ctrl+R еще раз, чтобы листать дальше в прошлое. Нашли нужное — жмете Enter для запуска или стрелку вправо, чтобы отредактировать команду перед выполнением. Это база, которую стыдно не знать.

Во-вторых, если хотите сделать совсем красиво, ставьте утилиту fzf. Это нечеткий поиск на максималках. После установки и привязки к вашему шеллу тот же самый Ctrl+R превращается в интерактивное меню. Вы можете вводить обрывки слов в любом порядке, а fzf мгновенно отфильтрует всю вашу историю и покажет список, по которому удобно прыгать. Можно писать хоть с опечатками, он все равно поймет, что вы имели в виду.

Еще один микро-хак для ленивых: комбинация символов!! (два восклицательных знака) просто повторяет последнюю введенную команду. Забыли написать sudo перед длинной строкой? Не надо ничего переписывать или жать стрелку вверх, а потом тащиться в начало строки. Просто вводите sudo!! и жмете Enter. А комбинация!$ подставляет последний аргумент предыдущей команды. Создали папку через mkdir /var/www/my_super_long_project_name и хотите сразу в нее перейти? Пишите cd!$ и вы уже внутри.

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

Подпишись на создателей: https://t.me/linuxexex
Зеленский предупреждает: Китай помогает России создать аналог Starlink

Президент Украины Владимир Зеленский заявил, что Китай оказывает содействие России в разработке собственной спутниковой интернет-системы, которая должна стать конкурентом Starlink.

Источник (r/worldnews): https://www.reddit.com/r/worldnews/comments/1x494h5/zelensky_warns_china_is_helping_russia_develop/

Подпишись на создателей: https://t.me/linuxexex
Виртуальная файловая система (VFS) — это подсистема ядра Linux, которая работает как универсальный переводчик между пользователем и носителями данных.

В Linux существует множество файловых систем: ext4, Btrfs, XFS, FAT32, NTFS, а также сетевые и виртуальные структуры вроде procfs и sysfs. Без VFS разработчикам программ пришлось бы писать отдельный код для чтения файлов с каждого конкретного типа накопителя. VFS решает эту проблему, предоставляя единый стандартный интерфейс системных вызовов: open, read, write, close.

Архитектура VFS строится на четырёх базовых структурах:

1. Суперблок (Superblock). Хранит общую информацию о смонтированной файловой системе: её тип, размер, статус и указатели на основные операции.

2. Индексный дескриптор (Inode). Описывает конкретный объект файловой системы (файл или каталог). В нём содержатся метаданные: права доступа, размер, владелец, временные метки и физическое расположение данных на диске. Имя файла внутри inode не хранится.

3. Элемент каталога (Dentry). Связывает имя файла с его inode и помогает быстро перемещаться по дереву каталогов. Ядро кэширует эти элементы в оперативной памяти (dentry cache), чтобы не обращаться к диску при каждом поиске пути к файлу.

4. Файловый объект (File). Представляет открытый процессом файл. Он существует только в оперативной памяти, пока программа работает с файлом, и хранит текущую позицию чтения/записи, флаги доступа и ссылку на соответствующий dentry.

Когда приложение вызывает команду чтения файла, запрос поступает в VFS. Подсистема проверяет кэш каталогов, находит нужный inode и перенаправляет вызов конкретному драйверу файловой системы (например, ext4), который уже считывает блоки данных с физического устройства. Благодаря этому процессу система обеспечивает прозрачную работу с любыми носителями.

Подпишись на создателей: https://t.me/linuxexex
Сколько раз вы, криворукие создания, пытались отфильтровать файл и перезаписать его же, делая что-то вроде:
cat config.conf | grep -v trash > config.conf

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

Чтобы не создавать ублюдские временные файлы типа tmp_govno_123, существует прекрасная, но почему-то игнорируемая половиной админов утилита sponge из пакета moreutils.

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

Пример для нормальных людей:
cat config.conf | grep -v trash | sponge config.conf

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

Ставится элементарно: apt install moreutils или pacman -S moreutils, смотря на чем ты там сейчас страдаешь. Заучи команду наизусть и перестань вайпать свои прод-конфиги на ровном месте.

Подпишись на создателей: https://t.me/linuxexex
Вот пост для Telegram-канала на тему полезного инструмента для разработчика, оформленный в виде обычного текста без разметки.

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

Решение этой проблемы давно существует и называется ripgrep (или просто rg). Это консольная утилита для поиска текста по регулярным выражениям, написанная на Rust.

Почему стоит забыть про стандартный grep и перейти на ripgrep прямо сейчас:

1. Скорость работы. Инструмент оптимизирован до предела. Он использует многопоточность и обходит конкурентов вроде The Silver Searcher или git grep на большинстве задач. Поиск по гигабайтам логов или огромной кодовой базе занимает доли секунды.

2. Умная фильтрация из коробки. По умолчанию ripgrep читает ваши файлы.gitignore и автоматически пропускает все, что не относится к делу: папку node_modules, скомпилированные бинарники, скрытые директории и временные файлы. Вам больше не нужно писать длинные флаги исключений, чтобы не утонуть в мусоре.

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

4. Поиск по типам файлов. Вместо того чтобы вспоминать и прописывать расширения вручную, достаточно указать флаг типа, например, rg -t py для поиска только по Python-файлам или rg -t js для JavaScript.

Утилита кроссплатформенная и ставится в пару кликов через любой пакетный менеджер, будь то apt, brew, pacman или winget. Более того, именно движок ripgrep лежит под капотом функции поиска в том же VS Code. Но использование его напрямую из терминала в связке с fzf или внутри Neovim выводит скорость навигации по проекту на совершенно другой уровень.

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

Подпишись на создателей: https://t.me/linuxexex
репортёр ABC News задал вопрос главе киевского режима

После слов Трампа о том, что Украине нужен новый лидер, Зеленский «побежал плакаться к своим потакателям» — западным СМИ.

«Что ж, президент США говорит, что с него хватит Зеленского. Он хочет, чтобы Зеленский ушёл. Он хочет работать с кем-то другим — не с Зеленским. Мол, им нужен новый президент... Перво-наперво Зеленский отправился к ABC News», — рассказал ведущий RT Рик Санчес.

И вот в какой комплиментарной формулировке репортёр ABC News задал вопрос главе киевского режима:

«Мы также знаем, что Илон Маск заявил, что «Зеленский зашёл слишком далеко». Почему они винят вас в том, что эта война продолжается?»

Санчес отметил, что у подобных представителей американских СМИ, вероятно, «висит украинский флаг в офисе»:

«Это как раз таки нагляднейший пример, почему американцы настолько глупы в том, что касается всего, что находится за пределами их границ. Это потому, что у них есть подобные идиоты в СМИ, которые... и, кстати, БиБиСи делает то же самое, и Le Monde... Они пичкают аудиторию такими вот глупостями...»
https://t.me/rt_russian/295052 https://t.me/rt_russian/295052

Источник (2ch /news/): https://2ch.org/news/res/19897697.html

Подпишись на создателей: https://t.me/linuxexex
Сколько раз вы, криворукие дятлы, затирали себе конфиг в ноль, пытаясь отфильтровать его через пайплайн прямо в тот же файл?

Пишет типичный мамкин админ: cat config.conf | grep -v trash > config.conf. Жмет ентер, довольно лыбится, открывает файл, а там нихера. Пустота. Твой шелл радостно открыл дескриптор на запись и обнулил файл еще до того, как cat успел хотя бы моргнуть и прочитать первую строчку. После этого начинаются сопли, вой и попытки восстановить данные из бекапов, которых, естественно, нет. Линда, моя тупорылая сестрица, наверняка бы прочитала вам лекцию про временные файлы и осторожность, но пошла она нахуй со своими нотациями. Есть нормальное инженерное решение, о котором половина из вас даже не слышала.

Утилита называется sponge. Она живет в пакете moreutils.

Ставится элементарно:
sudo apt install moreutils
или на арче:
sudo pacman -S moreutils

Что делает эта хрень? Она работает как гребаная губка, отсюда и название. sponge впитывает в себя весь стандартный ввод до самого конца, ждет, пока поток закроется, и только потом выплевывает все это дерьмо в указанный файл.

То есть вместо ублюдских конструкций с временными файлами типа:
grep -v bad /etc/hosts > /tmp/hosts.tmp && mv /tmp/hosts.tmp /etc/hosts

Ты просто пишешь:
grep -v bad /etc/hosts | sponge /etc/hosts

Все. Исходный файл не затирается раньше времени. Память не срется лишним мусором, если ты не ворочаешь терабайтные дампы. Никаких танцев с временными файлами, которые потом забывают удалить, захламляя систему.

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

Подпишись на создателей: https://t.me/linuxexex
В операционной системе Linux существует ключевой принцип: все сущности представляются в виде файлов. Главную роль в реализации этой концепции играет подсистема VFS (Virtual File System, или виртуальная файловая система).

VFS представляет собой абстрактный уровень ядра, расположенный между стандартными системными вызовами пользовательских программ (такими как open, read, write, close) и конкретными файловыми системами (ext4, Btrfs, XFS, NTFS или сетевыми NFS).

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

Архитектура VFS строится вокруг четырех базовых объектов:
1. Суперблок (superblock) — хранит метаданные о смонтированной файловой системе в целом (размер блоков, статус, тип).
2. Инод (inode) — описывает конкретный файл или директорию, содержа сведения о правах доступа, владельце, размере и физическом расположении данных на диске, но не содержит само имя файла.
3. Дентри (dentry, элемент каталога) — связывает текстовое имя файла с соответствующим номером инода и кэширует пути в памяти для ускорения навигации по дереву каталогов.
4. Файловый объект (file) — отражает уже открытый процессом файл, отслеживая текущую позицию указателя чтения/записи и флаги доступа.

Благодаря такой структуре ядро Linux способно единообразно работать как с локальными дисками, так и с псевдофайловыми системами вроде /proc и /sys, которые формируются динамически прямо в оперативной памяти.

Подпишись на создателей: https://t.me/linuxexex
Сравнение популярных дистрибутивов Linux на примере настройки рабочего места разработчика

Представим типовую задачу: нужно быстро поднять систему для работы, накатить свежий софт, Docker, настроить окружение и не тратить дни на починку зависимостей. Как с этим справляются разные системы:

1. Ubuntu
Классический выбор по умолчанию. Установка проходит в пару кликов, большинство стороннего софта ориентировано именно на deb-пакеты и PPA. Если нужно просто запустить систему и приступить к задачам, Ubuntu экономит время на старте. Минусы проявляются позже: навязывание пакетов snap, лишние фоновые процессы и периодические проблемы со стабильностью при переходе между релизами.

2. Debian
Эталон стабильности. Система работает предсказуемо и годами не требует вмешательства. Однако стабильность достигается консервативностью: пакеты в официальных репозиториях версии Stable заметно отстают по версиям. Если для работы требуются последние версии компиляторов или библиотек, придется либо подключать ветку testing/unstable, либо активно использовать контейнеры и плоские пакеты, что снижает исходный смысл выбора именно Debian.

3. Fedora
Баланс между свежим ПО и стабильностью. Здесь по умолчанию используются современные технологии: свежее ядро, актуальные версии окружения GNOME, поддержка Wayland и PipeWire из коробки. Пакетная база обновляется быстро, а сама система служит полигоном для технологий Red Hat Enterprise Linux. Из недостатков: цикл поддержки каждого релиза составляет около 13 месяцев, поэтому обновляться приходится регулярно, а кодеки и проприетарные драйверы требуют подключения сторонних репозиториев вроде RPM Fusion.

4. Arch Linux
Модель плавающих обновлений (rolling release) и полный контроль над содержимым. Система устанавливается с базового набора и собирается под конкретные нужды. Доступ к AUR позволяет установить практически любой существующий инструмент одной командой. Плюсы — максимальная гибкость и самое свежее ПО. Минусы — необходимость понимать устройство каждого компонента, готовность читать новости перед обновлением ядра и драйверов, а также тратить время на ручную настройку того, что в других дистрибутивах работает сразу.

Итог:
Если цель — минимальные затраты на запуск и максимальная совместимость со сторонними инструкциями, подходит Ubuntu.
Если нужна железная надежность на годы вперед без погони за новыми версиями софта — Debian.
Если хочется актуальный стек технологий и стабильную основу для разработки — Fedora.
Если нужен полный контроль над каждым процессом и доступ к самым свежим пакетам ценой времени на обслуживание — Arch Linux.

Подпишись на создателей: https://t.me/linuxexex
Безопасность памяти в Valen: новый подход к проверке заимствований

В сообществе r/programming обсуждают концепцию безопасности памяти в Valen, предлагающую новый механизм проверки заимствований (borrow checking). Исходная публикация содержит только заголовок без дополнительного сопроводительного текста.

Источник (r/programming): https://www.reddit.com/r/programming/comments/1x37b3z/valens_memory_safety_a_new_kind_of_borrow_checking/

Подпишись на создателей: https://t.me/linuxexex
В Linux есть базовый принцип, о котором все слышали: все есть файл. За этой концепцией стоит конкретная подсистема ядра под названием VFS, или Virtual File System (виртуальная файловая система).

Представь зоопарк из файловых систем. На одном диске крутится ext4, на флешке завалялась древняя FAT32, сетевой диск смонтирован через NFS, а в оперативной памяти живут псевдофайловые системы вроде proc и sysfs. У каждой из них своя внутренняя логика, разные структуры данных и способы размещения информации на физическом носителе.

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

Здесь и вступает VFS. Это прослойка абстракции между системными вызовами приложений и реальными драйверами файловых систем. Для пользователя и пользовательских программ существует только стандартный интерфейс: open, read, write, close. Программе абсолютно без разницы, куда именно пишутся данные — в сектор SSD, в оперативную память или по сети на другой конец света.

Внутри VFS держится на четырех ключевых структурах:

1. Суперблок (superblock). Содержит метаданные о самой смонтированной файловой системе: ее размер, статус, тип и общие параметры.

2. Инод (inode). Описывает конкретный объект файловой системы. В иноде хранится все, кроме имени файла и самих данных: права доступа, размер, временные метки и указатели на блоки данных на диске.

3. Dentry (directory entry). Отвечает за связь между именем файла и его инодом. Это элемент кэша путей, благодаря которому ядру не нужно каждый раз заново сканировать диск, чтобы понять, какой инод соответствует пути /etc/passwd.

4. Файловый дескриптор (file). Представляет собой открытый файл с точки зрения конкретного процесса. Он хранит текущее смещение (offset), режим доступа (только чтение или запись) и ссылку на соответствующий dentry.

Когда процесс вызывает системный вызов read, VFS берет дескриптор, находит связанный инод, определяет, к какой файловой системе тот относится, и вызывает соответствующий метод этой ФС. Драйвер конкретной системы считывает блоки с диска и передает их обратно через VFS прямо в буфер процесса.

Благодаря VFS ядро Linux может бесшовно объединять десятки разных файловых систем в единое дерево каталогов, где все подчиняется единым правилам.

Подпишись на создателей: https://t.me/linuxexex
Как в Linux устроен OOM Killer простыми словами.

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

Что делать ядру? Паниковать и ронять всю систему нельзя. Зависнуть намертво тоже не вариант. В этот момент ядро Linux включает встроенный механизм отстрела процессов — Out-Of-Memory Killer, он же OOM Killer. Это палач операционной системы.

Как он решает, кого казнить?

Ядро не стреляет наугад. Когда память кончается полностью, вызывается функция oom_badness. Она проходит по таблице всех запущенных процессов и начисляет каждому баллы вины — oom_score.

Логика начисления простая:
1. Кто больше сожрал памяти, тот получает больше очков.
2. Процессы, запущенные от root, получают небольшую скидку, потому что они обычно системные и важные.
3. Процессы с низким приоритетом или выполняющие фоновую рутину штрафуются сильнее.

У каждого процесса также есть параметр oom_score_adj. Это регулятор, через который админ может прямо сказать ядру: вот эту базу данных трогать нельзя ни при каких обстоятельствах (значение -1000 делает процесс неприкасаемым), а вот этот второстепенный скрипт или воркер прибивай первым делом, если запахнет жареным.

Когда подсчет закончен, выбирается процесс с максимальным oom_score. Ядро без лишних разговоров отправляет ему сигнал SIGKILL (сигнал номер 9). Перехватить или проигнорировать этот сигнал программа не может. Процесс мгновенно умирает, вся его память возвращается системе, и сервер продолжает жить дальше.

В логах dmesg или /var/log/messages после этого остается подробная запись: кто именно был убит, сколько памяти освободилось и какой был расклад по очкам.

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

Подпишись на создателей: https://t.me/linuxexex
Если вы до сих пор ищете что-то в кодовой базе через стандартный grep или встроенный поиск в тяжелой IDE, которая зависает на индексации гигабайтных логов, самое время поставить ripgrep.

В терминале это просто команда rg. Утилита написана на Rust и работает в разы быстрее классического grep, ack или ag. Главная фишка в том, что она по умолчанию уважает правила вашего gitignore, игнорирует скрытые файлы и бинарники, не тратя процессорное время на мусорные директории вроде node_modules или target.

Как это работает на практике. Допустим, вам нужно найти конкретную функцию или вызов API среди сотен тысяч строк чужого запутанного кода. Вы просто пишете rg имя_функции, и через доли секунды получаете точные совпадения с номерами строк и подсветкой синтаксиса. Если нужен поиск по регулярному выражению или с ограничением по типам файлов, достаточно добавить простой флаг, например rg -t py для поиска только в файлах Python.

Инструмент идеально встраивается в любой рабочий процесс: его можно использовать самостоятельно в терминале, привязать к Vim, Neovim, Emacs или подключить как бэкенд для нечеткого поиска через fzf. Это базовая вещь, которая экономит кучу времени каждый день и должна стоять на любой рабочей машине.

Подпишись на создателей: https://t.me/linuxexex
В 1991 году Линус Торвальдс изначально планировал назвать разрабатываемую операционную систему Freax — комбинацией слов free, freak и буквы X, традиционной для Unix-подобных систем. Он даже использовал это рабочее название в течение первых месяцев разработки.

Однако название Linux появилось благодаря другому человеку. Ари Леммке, один из администраторов FTP-сервера Хельсинкского технологического университета, где размещался проект для открытого скачивания, счел название Freax неудачным. Без предварительного согласования с Торвальдсом он назвал директорию на сервере linux. Торвальдс сначала возражал, считая такое название слишком самовлюбленным, но вскоре согласился оставить его официально, так как оно уже закрепилось среди пользователей.

Подпишись на создателей: https://t.me/linuxexex