linux.exex [GFYB]
158 subscribers
745 photos
86 videos
9 files
493 links
GFYB - go fuck yourself bitch. This Is team GFYB. goida
Download Telegram
Сколько можно страдать хуйней в терминале. Вы каждый день открываете консоль, дрочите cd, судорожно жмете Tab пятьсот раз, чтобы попасть в нужную папку, а потом пытаетесь вспомнить, какую команду вбивали во вторник, листая бесконечный стандартный Ctrl+R.

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

Что это такое для тех, кто сидел в бункере: fzf это интерактивный нечеткий поиск по вообще всему. Ты печатаешь пару букв с опечатками, вперемешку, как пьяный матрос, а он выдает ровно то, что тебе нужно. Ему плевать на точный порядок символов, он находит совпадения на лету.

Где он спасает жопу ежедневно:

1. Нормальный Ctrl+R. Стандартный поиск по истории в bash или zsh это убожество. С fzf нажатие Ctrl+R открывает интерактивный список, где ты видишь всю свою историю, ищешь по обрывкам давно забытых флагов и выбираешь нужную команду за полсекунды.

2. Поиск файлов без боли. Забудь про унылые простыни вывода. Натравил fzf на дерево каталогов, нажал пару клавиш и сразу открыл конфиг, исходник или какую-нибудь зарытую на двадцать уровней вглубь срань. С плагином bat он еще и покажет превью содержимого файла прямо в терминале с подсветкой синтаксиса.

3. Убийство процессов без геморроя. Вместо связки ps aux, грепа, вырезания PID через awk и последующего вызова kill, ты просто пишешь короткий алиас. Вылезает интерактивный список процессов, выбираешь зависший процесс стрелками или поиском по имени и прибиваешь его на месте.

4. Git без простыней логов. Переключение веток, чекаут, выбор коммита для черри-пика или интерактивного ребейза. Ты просто выбираешь хэш из интерактивного списка, а не копируешь его мышкой как офисный планктон.

Инструмент написан на Go, весит копейки, запускается моментально и жрет ноль ресурсов. Заводится везде: Linux, macOS, WSL. Интегрируется с vim, neovim, zsh, fish, tmux и вообще с любым шеллом.

Ставится одной командой через любой пакетный менеджер: pacman, apt, brew, dnf. Если ты до сих пор его не накатил, перестань насиловать клавиатуру и настрой нормальный поиск. Время, сэкономленное на тупом перепечатывании путей, окупит установку в первый же час работы.

Подпишись на создателей: https://t.me/linuxexex
Сегодня поговорим про самую отбитую и одновременно спасительную подсистему ядра, о которой вспоминают только тогда, когда сервер уже бьется в конвульсиях. Речь про OOM Killer, он же Out-Of-Memory Killer, он же штатный палач твоего линукса.

Чтобы понять, как эта херня работает, надо сначала врубиться в одну еврейскую хитрость ядра Linux под названием overcommit.

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

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

Вот тут из темноты с дробовиком выходит OOM Killer.

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

Как палач выбирает жертву? У него нет совести, но есть калькулятор. Для каждого процесса считается так называемый oom_score. Это циферка от 0 до 1000, отражающая, насколько процесс охуел:
1. Базовый фактор: сколько процентов реальной памяти сожрал процесс. Чем жирнее кабан, тем привлекательнее он для забоя.
2. Ручные настройки через oom_score_adj. Если ты админ и знаешь, что база данных должна жить любой ценой, ты можешь выставить ей минус тысячу, и киллер ее не тронет, даже если все вокруг сгорит.
3. Дополнительные коэффициенты: процессы от рута слегка прикрываются от расправы, короткоживущие процессы имеют другой вес, но в 99 процентах случаев палач тупо берет самый раздутый кусок софта.

Обычно первыми под нож ложатся вкладки хрома на десктопе или какая-нибудь ебучая джава с ее ненасытным хипом на сервере. База данных типа Postgres тоже любит ловить эту маслину, если кто-то криво настроил буферы.

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

Если тебе не нравится, что линукс ведет себя как отморозок с пушкой, overcommit можно отключить через vm.overcommit_memory равный двум. Тогда ядро перестанет обещать память, которой нет, и процессы будут падать цивилизованно прямо в момент вызова malloc с ошибкой нехватки памяти. Но тогда половина твоего софта вообще перестанет запускаться, потому что современные разработчики разучились проверять ошибки выделения памяти.

