/usr/bin
4.98K subscribers
215 photos
1K links
Канал для пользователей и администраторов Linux-систем: управление, инфраструктура, технические детали, новости и прочее.

Реклама и цены: @gals_ad_bot
Вопросы: @antoniusfirst

@monitorim_it — канал о мониторинге ИТ
Download Telegram
📁 lf — быстрый файловый менеджер для терминала

lf расшифровывается как list files. Это минималистичный файловый менеджер на Go, ориентированный на управление с клавиатуры в стиле Vim.

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

Горячие клавиши, цвета и команды можно полностью настроить под себя, а недостающие функции — добавить с помощью обычных shell-команд. Клиент-серверная архитектура позволяет управлять несколькими запущенными экземплярами lf.

Работает в Linux, macOS, BSD и Windows. Особенно пригодится тем, кто проводит большую часть времени в терминале и предпочитает клавиатуру мыши.

Репыч на GitHub →

@usr_bin_linux
👍7🔥5❤2⚡1
🐧 Microsoft представила WSL 3.0 с поддержкой запуска Linux-контейнеров в Windows

Microsoft представила WSL 3.0: подсистема перешла на ядро Linux 6.18 и получила встроенный инструментарий WSL Containers для создания, сборки и запуска Linux-контейнеров.

Новая утилита wslc умеет управлять жизненным циклом контейнеров и образов, ограничивать потребление CPU и памяти, настраивать виртуальные сети и проброс портов, работать с VHD и предоставлять контейнерам доступ к GPU. Для автоматизации предусмотрен API для C++ и C#, а для разработки — интеграции с MSBuild, CMake, VS Code Dev Containers и Aspire.

Исходный код компонентов WSL опубликован на GitHub под лицензией MIT.

Читать подробности на Хабре →

@usr_bin_linux
🔥14👍4⚡2
Address already in use: как найти, кто занял порт, и почему он не всегда освобождается сразу

Сервис не запускается, потому что порт занят. Кажется, решение очевидно: найти PID и завершить процесс. Но иногда процесса уже нет, а порт всё ещё остаётся недоступен из-за состояния TIME_WAIT. В случае с Docker его может удерживать контейнер через docker-proxy.

В статье разбираются основные сценарии этой ошибки и способы диагностики в Linux, macOS и Windows: как найти владельца порта через ss, lsof, netstat или PowerShell, правильно остановить systemd-сервис либо контейнер и отличить живой процесс от TCP-соединения, ожидающего завершения.

Отдельная часть посвящена профилактике: SO_REUSEADDR, различиям его поведения в Linux и Windows, а также тому, почему его не следует путать с SO_REUSEPORT.

Читать дальше на Хабре →
👍6🔥4⚡3
⏱️ Почему Unix-время начинается с 1970 года и при чём здесь электрическая розетка

В первых версиях Unix время отсчитывалось не в секундах, а в шестидесятых долях секунды: системные часы PDP-11 получали импульсы от американской электросети с частотой 60 Гц. Такой 32-битный счётчик заканчивался всего за несколько лет, поэтому разработчики перешли на секунды и выбрали удобную точку отсчёта — 1 января 1970 года.

Но и это решение не вечно. 19 января 2038 года знаковый 32-битный счётчик переполнится и отправит уязвимые системы в декабрь 1901-го. Проблема касается не только старых компьютеров: она может скрываться в INT-полях баз данных, бинарных форматах, JavaScript-операциях, MySQL TIMESTAMP, файловых системах и прошивках устройств.

В статье — история Unix-времени, наглядные эксперименты с C, JavaScript и ext4, а также разбор того, где искать проблему 2038 года уже сейчас.

Читать дальше на Хабре →

@usr_bin_linux
🔥11👍3⚡1
🖥 NeoHtop — альтернатива htop с графическим интерфейсом

Кроссплатформенный системный монитор показывает процессы и загрузку CPU и памяти в реальном времени. Процессы можно сортировать, закреплять, завершать, а также фильтровать по имени, команде или PID — поддерживаются регулярные выражения и поиск сразу по нескольким условиям.

