Новый удобный df: duf
duf - это консольная утилита для просмотра использования файловых систем в Linux. По назначению она повторяет df, но выводит информацию в структурированном виде, поддерживается цветовая индикация.
Установка на Ubuntu
В Ubuntu duf доступен в официальном репозитории. Установка стандартная, без сторонних источников и сборки из исходников.
После установки команда duf становится доступна глобально.
Основные режимы работы
Запуск без параметров показывает все примонтированные файловые системы, включая tmpfs, loop-устройства, overlay и сетевые маунты. Это удобно для анализа систем с контейнерами и снапами.
Для вывода только локальных дисков используется отдельный режим, который исключает временные и виртуальные файловые системы.
Дополнительно duf умеет сортировать вывод, скрывать псевдо-файловые системы и работать одинаково в интерактивных и скриптовых сценариях.
Вывод
duf - это современная замена df с тем же назначением и расширенным форматом вывода. Подходит для рабочих станций и серверов, особенно в окружениях с большим количеством примонтированных файловых систем.
LinuxCamp | #utils
duf - это консольная утилита для просмотра использования файловых систем в Linux. По назначению она повторяет df, но выводит информацию в структурированном виде, поддерживается цветовая индикация.
Установка на Ubuntu
В Ubuntu duf доступен в официальном репозитории. Установка стандартная, без сторонних источников и сборки из исходников.
sudo apt install duf
После установки команда duf становится доступна глобально.
Основные режимы работы
Запуск без параметров показывает все примонтированные файловые системы, включая tmpfs, loop-устройства, overlay и сетевые маунты. Это удобно для анализа систем с контейнерами и снапами.
duf
Для вывода только локальных дисков используется отдельный режим, который исключает временные и виртуальные файловые системы.
duf --only local
Дополнительно duf умеет сортировать вывод, скрывать псевдо-файловые системы и работать одинаково в интерактивных и скриптовых сценариях.
Вывод
duf - это современная замена df с тем же назначением и расширенным форматом вывода. Подходит для рабочих станций и серверов, особенно в окружениях с большим количеством примонтированных файловых систем.
LinuxCamp | #utils
1👍50❤13🔥7❤🔥1
hyperfine: замер времени выполнения команд
hyperfine - это утилита для бенчмаркинга команд в Linux. Она запускает одну или несколько команд много раз и измеряет время выполнения. В отличие от time, здесь сразу считаются среднее значение, минимальное и максимальное время, стандартное отклонение. Учитываются прогрев и шум системы.
Установка
В Ubuntu утилита доступна в официальных репозиториях.
После установки команда hyperfine доступна без дополнительной настройки.
Базовое использование
Простейший случай это замер одной команды. hyperfine сам выполнит несколько прогонов и выведет агрегированную статистику.
Чаще всего утилиту используют для сравнения нескольких вариантов одной и той же операции, например разных реализаций или флагов.
В этом режиме вывод сразу показывает разницу по времени и разброс значений, что удобно для принятия технических решений.
Вывод
hyperfine предназначен для воспроизводимых замеров производительности команд. Подходит для сравнения CLI-утилит, флагов запуска, скриптов и небольших изменений в пайплайнах, где важно видеть реальные цифры, а не разовый запуск через time.
LinuxCamp | #utils
hyperfine - это утилита для бенчмаркинга команд в Linux. Она запускает одну или несколько команд много раз и измеряет время выполнения. В отличие от time, здесь сразу считаются среднее значение, минимальное и максимальное время, стандартное отклонение. Учитываются прогрев и шум системы.
Установка
В Ubuntu утилита доступна в официальных репозиториях.
sudo apt install hyperfine
После установки команда hyperfine доступна без дополнительной настройки.
Базовое использование
Простейший случай это замер одной команды. hyperfine сам выполнит несколько прогонов и выведет агрегированную статистику.
hyperfine "ls -R /usr/share >/dev/null"
Чаще всего утилиту используют для сравнения нескольких вариантов одной и той же операции, например разных реализаций или флагов.
hyperfine "grep -R foo ." "rg foo ."
В этом режиме вывод сразу показывает разницу по времени и разброс значений, что удобно для принятия технических решений.
Вывод
hyperfine предназначен для воспроизводимых замеров производительности команд. Подходит для сравнения CLI-утилит, флагов запуска, скриптов и небольших изменений в пайплайнах, где важно видеть реальные цифры, а не разовый запуск через time.
LinuxCamp | #utils
❤23👍12🔥6❤🔥1
bottom (btm): мониторинг системы с гибкой визуализацией
bottom, сокращённо btm, это TUI-утилита для мониторинга состояния системы. По задачам она пересекается с top и htop: загрузка CPU, использование памяти, диск, сеть, процессы. Отличие в том, что btm сразу ориентирован на графическое представление данных в терминале и гибкую компоновку экрана.
Установка
После установки утилита запускается командой btm.
Как работает
При запуске btm открывает интерактивный интерфейс с несколькими блоками: CPU, память, swap, диск, сеть, список процессов. Блоки можно скрывать, менять их порядок и переключать режимы отображения с клавиатуры, без редактирования конфигов.
Для серверов и Docker-хостов полезен режим с упором на процессы и нагрузку, где видно PID, пользователя, потребление CPU и памяти в реальном времени.
Все настройки сохраняются в конфигурационном файле, который можно использовать одинаково на разных машинах.
Вывод
bottom - это интерактивный мониторинг системы в терминале с расширенной визуализацией и настройкой интерфейса. Подходит для личного пользования и постоянного контроля ресурсов без GUI-инструментов.
LinuxCamp | #utils
bottom, сокращённо btm, это TUI-утилита для мониторинга состояния системы. По задачам она пересекается с top и htop: загрузка CPU, использование памяти, диск, сеть, процессы. Отличие в том, что btm сразу ориентирован на графическое представление данных в терминале и гибкую компоновку экрана.
Установка
sudo apt install bottom
После установки утилита запускается командой btm.
Как работает
При запуске btm открывает интерактивный интерфейс с несколькими блоками: CPU, память, swap, диск, сеть, список процессов. Блоки можно скрывать, менять их порядок и переключать режимы отображения с клавиатуры, без редактирования конфигов.
btm
Для серверов и Docker-хостов полезен режим с упором на процессы и нагрузку, где видно PID, пользователя, потребление CPU и памяти в реальном времени.
btm -b
Все настройки сохраняются в конфигурационном файле, который можно использовать одинаково на разных машинах.
Вывод
bottom - это интерактивный мониторинг системы в терминале с расширенной визуализацией и настройкой интерфейса. Подходит для личного пользования и постоянного контроля ресурсов без GUI-инструментов.
LinuxCamp | #utils
👍25🔥7❤4❤🔥1
Forwarded from ITCamp | AI & Code
This media is not supported in your browser
VIEW IN TELEGRAM
Арчевод показал свой рабочий стол Linux дистра и его оформление. Ну, по факту, выглядит оч даже ничего)
Вы такое, как, одобряете?
🔥 - топ окружение
👍 - нет ничего краше Винды
ITCamp | AI & Code
Вы такое, как, одобряете?
ITCamp | AI & Code
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥58💊52❤🔥9😁7👍2🤯2❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Ролл бэк в 1994 - тут еще молодой Линус Торвальдс представляет ядро Linux версии 1.0. Как же сильно его творение эволюционировало
LinuxCamp
LinuxCamp
1👍54🔥20❤7👾3❤🔥2
entr: автозапуск команд при изменении файлов
entr - это небольшая утилита для отслеживания изменений файлов и автоматического запуска команд. Она читает список файлов из stdin и перезапускает указанную команду каждый раз, когда один из файлов меняется. Используется для сборки, тестов, перезапуска сервисов и любых задач, где нужен простой file-watcher без демонов и сложной конфигурации.
Установка
После установки бинарь entr доступен сразу.
Базовое использование
Чаще всего entr работает в связке с find или ls. Список файлов передаётся через pipe, после чего указывается команда, которую нужно выполнять при изменениях.
В этом примере тесты будут автоматически запускаться при любом изменении Go-файлов в проекте. Процесс остаётся в терминале и реагирует на каждое сохранение.
Полезные режимы
Для перезапуска long-running команд или сервисов используется флаг -r. Он корректно завершает предыдущий процесс перед новым запуском.
Такой подход часто применяют для локальной проверки конфигураций, генерации статики, сборки документации и CI-подобных сценариев без отдельного watcher-инструмента.
Вывод
entr - это утилита для реактивного запуска команд при изменении файлов. Она хорошо подходит для разработки и администрирования, когда нужен простой и предсказуемый механизм автоматизации без дополнительных сервисов и фоновых процессов.
LinuxCamp | #utils
entr - это небольшая утилита для отслеживания изменений файлов и автоматического запуска команд. Она читает список файлов из stdin и перезапускает указанную команду каждый раз, когда один из файлов меняется. Используется для сборки, тестов, перезапуска сервисов и любых задач, где нужен простой file-watcher без демонов и сложной конфигурации.
Установка
sudo apt install entr
После установки бинарь entr доступен сразу.
Базовое использование
Чаще всего entr работает в связке с find или ls. Список файлов передаётся через pipe, после чего указывается команда, которую нужно выполнять при изменениях.
find . -name "*.go" | entr go test ./...
В этом примере тесты будут автоматически запускаться при любом изменении Go-файлов в проекте. Процесс остаётся в терминале и реагирует на каждое сохранение.
Полезные режимы
Для перезапуска long-running команд или сервисов используется флаг -r. Он корректно завершает предыдущий процесс перед новым запуском.
ls *.conf | entr -r nginx -t
Такой подход часто применяют для локальной проверки конфигураций, генерации статики, сборки документации и CI-подобных сценариев без отдельного watcher-инструмента.
Вывод
entr - это утилита для реактивного запуска команд при изменении файлов. Она хорошо подходит для разработки и администрирования, когда нужен простой и предсказуемый механизм автоматизации без дополнительных сервисов и фоновых процессов.
LinuxCamp | #utils
1👍29❤9🔥5
Как случайно заGNOME'иться и что с этим делать
В Linux можно установить одно приложение из экосистемы GNOME и получить целиком весь GNOME desktop stack.
Это происходит из-за зависимостей: метапакеты, Recommends, Depends, общие сервисы и gnome-session подтягиваются пакетным менеджером автоматически.
Почему GNOME становится DE по умолчанию
Обычно это происходит, когда устанавливается gnome-session, gdm или метапакеты вроде gnome-core, gnome-shell.
После этого display manager считает GNOME полноценной сессией и может выбрать её как дефолтную, особенно если предыдущая была установлена не через метапакет.
Проверить, что именно подтянулось, можно так:
Или уже по факту посмотреть, что из GNOME стоит в системе:
Как этого избежать
На системах с apt стоит сразу отключать установку рекомендованных пакетов.
Это снижает шанс, что за одним приложением приедет половина desktop-стека.
Если приложение нужно только как утилита, а не как часть GNOME, часто этого достаточно.
Также полезно смотреть, не тянется ли метапакет, перед подтверждением установки.
Что делать, если GNOME уже приехал
Если GNOME уже установлен, но не нужен, его можно удалить, оставив display manager и текущее DE.
Обычно удаляются метапакеты и shell, а не отдельные библиотеки.
После этого стоит проверить, какой display manager используется, и при необходимости выбрать нужный:
Комьюнити
Это такая частая и актуальная проблема, что был создан сабреддит для обсуждения этой темы и люди активно этим пользуются, чтобы выговориться:
https://reddit.com/r/gotgnomed/
LinuxCamp
В Linux можно установить одно приложение из экосистемы GNOME и получить целиком весь GNOME desktop stack.
Это происходит из-за зависимостей: метапакеты, Recommends, Depends, общие сервисы и gnome-session подтягиваются пакетным менеджером автоматически.
Почему GNOME становится DE по умолчанию
Обычно это происходит, когда устанавливается gnome-session, gdm или метапакеты вроде gnome-core, gnome-shell.
После этого display manager считает GNOME полноценной сессией и может выбрать её как дефолтную, особенно если предыдущая была установлена не через метапакет.
Проверить, что именно подтянулось, можно так:
apt depends gnome-shell
Или уже по факту посмотреть, что из GNOME стоит в системе:
dpkg -l | grep gnome
Как этого избежать
На системах с apt стоит сразу отключать установку рекомендованных пакетов.
Это снижает шанс, что за одним приложением приедет половина desktop-стека.
sudo apt install --no-install-recommends gnome-calculator
Если приложение нужно только как утилита, а не как часть GNOME, часто этого достаточно.
Также полезно смотреть, не тянется ли метапакет, перед подтверждением установки.
Что делать, если GNOME уже приехал
Если GNOME уже установлен, но не нужен, его можно удалить, оставив display manager и текущее DE.
Обычно удаляются метапакеты и shell, а не отдельные библиотеки.
sudo apt purge gnome-shell gnome-session gdm3
sudo apt autoremove
После этого стоит проверить, какой display manager используется, и при необходимости выбрать нужный:
sudo dpkg-reconfigure lightdm
Комьюнити
Это такая частая и актуальная проблема, что был создан сабреддит для обсуждения этой темы и люди активно этим пользуются, чтобы выговориться:
https://reddit.com/r/gotgnomed/
LinuxCamp
🔥24❤8👍5😁1
This media is not supported in your browser
VIEW IN TELEGRAM
Ну че, знакомо?) Буквально, когда пытаешься войти в BIOS, а потом оказывается что не та кнопка...
LinuxCamp
LinuxCamp
🤣79🔥13💯11👍2❤1
czkawka: поиск мусора и дубликатов на диске
czkawka - это утилита для анализа файловой системы и поиска лишних данных.
Она умеет находить дубликаты файлов, похожие изображения, пустые директории, временные файлы, битые ссылки и т.д.
Проект написан на Rust, есть CLI и GUI-версия, но в серверных и headless-сценариях обычно используют именно CLI.
Установка на Ubuntu
В репозиториях Ubuntu утилиты нет, поэтому самый простой вариант - скачать готовый бинарь с GitHub Releases и положить его в PATH.
Основные сценарии
Поиск дубликатов файлов по хешу. Это полезно для архивов, бэкапов и каталогов с копиями данных.
Поиск пустых директорий и мусорных файлов, которые часто остаются после сборок и тестов.
Отдельный режим предназначен для поиска похожих изображений.
Он сравнивает изображения по содержимому, а не по имени или размеру.
На что стоит обратить внимание
czkawka ничего не удаляет автоматически, если явно не указать флаги удаления.
LinuxCamp | #utils
czkawka - это утилита для анализа файловой системы и поиска лишних данных.
Она умеет находить дубликаты файлов, похожие изображения, пустые директории, временные файлы, битые ссылки и т.д.
Проект написан на Rust, есть CLI и GUI-версия, но в серверных и headless-сценариях обычно используют именно CLI.
Установка на Ubuntu
В репозиториях Ubuntu утилиты нет, поэтому самый простой вариант - скачать готовый бинарь с GitHub Releases и положить его в PATH.
wget https://github.com/qarmin/czkawka/releases/latest/download/czkawka_cli-linux.tar.gz
tar -xzf czkawka_cli-linux.tar.gz
sudo mv czkawka_cli /usr/local/bin/czkawka
Основные сценарии
Поиск дубликатов файлов по хешу. Это полезно для архивов, бэкапов и каталогов с копиями данных.
czkawka dup -d /data
Поиск пустых директорий и мусорных файлов, которые часто остаются после сборок и тестов.
czkawka empty-folders -d /data
Отдельный режим предназначен для поиска похожих изображений.
Он сравнивает изображения по содержимому, а не по имени или размеру.
czkawka image -d /photos
На что стоит обратить внимание
czkawka ничего не удаляет автоматически, если явно не указать флаги удаления.
LinuxCamp | #utils
👍20❤10🔥5❤🔥1
Когда хочется проверить уровень своих знаний и убедиться в своей компетентности, один из рабочих вариантов — это пройти экзамен DevOps Engineer от Yandex Cloud. Он рассчитан на специалистов с опытом DevOps от 2 лет.
По данным исследования Yandex Cloud, у 74% специалистов после сертификации заметно выросла уверенность в собственной экспертизе.
Экзамен для тех, кто работает с автоматизацией инфраструктуры, оркестрацией контейнеров, отказоустойчивостью и CI/CD. Плюс это реальное преимущество при трудоустройстве или в разговоре о повышении.
Тестирование проходит онлайн, 65 вопросов, 90 минут.
И ещё момент: до 31 марта 2026 действует скидка 50%, можно успеть зарегистрироваться на выгодных условиях.
По данным исследования Yandex Cloud, у 74% специалистов после сертификации заметно выросла уверенность в собственной экспертизе.
Экзамен для тех, кто работает с автоматизацией инфраструктуры, оркестрацией контейнеров, отказоустойчивостью и CI/CD. Плюс это реальное преимущество при трудоустройстве или в разговоре о повышении.
Тестирование проходит онлайн, 65 вопросов, 90 минут.
И ещё момент: до 31 марта 2026 действует скидка 50%, можно успеть зарегистрироваться на выгодных условиях.
👍10❤3🥴1
Пинганите меня, когда Linux станет основной системой и заменит Windows. Я пока настрою ArchLinux
LinuxCamp
LinuxCamp
👍46😁38🔥11🤔6❤3😢2👏1
sched_ext: планировщик Linux в userspace
sched_ext позволяет реализовывать планировщики задач вне ядра Linux. Логика планирования выносится в eBPF-программу, а ядро остаётся ответственным за выполнение и переключение контекста.
Проверка поддержки
Работает только на ядрах с включённым SCHED_EXT.
Если опция включена, ядро поддерживает внешний планировщик.
Запуск планировщика
В репозитории есть готовые реализации. После запуска система начинает использовать внешний планировщик.
Остановка процесса возвращает стандартный планировщик.
Вывод
sched_ext используется для экспериментов и workload-ориентированного планирования без патчей ядра.
LinuxCamp | #utils
sched_ext позволяет реализовывать планировщики задач вне ядра Linux. Логика планирования выносится в eBPF-программу, а ядро остаётся ответственным за выполнение и переключение контекста.
Проверка поддержки
Работает только на ядрах с включённым SCHED_EXT.
grep SCHED_EXT /boot/config-$(uname -r)
Если опция включена, ядро поддерживает внешний планировщик.
Запуск планировщика
В репозитории есть готовые реализации. После запуска система начинает использовать внешний планировщик.
sudo ./scx_simple
Остановка процесса возвращает стандартный планировщик.
Вывод
sched_ext используется для экспериментов и workload-ориентированного планирования без патчей ядра.
LinuxCamp | #utils
👍13❤5🔥5
Forwarded from ITCamp | AI & Code
Деннис Ритчи — создатель языка C и ОС Unix
Влияние языка C на индустрию
— C позволил легко переносить Unix на разные аппаратные платформы.
— C давал низкоуровневый контроль, как ассемблер, но с высокоуровневой структурой, что сделало его идеальным для системного программирования
— Синтаксис и идеи C легли в основу C++, Java, C#, Go, Python.
Если было полезно, ставим🔥
ITCamp | AI & Code
1941 — Родился в пригороде Нью-Йорка, вырос в семье учёного из Bell Labs.
1968 — Получил образование в Гарварде, но не осилил степень PhD из-за бюрократических формальностей.
1969 — начал работать в Bell Labs, где и создал свои главные проекты.
1972 — создал язык программирования C. Язык создавался для эффективности и переносимости.
(1969–1973) — разрабатывал ОС Unix, которая изначально писалась на ассемблере, но к 1973 году была почти полностью переписана на C.
1978 — с Брайаном Керниганом выпустил книгу «Язык программирования C».
Также свою руку Деннис приложил и к другим проектам: ОС Plan 9 и Inferno, язык Limbo, взлом шифровальной машины M-209, редактор QED, макропроцессор М4.
Влияние языка C на индустрию
— C позволил легко переносить Unix на разные аппаратные платформы.
— C давал низкоуровневый контроль, как ассемблер, но с высокоуровневой структурой, что сделало его идеальным для системного программирования
— Синтаксис и идеи C легли в основу C++, Java, C#, Go, Python.
Если было полезно, ставим
ITCamp | AI & Code
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥139👍17❤8
Для тех, кто уже выкупил прикол ИИ, я создал блог, куда пишу более глубокие посты на тему использования ИИ в разработке.
Для справки - последний год я с головой погрузился в нейронки и начал применять их на работе (да, я пока работаю C++ фултайм на линукс) и для собственных проектов.
На канале показываю чит коды, которые помогают мне быть эффективным в найме и за пару дней с ИИ закрывать спринты. Также делюсь успехами и неудачами в создании своих IT продуктов с помощью вайбкодинга.
Помимо прочего, говорим про то, как свои продукты развивать, демонстрирвать их народу и делать так, чтобы народ за решения платил.
Я сам еще на пути к мастерству в перечисленных направлениях, но уже есть о чем рассказать) Короче, если разделяешь мои интересы, жду тебя в блоге: https://t.me/+h7e67vXacQM3NDUy
Для справки - последний год я с головой погрузился в нейронки и начал применять их на работе (да, я пока работаю C++ фултайм на линукс) и для собственных проектов.
На канале показываю чит коды, которые помогают мне быть эффективным в найме и за пару дней с ИИ закрывать спринты. Также делюсь успехами и неудачами в создании своих IT продуктов с помощью вайбкодинга.
Помимо прочего, говорим про то, как свои продукты развивать, демонстрирвать их народу и делать так, чтобы народ за решения платил.
Я сам еще на пути к мастерству в перечисленных направлениях, но уже есть о чем рассказать) Короче, если разделяешь мои интересы, жду тебя в блоге: https://t.me/+h7e67vXacQM3NDUy
👍11💊5❤4🔥2😱1😨1
Безопасность сервера на котором уже крутится твой мега-стартап
Иногда безопасность ломается не из-за супер-0day, модной вирусни, user/password от бд: postgres/postgres (все совпадения случайны), а из-за банального: у тебя на VPS торчит порт, который временно открыл и забыл. А интернет не забывает, его постоянно сканируют.
Что реально происходит в сети
У твоего сервера есть публичный IP. Для внешнего мира он как витрина, туда стучатся все кому не попадя. И по этой витрине ходят роботы. Очень типичная цепочка выглядит так:
Сканируют все, всегда, без личных причин. Просто потому что это дёшево и масштабируется.
Кто ты воин?
Если хочешь быстро почувствовать как оно, посмотри на свой сервер глазами атакующего (с другого хоста):
Тебя интересует только открыт ли 22 (ssh), а любые неожиданные вещи: 2375 (Docker API), 9200 (Elasticsearch), 5432 (PostgreSQL), 6379 (Redis), 8080/8000 (админки), 9090 (метрики/Prometheus) и т.д.
Главная мысль: "Если сервис слушает 0.0.0.0, он уже считается публичным!", даже если там есть пароль.
Почему пароль слабая защита
Пароль - это последняя линия. Первая линия - это, чтобы до сервиса вообще не дошли. Потому что есть брутфорс и словари, есть утечки паролей, есть баги в сервисах, есть неверные настройки, есть админки без rate-limit. И даже без взлома, открытый порт = лишний шум в логах + лишняя нагрузка.
База: закрыть все, кроме нужного
Самый спокойный подход: default deny, и дальше открываешь только то, что реально нужно. Пример минимального nftables: разрешаем установленные соединения, loopback, SSH и HTTP/HTTPS, остальное в drop.
Если хочешь сделать ещё правильнее, ограничь SSH по IP (например, только твой офис/VPN):
И сразу становится заметно: даже если на сервере случайно поднялся Redis на 0.0.0.0, то извне его не видно.
Важный вывод
Если порт открыт, то им кто-то уже интересуется. Сделай так, чтобы интересоваться было нечем.
LinuxCamp | #security
Иногда безопасность ломается не из-за супер-0day, модной вирусни, user/password от бд: postgres/postgres (все совпадения случайны), а из-за банального: у тебя на VPS торчит порт, который временно открыл и забыл. А интернет не забывает, его постоянно сканируют.
Что реально происходит в сети
У твоего сервера есть публичный IP. Для внешнего мира он как витрина, туда стучатся все кому не попадя. И по этой витрине ходят роботы. Очень типичная цепочка выглядит так:
Скан → найден порт → баннер/версия → подбор пароля/эксплойт → закрепление
Сканируют все, всегда, без личных причин. Просто потому что это дёшево и масштабируется.
Кто ты воин?
Если хочешь быстро почувствовать как оно, посмотри на свой сервер глазами атакующего (с другого хоста):
nmap -sS -sV -Pn -p- <твой ip>
Тебя интересует только открыт ли 22 (ssh), а любые неожиданные вещи: 2375 (Docker API), 9200 (Elasticsearch), 5432 (PostgreSQL), 6379 (Redis), 8080/8000 (админки), 9090 (метрики/Prometheus) и т.д.
Главная мысль: "Если сервис слушает 0.0.0.0, он уже считается публичным!", даже если там есть пароль.
Почему пароль слабая защита
Пароль - это последняя линия. Первая линия - это, чтобы до сервиса вообще не дошли. Потому что есть брутфорс и словари, есть утечки паролей, есть баги в сервисах, есть неверные настройки, есть админки без rate-limit. И даже без взлома, открытый порт = лишний шум в логах + лишняя нагрузка.
База: закрыть все, кроме нужного
Самый спокойный подход: default deny, и дальше открываешь только то, что реально нужно. Пример минимального nftables: разрешаем установленные соединения, loopback, SSH и HTTP/HTTPS, остальное в drop.
nft add table inet filter
nft 'add chain inet filter input { type filter hook input priority 0; policy drop; }'
nft add rule inet filter input ct state established,related accept
nft add rule inet filter input iif lo accept
nft add rule inet filter input tcp dport 22 accept
nft add rule inet filter input tcp dport { 80, 443 } accept
Если хочешь сделать ещё правильнее, ограничь SSH по IP (например, только твой офис/VPN):
nft add rule inet filter input ip saddr <YOUR_IP>/32 tcp dport 22 accept
И сразу становится заметно: даже если на сервере случайно поднялся Redis на 0.0.0.0, то извне его не видно.
Важный вывод
Если порт открыт, то им кто-то уже интересуется. Сделай так, чтобы интересоваться было нечем.
LinuxCamp | #security
👍33🔥11❤🔥3❤3🥱1
flock: чтобы cron не запускал одно и то же дважды
У cron есть суперсила: он запускает задачи по расписанию. И есть скрытая пассивка: ему всё равно, что прошлый запуск ещё не закончился. Так рождаются классические баги: двойная чистка, двойная рассылка, два бэкапа в один файл, гонки за локи в БД.
Мастхев-решение
Запускать только один экземпляр, остальные попытки пропускать:
-n значит не ждать, если занято, сразу выйти.
Если важно не пропустить, а выполнить по очереди
Ждать пока освободится лок:
Или ждать максимум 30 секунд:
Чтобы было видно пропуск
Вывод:
flock это ремень безопасности для cron. Одной строкой ты убираешь параллельные запуски, гонки и случайную порчу данных.
LinuxCamp | #utils
У cron есть суперсила: он запускает задачи по расписанию. И есть скрытая пассивка: ему всё равно, что прошлый запуск ещё не закончился. Так рождаются классические баги: двойная чистка, двойная рассылка, два бэкапа в один файл, гонки за локи в БД.
Мастхев-решение
Запускать только один экземпляр, остальные попытки пропускать:
* * * * * flock -n /tmp/myjob.lock -c '/usr/local/bin/myjob.sh'
-n значит не ждать, если занято, сразу выйти.
Если важно не пропустить, а выполнить по очереди
Ждать пока освободится лок:
flock /tmp/myjob.lock -c '/usr/local/bin/myjob.sh'
Или ждать максимум 30 секунд:
flock -w 30 /tmp/myjob.lock -c '/usr/local/bin/myjob.sh'
Чтобы было видно пропуск
flock -n /tmp/cleanup.lock -c '/usr/local/bin/cleanup.sh' || logger -t cleanup "skip: lock busy"
Вывод:
flock это ремень безопасности для cron. Одной строкой ты убираешь параллельные запуски, гонки и случайную порчу данных.
LinuxCamp | #utils
👍46🔥8❤5❤🔥1
Вышел новый Linux 6.19, следующий уже 7.0!
Linus выпустил Linux kernel 6.19, и сразу подтвердил, что следующая ветка будет называться 7.0. Причина максимально невпечатляющая: нумерация стала неудобной, а не потому что там грядёт большой перелом😒
Что полезного собсна вышло:
Вкратце 6.19 это обычный релиз с пачкой драйверов, фиксов и улучшений железа. Если сидишь на свежих дистрибутивах или катишь ядро руками, можно в целом планировать апдейт
Шо по Rust?
К циклу Linux 7.0 в ядро ушел патч, который символически закрывает формулировку "Rust experiment". Раст остается, выдыхаем (ну или напрягаемся)
Вывод:
7.0 это ребрендинг цифры. Смысла обновляться ради числа и ждать серьезных положительных изменений нет.
Поделитесь если есть фиксы, из-за которых хотели бы перейти на новую версию🔥
LinuxCamp | #news
Linus выпустил Linux kernel 6.19, и сразу подтвердил, что следующая ветка будет называться 7.0. Причина максимально невпечатляющая: нумерация стала неудобной, а не потому что там грядёт большой перелом
Что полезного собсна вышло:
Вкратце 6.19 это обычный релиз с пачкой драйверов, фиксов и улучшений железа. Если сидишь на свежих дистрибутивах или катишь ядро руками, можно в целом планировать апдейт
Шо по Rust?
К циклу Linux 7.0 в ядро ушел патч, который символически закрывает формулировку "Rust experiment". Раст остается, выдыхаем (ну или напрягаемся)
Вывод:
7.0 это ребрендинг цифры. Смысла обновляться ради числа и ждать серьезных положительных изменений нет.
Поделитесь если есть фиксы, из-за которых хотели бы перейти на новую версию
LinuxCamp | #news
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤12🔥5🤔3🗿2❤🔥1🤣1
Как читать файлы Эпштейна на Linux
Интернет на днях поймал лютый сюжетный твист: в опубликованных файлах по делу Эпштейна люди нашли… Bash Reference Manual.😵
Да, 158-страничный туториал по bash, тот самый, который открывали наши деды, когда забывали очередную команду с 100500 флагами.
Это значит, что пришло время написать шпаргалку про то как смотреть pdf-файлы на linux
xdg-open (пакет xdg-utils)
Открыть PDF дефолтной программой.
evince (пакет evince)
Нормальный GUI просмотрщик, если у тебя есть окружение.
pdfinfo и pdftotext (пакет poppler-utils)
Посмотреть метаданные и быстро вытащить текст.
pdftoppm (пакет poppler-utils)
Если PDF это скан и текста нет, рендерим страницы в PNG.
mupdf (пакет mupdf)
Лёгкий просмотрщик, часто быстрее тяжёлых.
zathura (пакет zathura)
Минималистичный просмотрщик, любимый вариант для клавиатурных ниндзя.
Вывод
Для PDF тебе обычно хватает poppler-utils и одного просмотрщика. Остальное уже по вкусу. А если вдруг в очередной слив опять попадет документация по bash, ты хотя бы будешь готов открыть ее красиво.
LinuxCamp | #utils
Интернет на днях поймал лютый сюжетный твист: в опубликованных файлах по делу Эпштейна люди нашли… Bash Reference Manual.
Да, 158-страничный туториал по bash, тот самый, который открывали наши деды, когда забывали очередную команду с 100500 флагами.
Это значит, что пришло время написать шпаргалку про то как смотреть pdf-файлы на linux
xdg-open (пакет xdg-utils)
Открыть PDF дефолтной программой.
xdg-open file.pdf
evince (пакет evince)
Нормальный GUI просмотрщик, если у тебя есть окружение.
evince file.pdf
pdfinfo и pdftotext (пакет poppler-utils)
Посмотреть метаданные и быстро вытащить текст.
pdfinfo file.pdf | head
pdftotext file.pdf - | less
pdftoppm (пакет poppler-utils)
Если PDF это скан и текста нет, рендерим страницы в PNG.
pdftoppm -png -f 1 -l 3 file.pdf page
mupdf (пакет mupdf)
Лёгкий просмотрщик, часто быстрее тяжёлых.
mupdf file.pdf
zathura (пакет zathura)
Минималистичный просмотрщик, любимый вариант для клавиатурных ниндзя.
zathura file.pdf
Вывод
Для PDF тебе обычно хватает poppler-utils и одного просмотрщика. Остальное уже по вкусу. А если вдруг в очередной слив опять попадет документация по bash, ты хотя бы будешь готов открыть ее красиво.
LinuxCamp | #utils
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣54👍11🔥7🤯2❤1😱1
Быстрый анализ загрузки через systemd-analyze
На сервере все ок: железо норм, диски норм, но после ребута он думает о смысле жизни секунд 40. Обычно лезешь сразу в сервисы, логи и смотришь что запустилось, а что еще нет. Но иногда юнит не падает, а просто висит в starting и ждёт сеть, DNS, диск или маунт.
Что делает systemd-analyze
systemd-analyze вскрывает сколько заняло ядро, сколько занял userspace, и какие юниты съели время.
Кто тормозит
Она покажет список юнитов, отсортированный по времени старта. Важно: это не всегда время выполнения, а то, сколько юнит считался стартующим. Но обычно виновники видны сразу.
Дерево зависимостей
Когда юнит тормозит, часто причина не в нём, а в том, что он ждёт сеть, диск, другой сервис.
Эта штука показывает цепочку, что блокировало путь до default.target. Видно кто кого ждал и где пробка.
График загрузки для красивого разбора
Если хочется визуально показать коллеге почему оно долго стартует, есть SVG-таймлайн.
Открываешь boot.svg в браузере и видишь полосочки, кто и когда стартовал.
Вывод
systemd-analyze это твой способ увидеть кто, где и почему тормозит загрузку и кто кого ожидает.
LinuxCamp | #utils
На сервере все ок: железо норм, диски норм, но после ребута он думает о смысле жизни секунд 40. Обычно лезешь сразу в сервисы, логи и смотришь что запустилось, а что еще нет. Но иногда юнит не падает, а просто висит в starting и ждёт сеть, DNS, диск или маунт.
Что делает systemd-analyze
systemd-analyze вскрывает сколько заняло ядро, сколько занял userspace, и какие юниты съели время.
Кто тормозит
systemd-analyze blame
Она покажет список юнитов, отсортированный по времени старта. Важно: это не всегда время выполнения, а то, сколько юнит считался стартующим. Но обычно виновники видны сразу.
Дерево зависимостей
Когда юнит тормозит, часто причина не в нём, а в том, что он ждёт сеть, диск, другой сервис.
systemd-analyze critical-chain
Эта штука показывает цепочку, что блокировало путь до default.target. Видно кто кого ждал и где пробка.
График загрузки для красивого разбора
Если хочется визуально показать коллеге почему оно долго стартует, есть SVG-таймлайн.
systemd-analyze plot > boot.svg
Открываешь boot.svg в браузере и видишь полосочки, кто и когда стартовал.
Вывод
systemd-analyze это твой способ увидеть кто, где и почему тормозит загрузку и кто кого ожидает.
LinuxCamp | #utils
👍27🔥13❤5
Хватит копипастить ssh: наводим порядок в ~/.ssh/config
Ключ у тебя уже есть, пароль ты уже ненавидишь, но всё равно каждый раз пишешь ssh user@ip, потом ещё раз на бастион, потом снова, потом ждёшь. SSH умеет делать это нормально, если один раз настроить конфиг.
~/.ssh/config вместо копипасты
Создай конфиг и закрой на него права:
Минимальный пример: алиас, юзер, ключ, нормальные keepalive
Теперь подключение становится человеческим:
JumpHost: когда есть bastion
Если внутренняя машина доступна только через bastion, добавляешь ProxyJump.
И заходишь одной командой, без матрёшки из ssh:
Ускоряем повторные ssh: ControlMaster
Когда ты делаешь 10 коннектов подряд, каждый новый handshake это боль, особенно через bastion. Мультиплексирование решает.
После этого повторные ssh internal ощущаются как телепорт.
Вывод
Ключи дают безопасность, а ~/.ssh/config даёт скорость и порядок. ProxyJump убирает матрёшку, ControlMaster убирает тормоза. Один раз настроил и дальше просто работаешь.
LinuxCamp | #utils
Ключ у тебя уже есть, пароль ты уже ненавидишь, но всё равно каждый раз пишешь ssh user@ip, потом ещё раз на бастион, потом снова, потом ждёшь. SSH умеет делать это нормально, если один раз настроить конфиг.
~/.ssh/config вместо копипасты
Создай конфиг и закрой на него права:
nano ~/.ssh/config
chmod 600 ~/.ssh/config
Минимальный пример: алиас, юзер, ключ, нормальные keepalive
Host prod
HostName 95.215.56.62
User maga
IdentityFile ~/.ssh/id_ed25519
ServerAliveInterval 30
ServerAliveCountMax 3
Теперь подключение становится человеческим:
ssh prod
JumpHost: когда есть bastion
Если внутренняя машина доступна только через bastion, добавляешь ProxyJump.
Host bastion
HostName 1.2.3.4
User maga
IdentityFile ~/.ssh/id_ed25519
Host internal
HostName 10.95.0.10
User maga
IdentityFile ~/.ssh/id_ed25519
ProxyJump bastion
И заходишь одной командой, без матрёшки из ssh:
ssh internal
Ускоряем повторные ssh: ControlMaster
Когда ты делаешь 10 коннектов подряд, каждый новый handshake это боль, особенно через bastion. Мультиплексирование решает.
Host *
ControlMaster auto
ControlPath ~/.ssh/cm-%r@%h:%p
ControlPersist 10m
После этого повторные ssh internal ощущаются как телепорт.
Вывод
Ключи дают безопасность, а ~/.ssh/config даёт скорость и порядок. ProxyJump убирает матрёшку, ControlMaster убирает тормоза. Один раз настроил и дальше просто работаешь.
LinuxCamp | #utils
👍41🔥6❤🔥5👾4❤2🤔1🥱1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁75🤣25🔥7👍6❤2