Так что OOM Killer это не баг, а единственный способ выжить в мире, где софт пишут криворукие оптимизаторы, жрущие гигабайты под вывод пары строчек текста.

Подпишись на создателей: https://t.me/linuxexex
Ебать
В 1991 году Линус Торвальдс вовсе не планировал называть операционную систему своим именем. Он считал название Linux слишком эгоистичным и претенциозным.

Изначально проект носил рабочее имя Freax. Торвальдс скомбинировал слова free (свободный), freak (странный, чудаковатый) и добавил букву X как дань уважения семейству Unix. Под этим названием код развивался первые месяцы на его личном компьютере.

Когда проект дорос до публичного релиза, файлы потребовалось выложить на FTP-сервер Хельсинкского технологического университета (ftp.funet.fi). Занимался этим системный администратор университета Ари Леммке.

Леммке посчитал название Freax нелепым и откровенно неудачным для серьезного программного обеспечения. Не спросив Торвальдса, он создал на сервере директорию pub/OS/Linux и разместил исходники именно там. Линус спорить не стал, решив не тратить время на переименование каталога обратно, а скачивавшие код энтузиасты моментально закрепили за системой имя создателя.

Если бы не самоуправство финского сисадмина, современные серверы и дистрибутивы сегодня носили бы имена вроде Debian Freax, Arch Freax и Red Hat Enterprise Freax.

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

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

Ubuntu.
Вы вводите команду установки, но оказывается, что нужная утилита теперь распространяется исключительно через Snap. Пакет стартует медленно, изолирован от половины системы, а при попытке подключить PPA-репозиторий вы рискуете сломать зависимости при следующем крупном обновлении релиза. Для новичка это кажется простым решением, но со временем система обрастает костылями.

Arch Linux.
Здесь нужный пакет уже собран и лежит либо в основном репозитории, либо в AUR. Вы ставите его одной командой pacman или yay. Все работает быстро и нативно. Обратная сторона медали: если вы не заглянули на сайт проекта перед обновлением ядра и системных библиотек, очередной запуск системы может потребовать ручной правки конфигов через chroot с загрузочной флешки.

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

Fedora.
Компромисс между стабильностью и свежестью. Свежее ядро, актуальные пакеты каждые полгода. Однако поддержка проприетарных драйверов и кодеков по умолчанию отключена из-за лицензионных соображений разработчиков, поэтому первым делом приходится подключать сторонний RPM Fusion.

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

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

Horrible piece of shit with god awful UX
The moment you try to use federation it lags so hard your session locks up for HOURS

Источник (4chan /g/): https://boards.4chan.org/g/thread/109902931

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

1. Магия двух восклицательных знаков.
Запустили тяжелую команду или полезли править конфиг в /etc, а система выдает Permission denied? Не надо нажимать стрелку вверх, листать в начало и дописывать sudo. Просто вводите:
sudo!!
Оболочка подставит последнюю выполненную команду целиком.

2. Быстрая вставка последнего аргумента.
Создали директорию через mkdir /long/path/to/project и теперь нужно туда перейти? Вместо копирования пути жмите:
cd Alt +.
Комбинация Alt и точки (или Esc, затем точка) автоматически вставляет последний аргумент предыдущей команды. Если нажать комбинацию несколько раз подряд, она будет листать аргументы из более ранних команд.

3. Поиск по истории без листания стрелками.
Чтобы мгновенно найти команду, которую вы запускали три дня назад, жмите Ctrl + R и начинайте вводить пару букв из нее. Терминал сам найдет совпадение. Нажатие Ctrl + R повторно переключает на следующее совпадение назад во времени. Чтобы прервать поиск, нажмите Ctrl + G, чтобы сразу выполнить найденное — Enter, а чтобы отредактировать — любую стрелку.

4. Мгновенная очистка строки.
Напечатали длинную команду, но передумали ее запускать? Не зажимайте Backspace. Нажмите Ctrl + C, чтобы сбросить ввод, или Ctrl + U, чтобы вырезать все от курсора до начала строки.

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

Подпишись на создателей: https://t.me/linuxexex
я просто мак бук включил
даун не обтесаный
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