This media is not supported in your browser
VIEW IN TELEGRAM
Логи Linux
В этом переводе разобраны типы логов, существующих в Linux и где их искать.
Читать →
@usr_bin_linux
В этом переводе разобраны типы логов, существующих в Linux и где их искать.
Читать →
@usr_bin_linux
🔥8👍1👎1
«У меня CSV-файл размером 10 ГБ и всего 512 МБ оперативной памяти» — вопрос на собеседовании, который поставил меня в тупик
Продолжение читайте в статье →
@usr_bin_linux
Я проходил собеседование на позицию Java-разработчика. Всё шло хорошо — я ответил на вопросы по Spring Boot, микросервисам и даже решил несколько задач в стиле LeetCode.
Затем интервьюер откинулся назад и спросил:
«Представьте, что у вас есть очень большой файл — допустим, CSV размером 10 ГБ. При этом вычислительные ресурсы сильно ограничены — например, всего 512 МБ оперативной памяти и одно ядро процессора. Как бы вы обработали этот файл, чтобы выполнить предварительную обработку данных и сохранить их в другом формате?»
Я замер. Мысли в голове сменяли друг друга.
Продолжение читайте в статье →
@usr_bin_linux
👍7🔥5
📁 lf — быстрый файловый менеджер для терминала
lf расшифровывается как list files. Это минималистичный файловый менеджер на Go, ориентированный на управление с клавиатуры в стиле Vim.
Проект запускается из одного бинарного файла, не требует дополнительных зависимостей и экономно расходует память. Асинхронные файловые операции не блокируют интерфейс даже при копировании или перемещении больших объёмов данных.
Горячие клавиши, цвета и команды можно полностью настроить под себя, а недостающие функции — добавить с помощью обычных shell-команд. Клиент-серверная архитектура позволяет управлять несколькими запущенными экземплярами lf.
Работает в Linux, macOS, BSD и Windows. Особенно пригодится тем, кто проводит большую часть времени в терминале и предпочитает клавиатуру мыши.
Репыч на GitHub →
@usr_bin_linux
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-контейнеров.
Новая утилита
Исходный код компонентов WSL опубликован на GitHub под лицензией MIT.
Читать подробности на Хабре →
@usr_bin_linux
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 и завершить процесс. Но иногда процесса уже нет, а порт всё ещё остаётся недоступен из-за состояния
В статье разбираются основные сценарии этой ошибки и способы диагностики в Linux, macOS и Windows: как найти владельца порта через
Отдельная часть посвящена профилактике:
Читать дальше на Хабре →
Сервис не запускается, потому что порт занят. Кажется, решение очевидно: найти 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-го. Проблема касается не только старых компьютеров: она может скрываться в
В статье — история Unix-времени, наглядные эксперименты с C, JavaScript и ext4, а также разбор того, где искать проблему 2038 года уже сейчас.
Читать дальше на Хабре →
@usr_bin_linux
В первых версиях 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
Кроссплатформенный системный монитор показывает процессы и загрузку CPU и памяти в реальном времени. Процессы можно сортировать, закреплять, завершать, а также фильтровать по имени, команде или PID — поддерживаются регулярные выражения и поиск сразу по нескольким условиям.
Утилита построена на Rust, Tauri и Svelte, работает в Linux, macOS и Windows, поддерживает светлую и тёмную темы. Для любителей терминала авторы также выпустили отдельный NeoHtop CLI с деревом процессов, графиками и фильтрами.
Репыч на Гитхаб
@usr_bin_linux
🔥8⚡3👍2
MinIO Is Deprecated: Best Alternatives for S3-Compatible Storage
Долгие годы MinIO считался стандартным выбором для развёртывания S3-совместимого хранилища в собственной инфраструктуре. После архивации upstream-репозитория и прекращения привычной модели лицензирования неплохо было бы задуматься о будущем своих инсталляций.
В статье разбираются три возможные альтернативы — Garage, RustFS и SeaweedFS — и объясняется, для каких архитектур и нагрузок подходит каждая из них.
Читать статью на Medium
@usr_bin_linux
Долгие годы 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 и
Интересно, что на этом тулките собрали восемь очень разных систем: обычный кластер, маршрутизатор без контейнеров, гипервизор, платформу для LLM, промышленный узел реального времени и внешний кластер мониторинга.
Читать дальше на Хабре
@usr_bin_linux
В статье описан любопытный инженерный эксперимент: автор предлагает относиться к Kubernetes так же, как мы относимся к ядру Linux. Сам Kubernetes остаётся общей основой, а поверх него собираются специализированные дистрибутивы — для виртуализации, ИИ, промышленного оборудования, мониторинга или сетевых задач.
Чтобы проверить идею на практике, автор разработал kuberoot — аналог Buildroot для сборки дистрибутивов Kubernetes, а также пакетный менеджер kubepkg и репозиторий пакетов.
В результате получается единый загрузочный образ, включающий ядро Linux, минимальную неизменяемую ОС и Kubernetes. Без SSH, shell и привычного пакетного менеджера. Узлами, системными службами, дисками, обновлениями и резервными копиями можно управлять через Kubernetes API и
kubectl. Обновления устанавливаются в неактивный слот, проверяются после перезагрузки и автоматически откатываются при проблемах.Интересно, что на этом тулките собрали восемь очень разных систем: обычный кластер, маршрутизатор без контейнеров, гипервизор, платформу для LLM, промышленный узел реального времени и внешний кластер мониторинга.
Читать дальше на Хабре
@usr_bin_linux
🔥7⚡2👍2❤1
Когда один
В статье разобран инженерный разбор ошибки, в которой
Автор прошел весь путь управляющего символа: хостовый терминал → Java → виртуальный UART → KVM → TTY-подсистема Linux → процесс. Виновником в итоге оказался не KVM и не обработка IRQ, а фоновый запуск BusyBox shell: процесс унаследовал игнорирование
Любопытный пример того, как диагностировать сложные проблемы на границах нескольких систем: проверять каждый слой отдельно и прямыми экспериментами исключать исправные участки цепочки.
Читать на Хабре
@usr_bin_linux
& ломает Ctrl+CВ статье разобран инженерный разбор ошибки, в которой
Ctrl+C сначала выключал виртуальную машину, а после исправления перестал прерывать даже обычный sleep.Автор прошел весь путь управляющего символа: хостовый терминал → Java → виртуальный UART → KVM → TTY-подсистема Linux → процесс. Виновником в итоге оказался не KVM и не обработка IRQ, а фоновый запуск BusyBox shell: процесс унаследовал игнорирование
SIGINT.Любопытный пример того, как диагностировать сложные проблемы на границах нескольких систем: проверять каждый слой отдельно и прямыми экспериментами исключать исправные участки цепочки.
Читать на Хабре
@usr_bin_linux
🔥8👍4⚡2
Как превратить Python-скрипт на VPS в нормальный сервис
В статье разобраны:
🚀 запуск и автоматический перезапуск через systemd;
🚀 хранение секретов и ограничение прав процесса;
🚀 сбор и ротация логов с помощью journald;
уведомления о сбоях в Telegram вместе с фрагментом журнала;
🚀 запуск задач по расписанию через systemd timers вместо cron.
Читать на Хабре
@usr_bin_linux
nohup, screen и надежда на то, что скрипт никогда не упадёт, — не лучший вариант для эксплуатации. В этой статье рассказывается, как организовать запуск небольших Python-приложений средствами самого Linux — без Docker, Supervisor и отдельной системы мониторинга.В статье разобраны:
🚀 запуск и автоматический перезапуск через systemd;
🚀 хранение секретов и ограничение прав процесса;
🚀 сбор и ротация логов с помощью journald;
уведомления о сбоях в Telegram вместе с фрагментом журнала;
🚀 запуск задач по расписанию через systemd timers вместо cron.
Читать на Хабре
@usr_bin_linux
🔥9👍3⚡2