Утилита построена на Rust, Tauri и Svelte, работает в Linux, macOS и Windows, поддерживает светлую и тёмную темы. Для любителей терминала авторы также выпустили отдельный NeoHtop CLI с деревом процессов, графиками и фильтрами.

Репыч на Гитхаб

@usr_bin_linux
🔥9⚡3👍2
MinIO Is Deprecated: Best Alternatives for S3-Compatible Storage

Долгие годы MinIO считался стандартным выбором для развёртывания S3-совместимого хранилища в собственной инфраструктуре. После архивации upstream-репозитория и прекращения привычной модели лицензирования неплохо было бы задуматься о будущем своих инсталляций.

В статье разбираются три возможные альтернативы — Garage, RustFS и SeaweedFS — и объясняется, для каких архитектур и нагрузок подходит каждая из них.

Читать статью на Medium

@usr_bin_linux
🔥8👍2❤1
А что, если Kubernetes — это не готовая платформа, а только ядро?

В статье описан любопытный инженерный эксперимент: автор предлагает относиться к Kubernetes так же, как мы относимся к ядру Linux. Сам Kubernetes остаётся общей основой, а поверх него собираются специализированные дистрибутивы — для виртуализации, ИИ, промышленного оборудования, мониторинга или сетевых задач.

Чтобы проверить идею на практике, автор разработал kuberoot — аналог Buildroot для сборки дистрибутивов Kubernetes, а также пакетный менеджер kubepkg и репозиторий пакетов.

В результате получается единый загрузочный образ, включающий ядро Linux, минимальную неизменяемую ОС и Kubernetes. Без SSH, shell и привычного пакетного менеджера. Узлами, системными службами, дисками, обновлениями и резервными копиями можно управлять через Kubernetes API и kubectl. Обновления устанавливаются в неактивный слот, проверяются после перезагрузки и автоматически откатываются при проблемах.

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

Читать дальше на Хабре

@usr_bin_linux
🔥7⚡2❤2👍2
Когда один & ломает Ctrl+C

В статье разобран инженерный разбор ошибки, в которой Ctrl+C сначала выключал виртуальную машину, а после исправления перестал прерывать даже обычный sleep.

Автор прошел весь путь управляющего символа: хостовый терминал → Java → виртуальный UART → KVM → TTY-подсистема Linux → процесс. Виновником в итоге оказался не KVM и не обработка IRQ, а фоновый запуск BusyBox shell: процесс унаследовал игнорирование SIGINT.

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

Читать на Хабре

@usr_bin_linux
🔥8👍5⚡2
Как превратить Python-скрипт на VPS в нормальный сервис

nohup, screen и надежда на то, что скрипт никогда не упадёт, — не лучший вариант для эксплуатации. В этой статье рассказывается, как организовать запуск небольших Python-приложений средствами самого Linux — без Docker, Supervisor и отдельной системы мониторинга.

В статье разобраны:

🚀 запуск и автоматический перезапуск через systemd;

🚀 хранение секретов и ограничение прав процесса;

🚀 сбор и ротация логов с помощью journald;
уведомления о сбоях в Telegram вместе с фрагментом журнала;

🚀 запуск задач по расписанию через systemd timers вместо cron.

Читать на Хабре

@usr_bin_linux
🔥12👍4⚡2❤1
🎮 Чтиво на выходные: как Марио покорял ZX Spectrum

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

Статья рассказывает, как Марио пытался добраться до ZX Spectrum: от ранних портов Donkey Kong и Mario Bros. до клонов, отменённой The Great Giana Sisters и проектов отечественных энтузиастов. Попытки создать собственного Марио продолжались более 20 лет и породили немало любопытных игр.

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

Наливайте чай — впереди 22 минуты приятной ностальгии.

Как Марио ZX Spectrum покорял

@usr_bin_linux
🔥6👍3❤2
Имиджборда в терминале: возвращение к интернету без лент и алгоритмов

Автор создал Bord — открытую анонимную площадку, основной клиент которой работает прямо в терминале. Интерфейс напоминает Midnight Commander: слева расположены доски, справа — треды и сообщения. Поддерживаются клавиатура, мышь, поиск, цветовые темы и даже изображения.

За ретро-интерфейсом скрывается современная архитектура:

— клиент и сервер написаны на Go;

— TUI построен на Bubble Tea, Bubbles и Lip Gloss;

— HTTP используется как источник данных, а SSE — для уведомлений об изменениях;

— SQLite работает в режиме WAL;

— API описан через OpenAPI;

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

Проект для тех, кто скучает по форумам, IRC и старому интернету.

Читать статью на Хабре

Репыч на Гитхаб

@usr_bin_linux
🔥10👍3❤2
Как защитить Linux-сервер и не потерять к нему доступ в процессе настройки?

В репозитории How To Secure A Linux Server собраны способы базового усиления безопасности Linux. Также объясняются назначения настроек и возможные последствия их применения.

В руководстве разобраны:

🚀 защита SSH, вход по ключам и двухфакторная аутентификация;

🚀 ограничение доступа к sudo и su;

🚀 настройка межсетевого экрана UFW;

🚀 защита от атак с помощью Fail2Ban, CrowdSec и PSAD;

🚀 автоматическая установка обновлений безопасности;

🚀 аудит системы, контроль целостности файлов и поиск руткитов;

🚀 мониторинг открытых портов, журналов и подозрительной активности;
усиление параметров ядра Linux.

Есть и вариант автоматизации с помощью Ansible.

Репыч на Гитхаб

@usr_bin_linux
🔥14❤4⚡1👎1
Зачем нужен Ansible, если серверов всего два и есть SSH?

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

В статье на простом примере с двумя Ubuntu-серверами и Nginx показано:

— чем декларативное описание состояния отличается от набора SSH-команд;

— как устроены Control Node, Inventory и Playbook;

— почему Ansible не требует установки постоянного агента;

— как развернуть одинаковую конфигурацию сразу на нескольких серверах;

— что такое идемпотентность и почему повторный запуск Playbook не ломает уже настроенную систему.

Читать на Хабре

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

@usr_bin_linux
🔥6👍1
Kube API не отвечает, LoadBalancer не пропускает трафик, DNS не резолвит, исходящие запросы не уходят. Причина обычно кроется на стыке облачной сети и кластера, и найти её без понимания всей цепочки сложно.

3 ноября в 12:00 Роман Ерема, разработчик в команде Managed Kubernetes MWS Cloud Platform, на практике покажет:
⏺️как взаимодействуют сеть облака, CNI и сеть Kubernetes
⏺️как работают SNAT и Source IP
⏺️когда нужен externalTrafficPolicy: Local и почему при нём может не проходить health check
⏺️как диагностировать проблемы на реальных кейсах (live-demo)

Все участники получат чек-лист для проверки доступности.

Полезно инженерам, разработчикам и специалистам по сетям и облачной инфраструктуре.

🗓 3 ноября в 12:00

Регистрируйтесь по ссылке
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👎2
SSH-клиент — без Chromium и с собственным UI-движком

EvertySSH — open source SSH-клиент, написанный на Rust. Проект появился из желания собрать в одном приложении всё необходимое для повседневной работы с серверами:

— несколько SSH-сессий во вкладках и разделение экрана;

— сохранённые подключения и генерация ключей;

— история команд с привязкой к серверу и сессии;

— библиотека часто используемых сниппетов;

— восстановление рабочего контекста после сетевых ошибок;

— поддержка полноэкранных консольных приложений.

Вместо Chromium или WebView автор использует собственный интерфейсный движок EvertyUI, а терминальный экран реализует как отдельную машину состояний с поддержкой ANSI-последовательностей, курсора, цветов и альтернативного буфера.

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

Читать на Хабре

Репыч на Гитхаб

@usr_bin_linux
🔥5👍3⚡2❤1
Что делают боты, когда всё-таки подбирают пароль к SSH?

Автор развернул honeypot на базе Cowrie и замаскировал его под мощный сервер для обучения нейросетей: 128 ядер, терабайт памяти и четыре NVIDIA H100. Затем намеренно позволил автоматическим ботам подобрать пароль.

Всего за 12,5 часа ловушка получила 1846 подключений, 1524 команды и 219 попыток скачать файлы. После входа боты добавляли свои SSH-ключи, меняли пароль root, удаляли конкурирующие майнеры, закреплялись через cron и загружали вредоносное ПО.

Получился живой разбор автоматизированных атак на публичные серверы — от разведки до превращения взломанной машины в часть ботнета. В конце есть практический чек-лист по защите SSH и поиску следов компрометации.

Читать на Хабре

@usr_bin_linux
👍8🔥8⚡1👎1
Ubuntu готовится к большим переменам

Вышла Ubuntu 26.10 Stonking Stingray, и это обновление интересно не только новым GNOME и косметическими изменениями. Canonical продолжает серьёзно перестраивать системные компоненты и постепенно формирует облик будущей Ubuntu 28.04 LTS.

Среди нововведений:

🚀 локальный голосовой ввод Myna без отправки аудио в облако;

🚀 ядро Linux 7.3 и поддержка будущих Intel Nova Lake и AMD Zen 6;

🚀 завершение перехода стандартных файловых утилит на Rust;

🚀 замена dbus-daemon на dbus-broker;

🚀 Sequoia PGP для проверки подписей APT-пакетов;

🚀 улучшения шифрования, аутентификации и корпоративного управления.

Читать статью на Хабре

@usr_bin_linux
🔥7⚡1👍1👎1
LSD — привычный ls, только современнее

LSD — написанная на Rust альтернатива стандартной команде ls. Она делает просмотр файлов в терминале нагляднее: добавляет цвета и иконки, древовидное представление каталогов, расширенное форматирование и гибкую настройку оформления.

Проект работает в Linux, macOS и Windows, устанавливается через пакетные менеджеры и при желании полностью заменяет обычный ls с помощью alias. Для корректного отображения иконок потребуется Nerd Font.

Репыч на Гитхаб

@usr_bin_linux
🔥8👍6❤4👎1
Можно ли навайбкодить операционную систему как Linux, только быструю?

Я давно подозревал, что фраза «давайте быстро навайбкодим» однажды доберётся от лендингов и SaaS'ов до ядра операционной системы. Дождались.

Автор этой статьи решил проверить, можно ли с помощью Claude Code создать собственную low-latency ОС — как Linux, только быстрее и без лишних микросекунд. Внутри: Rust, C++, планировщик, файловая система, борьба с задержками и тесты PostgreSQL и MariaDB.

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

Читать статью на Хабре

@usr_bin_linux
🔥7👍3⚡1
Свой игровой сервер на Linux: от systemd до Docker на примере Minecraft и Valheim

Рано или поздно любой администратор сталкивается с действительно критичной задачей: поднять Minecraft-сервер для друзей так, чтобы он пережил даже перезагрузку Linux.

В статье разбираются два подхода к запуску игровых серверов — классическая установка с systemd и контейнеризация через Docker. В качестве подопытных выступают Minecraft и Valheim: от выбора ресурсов и настройки сети до обновлений, безопасности и стабильной работы.

Читать статью на Хабре

@usr_bin_linux
🔥9👍3⚡2
Лог пустой, а диск заканчивается: что logrotate делает с файлами, которые приложение не закрывает

Классическая загадка Linux-администратора: свежий лог почти пустой, logrotate отрабатывает без ошибок, старые файлы удалены — а свободного места на диске почему-то становится всё меньше.

Спойлер: rm не всегда означает, что данные действительно исчезли. Если приложение продолжает держать файловый дескриптор открытым, оно может писать в уже удалённый файл. В каталоге его больше не видно, но место на диске всё ещё занято. Получается своеобразный «лог-призрак»: глазами его не увидеть, зато файловая система прекрасно чувствует его присутствие.

В статье разбирается, как ротация логов связана с inode и открытыми файловыми дескрипторами, чем отличаются стратегии create и copytruncate, зачем отправлять приложению HUP или USR1 и почему неправильно настроенный postrotate способен привести к потере записей.

Дополнительно рассказывают, как искать удалённые, но всё ещё открытые файлы с помощью:
lsof +L1

А также что учитывать при работе с systemd, Docker и приложениями, которые не умеют самостоятельно переоткрывать лог после ротации.

Читать на Хабре

@usr_bin_linux
👍6🔥6⚡3