Передать файл по одному слову
Можно передать файл, не зная IP, SSH-доступа или домена сервера получателя. Утилита croc сама установит защищённое соединение и мгновенно отправит файлы или текст прямо из терминала, используя шифрование и одноразовый код
Пример использования
Отправитель запускает:
После выводится одноразовый код. Получатель вводит:
И всё! Файл мгновенно передаётся по защищённому каналу P2P(крипта, арбитраж, темки) , без возни с адресами и ключами
Установка
Почему это круто
croc не требует FTP, SCP, VPN, использует end-to-end шифрование (AES-256), работает между любыми ОС и можно пересылать даже директории
Микро-лайфхак
Чтобы не палить одноразовый код в истории, запусти просто croc в терминале и введи код интерактивно. Но также можно команду с пробела (в большинстве shell-ов это не сохранит её в history)
Вывод:
croс - гига-удобная утилита для передачи файлов вообще ничего не понимая в этой жизни, нужно написать 2 очень простые команды и очень аккуратно скопировать и вставить одноразовый код.
Выключайте мозги, товарищи! Скоро ai нас уничтожит и мозги нам не понадобятся
LinuxCamp | #utils
Можно передать файл, не зная IP, SSH-доступа или домена сервера получателя. Утилита croc сама установит защищённое соединение и мгновенно отправит файлы или текст прямо из терминала, используя шифрование и одноразовый код
Пример использования
Отправитель запускает:
croc send magadrovosex.omg
После выводится одноразовый код. Получатель вводит:
croc <выданный код>
И всё! Файл мгновенно передаётся по защищённому каналу P2P
Установка
curl https://getcroc.schollz.com | bash
Почему это круто
croc не требует FTP, SCP, VPN, использует end-to-end шифрование (AES-256), работает между любыми ОС и можно пересылать даже директории
Микро-лайфхак
Чтобы не палить одноразовый код в истории, запусти просто croc в терминале и введи код интерактивно. Но также можно команду с пробела (в большинстве shell-ов это не сохранит её в history)
Вывод:
croс - гига-удобная утилита для передачи файлов вообще ничего не понимая в этой жизни, нужно написать 2 очень простые команды и очень аккуратно скопировать и вставить одноразовый код.
Выключайте мозги, товарищи! Скоро ai нас уничтожит и мозги нам не понадобятся
LinuxCamp | #utils
6🤔33❤11🔥6👍4🐳2🙈1
Open 3D Engine 25.10
Немного вводных
Open 3D Engine - игровой движок, пригодный для разработки современных игр класса AAA и высокоточных симуляторов.
Исходный код движка O3DE был открыт в июле 2021 года компанией Amazon, сам код написан на C++.
Из нового в 25.10 (для linux)
— Размер установочного пакета сокращён на 40%
— Обеспечена совместимость со стандартом C++ 20
— MOC (Masked Occlusion Culling) экономит ресурсы, не рисуя то, что перекрыто другими объектами
— Motion Blur добавляет размытие для движущихся объектов
— В модуль OpenXR добавлены компоненты для контроллеров виртуальной реальности
Детальная статья по ссылке
LinuxCamp | #news
Немного вводных
Open 3D Engine - игровой движок, пригодный для разработки современных игр класса AAA и высокоточных симуляторов.
Исходный код движка O3DE был открыт в июле 2021 года компанией Amazon, сам код написан на C++.
Из нового в 25.10 (для linux)
— Размер установочного пакета сокращён на 40%
— Обеспечена совместимость со стандартом C++ 20
— MOC (Masked Occlusion Culling) экономит ресурсы, не рисуя то, что перекрыто другими объектами
— Motion Blur добавляет размытие для движущихся объектов
— В модуль OpenXR добавлены компоненты для контроллеров виртуальной реальности
Детальная статья по ссылке
LinuxCamp | #news
👍22🔥10❤5🥴1
This media is not supported in your browser
VIEW IN TELEGRAM
И все это для того, чтобы при загрузке произошёл очередной "Kernel panic", и надо было подключить ноутбук с Windows, чтобы найти решение.
Особенно актуально для любителей Арча))
LinuxCamp | #memes
Особенно актуально для любителей Арча))
LinuxCamp | #memes
1😁41👍12❤7🤪1💊1
Менеджер паролей для linux
Если не хочешь хранить пароли в .env или светить их в коде, попробуй pass. Это минималистичный менеджер паролей, который хранит каждый пароль в отдельном GPG-файле, зашифрованном твоим GPG-ключом.
Установка:
Команда pass init связывает хранилище с твоим ключом, только им можно будет расшифровать пароли.
Добавление и просмотр:
Пароли лежат в ~/.password-store. Это обычные файлы, но зашифрованные GPG. Структура каталогов повторяет иерархию имён, поэтому всё выглядит логично и читаемо.
Использование в скриптах:
Так можно передавать пароли в CI или автоматизацию без риска утечек, они подгружаются только во время выполнения.
pass легко интегрируется в CI, shell-скрипты и git. Все шифруется твоим ключом, все под твоим контролем.
LinuxCamp | #utils
Если не хочешь хранить пароли в .env или светить их в коде, попробуй pass. Это минималистичный менеджер паролей, который хранит каждый пароль в отдельном GPG-файле, зашифрованном твоим GPG-ключом.
Установка:
sudo apt install pass gpg
gpg --gen-key
pass init <имя_ключа>
Команда pass init связывает хранилище с твоим ключом, только им можно будет расшифровать пароли.
Добавление и просмотр:
pass insert github.com
pass show github.com
Пароли лежат в ~/.password-store. Это обычные файлы, но зашифрованные GPG. Структура каталогов повторяет иерархию имён, поэтому всё выглядит логично и читаемо.
Использование в скриптах:
Так можно передавать пароли в CI или автоматизацию без риска утечек, они подгружаются только во время выполнения.
#!/bin/bash
DOCKER_PASS=$(pass show dev/docker)
echo "$DOCKER_PASS" | docker login -u myuser --password-stdin
pass легко интегрируется в CI, shell-скрипты и git. Все шифруется твоим ключом, все под твоим контролем.
LinuxCamp | #utils
1👍32🔥17❤7🥴1
Запуск Windows-приложений на Linux: Wine
Если ты сидишь на Linux, но время от времени нуждаешься в каких-нибудь программах, которые есть только под винде — используй Wine
Он ничего не эмулирует, он транслирует код из одной среды, в другую - переводит вызовы Windows API в POSIX-вызовы "на лету" — из-за этого программы работают быстрее и потребляют меньше ресурсов.
Проект запустили ещё в 1993 году, а стабильный релиз вышел в 2008. Это полностью открытое ПО, которое поддерживают компании вроде CodeWeavers.
Важно что:
— не всё работает идеально, иногда придётся повозиться с настройками
— стабильность зависит от конкретной программы и драйверов
Подробный гайд по установке и использованию wine.
LinuxCamp | #utils
Если ты сидишь на Linux, но время от времени нуждаешься в каких-нибудь программах, которые есть только под винде — используй Wine
Он ничего не эмулирует, он транслирует код из одной среды, в другую - переводит вызовы Windows API в POSIX-вызовы "на лету" — из-за этого программы работают быстрее и потребляют меньше ресурсов.
Отсюда и следует его полное название, которое является акронимом - Wine Is Not an Emulator.
Проект запустили ещё в 1993 году, а стабильный релиз вышел в 2008. Это полностью открытое ПО, которое поддерживают компании вроде CodeWeavers.
Важно что:
— не всё работает идеально, иногда придётся повозиться с настройками
— стабильность зависит от конкретной программы и драйверов
Подробный гайд по установке и использованию wine.
LinuxCamp | #utils
🔥26❤9👍9🤔2
perf: микроскоп для производительности ядра
perf - инструмент, встроенный прямо в ядро Linux. Он показывает, куда утекает производительность: какие функции жрут CPU, сколько контекстных переключений, какие системные вызовы самые медленные. Не требует установки пакетов, а просто:
и ты видишь, где реально горит процессор.
Замер производительности программы
Хочешь понять, где тормозит твой код запускаешь:
Первая команда собирает стек вызовов с нагрузкой. Вторая показывает отчёт: на какие функции ушло больше всего времени.
Анализ системных вызовов
Чтобы увидеть, что делает процесс на уровне ядра:
Выведет количество системных вызовов, переключений контекста и кэшей. Это то, что top не покажет.
Вывод
perf - инструмент, который показывает, чем занята твоя система. Его используют, когда нужно найти горячие участки кода, понять, куда уходит процессорное время в базе данных, или оптимизировать Nginx и PostgreSQL под реальные боевые нагрузки.
LinuxCamp | #utils
perf - инструмент, встроенный прямо в ядро Linux. Он показывает, куда утекает производительность: какие функции жрут CPU, сколько контекстных переключений, какие системные вызовы самые медленные. Не требует установки пакетов, а просто:
sudo perf top
и ты видишь, где реально горит процессор.
Замер производительности программы
Хочешь понять, где тормозит твой код запускаешь:
sudo perf record -g ./my_program
sudo perf report
Первая команда собирает стек вызовов с нагрузкой. Вторая показывает отчёт: на какие функции ушло больше всего времени.
Анализ системных вызовов
Чтобы увидеть, что делает процесс на уровне ядра:
sudo perf stat -p $(pidof nginx)
Выведет количество системных вызовов, переключений контекста и кэшей. Это то, что top не покажет.
Вывод
perf - инструмент, который показывает, чем занята твоя система. Его используют, когда нужно найти горячие участки кода, понять, куда уходит процессорное время в базе данных, или оптимизировать Nginx и PostgreSQL под реальные боевые нагрузки.
LinuxCamp | #utils
2🔥46👍18❤7
Как поделиться терминалом по ссылке и без SSH?
ttyd - утилита, которая превращает твой терминал в веб-страницу. Запускаешь одну команду и можешь открыть консоль прямо в браузере.
Установка
Открываешь http://<ip>:7681 и видишь свой терминал в браузере. По умолчанию он только для чтения, но если добавить флаг -W, можно делать его интерактивным.
Зачем это нужно
С ttyd можно делиться консолью на демо, показывать командам CI, смотреть логи контейнеров или следить за своим ИИ-агентом прямо с телефона через Tailscale - без SSH и без клиента. Например:
Теперь логи бекенда доступны по ссылке
Один терминал для всех
Чтобы все видели одну и ту же сессию (а не каждый свой терминал), можно обернуть в tmux:
Теперь все участники смотрят один экран. Добавь -W, если хочешь дать им право писать команды.
Вывод
ttyd превращает обычный shell в веб-интерфейс без SSH. Но нельзя забывать о безопасности! Не давайте права на запись кому попало.
LinuxCamp | #utils
ttyd - утилита, которая превращает твой терминал в веб-страницу. Запускаешь одну команду и можешь открыть консоль прямо в браузере.
Установка
sudo snap install ttyd --classic
ttyd bash
Открываешь http://<ip>:7681 и видишь свой терминал в браузере. По умолчанию он только для чтения, но если добавить флаг -W, можно делать его интерактивным.
Зачем это нужно
С ttyd можно делиться консолью на демо, показывать командам CI, смотреть логи контейнеров или следить за своим ИИ-агентом прямо с телефона через Tailscale - без SSH и без клиента. Например:
ttyd -p 7681 sh -lc 'docker logs -f backend'
Теперь логи бекенда доступны по ссылке
Один терминал для всех
Чтобы все видели одну и ту же сессию (а не каждый свой терминал), можно обернуть в tmux:
tmux new -s demo
ttyd tmux attach -t demo
Теперь все участники смотрят один экран. Добавь -W, если хочешь дать им право писать команды.
Вывод
ttyd превращает обычный shell в веб-интерфейс без SSH. Но нельзя забывать о безопасности! Не давайте права на запись кому попало.
LinuxCamp | #utils
1👍44🔥8❤6
This media is not supported in your browser
VIEW IN TELEGRAM
Умный CLI файловый менеджер: nnn
nnn - миниатюрный, но мощный терминальный файловый менеджер, который почти не требует настройки:
— Управляется с клавиатуры: стрелки, / для поиска, Tab для контекстов, q для выхода
— Поддерживает фильтрацию, пакетное переименование, анализ диска, закладки и сессии
— Интегрируется с Vim/Neovim, копирует пути в буфер, умеет работать с архивами и отправлять файлы в корзину
— Работает везде: Linux, macOS, BSD, Windows (WSL), Haiku, Termux (Android)
— Приватный, POSIX-совместимый, без сбора данных и лишних зависимостей
— Расширяется плагинами: превью, миниатюры, монтирование, загрузка в облако и многое другое
Совет:
Если вы сильно привыкли к ls, делаем alias и используем nnn:
Ссылки:
1) GitHub проекта
2) Туториал по использованию тулзы
LinuxCamp | #utils
nnn - миниатюрный, но мощный терминальный файловый менеджер, который почти не требует настройки:
— Управляется с клавиатуры: стрелки, / для поиска, Tab для контекстов, q для выхода
— Поддерживает фильтрацию, пакетное переименование, анализ диска, закладки и сессии
— Интегрируется с Vim/Neovim, копирует пути в буфер, умеет работать с архивами и отправлять файлы в корзину
— Работает везде: Linux, macOS, BSD, Windows (WSL), Haiku, Termux (Android)
— Приватный, POSIX-совместимый, без сбора данных и лишних зависимостей
— Расширяется плагинами: превью, миниатюры, монтирование, загрузка в облако и многое другое
Совет:
Если вы сильно привыкли к ls, делаем alias и используем nnn:
alias ls='nnn -de'
Ссылки:
1) GitHub проекта
2) Туториал по использованию тулзы
LinuxCamp | #utils
👍33🔥12❤4❤🔥1
fio: тестируем скорость дисков
Что делает fio:
fio - утилита для нагрузочного тестирования ввода-вывода (input-output). Она показывает, сколько твой диск реально выдаёт: IOPS, MB/s и latency при разных сценариях чтения и записи.
Установка:
Пример проверки скорости:
fio создаёт четыре параллельных задачи, которые читают случайные блоки по 4 KB из 1 GB файла в течение 30 секунд, используя движок io_uring. Результат: сколько твой диск может обработать случайных операций за секунду.
Зачем это нужно:
Когда настраиваешь базу данных, файловый сервер или просто хочешь понять, стоит ли менять SSD, то fio покажет, где узкое место: в скорости, в задержках или в количестве параллельных операций.
Вывод:
fio - это конкретные цифры, по который можно делать выводы, основанные не на ощущениях. С ним легко увидеть, насколько быстро твоя система справляется с реальной нагрузкой.
LinuxCamp | #utils
Что делает fio:
fio - утилита для нагрузочного тестирования ввода-вывода (input-output). Она показывает, сколько твой диск реально выдаёт: IOPS, MB/s и latency при разных сценариях чтения и записи.
Установка:
sudo apt install fio -y
Пример проверки скорости:
fio --name=test \
--ioengine=io_uring \
--rw=randread \
--bs=4k \
--size=1G \
--numjobs=4 \
--runtime=30s \
--group_reporting
fio создаёт четыре параллельных задачи, которые читают случайные блоки по 4 KB из 1 GB файла в течение 30 секунд, используя движок io_uring. Результат: сколько твой диск может обработать случайных операций за секунду.
Зачем это нужно:
Когда настраиваешь базу данных, файловый сервер или просто хочешь понять, стоит ли менять SSD, то fio покажет, где узкое место: в скорости, в задержках или в количестве параллельных операций.
Вывод:
fio - это конкретные цифры, по который можно делать выводы, основанные не на ощущениях. С ним легко увидеть, насколько быстро твоя система справляется с реальной нагрузкой.
LinuxCamp | #utils
🔥33👍13❤4
Нет места, а оно есть
du/dh показывает, что место в файловой системе еще есть, а записать ничего не возможно, т.к. нет места.
Места полно, а записать нельзя
Симптом:
df -h показывает, что место есть, а при записи: "No space left on device".
Почему так бывает
Когда удаляешь файл, его данные не исчезают мгновенно. Если какой-то процесс всё ещё держит открытый дескриптор на этот файл, ядро не освобождает место, пока процесс не закроет его. Получается: файла вроде нет, а гигабайты всё ещё заняты.
Как проверить
Посмотреть, кто держит удалённые файлы:
или покороче:
В списке найдёшь процессы и пути к призрачным файлам.
Как починить
Заверши процесс, который держит файл:
или перезапусти службу, если это, например, nginx, postgres или docker. После этого место действительно освободится.
Вывод
Удалённый файл жив, пока его кто-то держит. df/du не всегда дают полную реальную картину происходящего.
LinuxCamp | #storage
du/dh показывает, что место в файловой системе еще есть, а записать ничего не возможно, т.к. нет места.
Места полно, а записать нельзя
Симптом:
df -h показывает, что место есть, а при записи: "No space left on device".
Почему так бывает
Когда удаляешь файл, его данные не исчезают мгновенно. Если какой-то процесс всё ещё держит открытый дескриптор на этот файл, ядро не освобождает место, пока процесс не закроет его. Получается: файла вроде нет, а гигабайты всё ещё заняты.
Как проверить
Посмотреть, кто держит удалённые файлы:
lsof | grep deleted
или покороче:
lsof +L1
В списке найдёшь процессы и пути к призрачным файлам.
Как починить
Заверши процесс, который держит файл:
kill -9 <pid>
или перезапусти службу, если это, например, nginx, postgres или docker. После этого место действительно освободится.
Вывод
Удалённый файл жив, пока его кто-то держит. df/du не всегда дают полную реальную картину происходящего.
LinuxCamp | #storage
2🔥36👍23❤5
Когда процессу не дают дышать
Симптом:
Приложение падает с ошибкой, а ты смотришь вроде ресурсов полно.
Виноват ulimit
Каждый процесс в Linux живёт в рамках ограничений ядра - ulimits. Одно из них nofile, максимум открытых файловых дескрипторов. Файл, сокет, pipe - всё это дескрипторы.
Посмотреть текущие лимиты:
увидишь, например:
Это значит, что твой процесс не может держать больше 1024 открытых файлов и соединений.
Как увеличить
Иногда это нужно для высоконагруженных сервисов, например, база данных, reverse-proxy или API, который держит тысячи открытых соединений. Если лимит слишком маленький, то приложение начнёт падать на пике трафика.
Временно (для текущей сессии):
Навсегда — в
Если сервис под systemd, добавь в unit-файл:
и перезапусти:
Осторожно с лимитами
Увеличивать можно, но без фанатизма. Слишком высокий nofile при множестве активных процессов может съесть память и дескрипторы ядра, Особенно если приложение не закрывает файлы корректно. Поэтому лучше провести ревизию приложения вначале.
Вывод
Too many open files - это не баг, а защита ядра. Если приложение задыхается, то можно увеличить лимиты. Главное понимать почему в приложении появляется данная проблема
LinuxCamp | #utils
Симптом:
Приложение падает с ошибкой, а ты смотришь вроде ресурсов полно.
Too many open files
Виноват ulimit
Каждый процесс в Linux живёт в рамках ограничений ядра - ulimits. Одно из них nofile, максимум открытых файловых дескрипторов. Файл, сокет, pipe - всё это дескрипторы.
Посмотреть текущие лимиты:
ulimit -n
увидишь, например:
1024
Это значит, что твой процесс не может держать больше 1024 открытых файлов и соединений.
Как увеличить
Иногда это нужно для высоконагруженных сервисов, например, база данных, reverse-proxy или API, который держит тысячи открытых соединений. Если лимит слишком маленький, то приложение начнёт падать на пике трафика.
Временно (для текущей сессии):
ulimit -n 65535
Навсегда — в
/etc/security/limits.conf или /etc/systemd/system.conf:
* soft nofile 65535
* hard nofile 65535
Если сервис под systemd, добавь в unit-файл:
[Service]
LimitNOFILE=65535
и перезапусти:
systemctl daemon-reexec
systemctl restart <service>
Осторожно с лимитами
Увеличивать можно, но без фанатизма. Слишком высокий nofile при множестве активных процессов может съесть память и дескрипторы ядра, Особенно если приложение не закрывает файлы корректно. Поэтому лучше провести ревизию приложения вначале.
Вывод
Too many open files - это не баг, а защита ядра. Если приложение задыхается, то можно увеличить лимиты. Главное понимать почему в приложении появляется данная проблема
LinuxCamp | #utils
🔥27👍14❤7❤🔥1
ИИ добрался и до операционок: SUSE и Red Hat
Enterprise-лидеры встраивают ИИ в основу операционной системы. Новые фичи на примере недавнего анонса SUSE:
— MCP (Model Context Protocol) — реализовали открытый стандарт связи ИИ с системой.
— ИИ может действовать: читать логи, предлагать/выполнять откаты, генерить конфиги — через Cockpit или CLI.
— Поддержка любого LLM-провайдера. Можно использовать свои модели.
Что будет?
Вот так будет выглядеть пример взаимодействия с ОС, к которому мы идем:
— ИИ анализирует "journalctl, nginx -t, ss -tulpn, df -h" и выводит:
LinuxCamp | #news
Enterprise-лидеры встраивают ИИ в основу операционной системы. Новые фичи на примере недавнего анонса SUSE:
— MCP (Model Context Protocol) — реализовали открытый стандарт связи ИИ с системой.
— ИИ может действовать: читать логи, предлагать/выполнять откаты, генерить конфиги — через Cockpit или CLI.
— Поддержка любого LLM-провайдера. Можно использовать свои модели.
Что будет?
Вот так будет выглядеть пример взаимодействия с ОС, к которому мы идем:
$ ai-troubleshoot nginx
— ИИ анализирует "journalctl, nginx -t, ss -tulpn, df -h" и выводит:
«Порт 80 занят apache2... Остановить apache и перезапустить nginx?»
LinuxCamp | #news
🤔24👍10👾5🤯2😐2👏1
Насчет небезопасной памяти не в курсе, но точно знаю, что в одной комнате тут есть причина множества багов в тулзах, которые переписывают на Rust)
Из нового: замена в дистрибутиве Ubuntu 25.10 инструментария GNU Coreutils на Rust Coreutils (uutils) привела к нарушению работы скрипта для автоматической проверки наличия обновлений пакетов.
Инициатива наказуема)
LinuxCamp | #news
Из нового: замена в дистрибутиве Ubuntu 25.10 инструментария GNU Coreutils на Rust Coreutils (uutils) привела к нарушению работы скрипта для автоматической проверки наличия обновлений пакетов.
Инициатива наказуема)
LinuxCamp | #news
😁32👍10
Сборка дистра по исходникам: Linux From Scratch
Что такое LFS?
Это руководство, где ты собираешь рабочую систему вручную: от компиляции ядра до настройки загрузчика и пользовательских утилит.
Зачем это нужно?
— Глубокое понимание структуры Linux: /bin, /sbin, /etc, init, systemd, libc, toolchain…
— Полный контроль: только то, что ты выбрал — никаких лишних пакетов и зависимостей.
— Основа для своих embedded-проектов, роутеров, серверов или учебных систем.
После LFS можно пойти дальше: Beyond Linux From Scratch (BLFS) — добавляй графику, браузеры, DE и даже Docker
Это не про эффективность, а про понимание - как варить кофе в турке, когда все вокруг используют кофемашины)
LinuxCamp | #resources
Что такое LFS?
Это руководство, где ты собираешь рабочую систему вручную: от компиляции ядра до настройки загрузчика и пользовательских утилит.
Зачем это нужно?
— Глубокое понимание структуры Linux: /bin, /sbin, /etc, init, systemd, libc, toolchain…
— Полный контроль: только то, что ты выбрал — никаких лишних пакетов и зависимостей.
— Основа для своих embedded-проектов, роутеров, серверов или учебных систем.
После LFS можно пойти дальше: Beyond Linux From Scratch (BLFS) — добавляй графику, браузеры, DE и даже Docker
Это не про эффективность, а про понимание - как варить кофе в турке, когда все вокруг используют кофемашины)
LinuxCamp | #resources
👍43🔥10❤2
Одна ошибка и ты ошибся: Suicide Linux
Suicide Linux – это не полноценный дистрибутив, а Debian пакет, который наказывает пользователя за любые опечатки в командах удалением данных с диска:
LinuxCamp | #resources
Suicide Linux – это не полноценный дистрибутив, а Debian пакет, который наказывает пользователя за любые опечатки в командах удалением данных с диска:
sudo rm -rf /
"Это уже шестой раз, когда я переустанавливаю систему... Прощай, suicide linux!"
sudo atp remove suicide-linux
"О нет, опять"
LinuxCamp | #resources
1🤣66❤5😁5🙈2
Когда память закончилась, но сервер ещё живёт
Сценарий:
На голом сервере запущен сервис с утечкой памяти. Что произойдёт, когда память закончится?
Если включён swap
Система начнёт выгружать редко используемые страницы в своп, по сути, использовать диск как "медленную память". Процессы будут жить, но всё станет жутко медленным - диск вместо оперативы и большие задержки.
Посмотреть, включён ли swap:
или просто:
Если swap выключен
Когда физическая память закончится, ядро запустит OOM Killer (Out Of Memory Killer) - это специальный механизм, который выбирает и убивает процессы, чтобы высвободить память. Умрёт не обязательно твой сервис, система решает сама, кого "пожертвовать", ориентируясь на приоритет oom_score.
Посмотреть, как она видит твоё приложение:
Как OOM выбирает жертву
Он не смотрит на виртуальную память, а только на реально используемую (resident set size, RSS). Именно физическая память решает, кому жить, а кому нет.
Вывод
Если память утекает Linux не спасёт, он просто решит, кого первым застрелить. Swap продлит агонию, OOM поставит точку.
LinuxCamp | #storage #ram
Сценарий:
На голом сервере запущен сервис с утечкой памяти. Что произойдёт, когда память закончится?
Если включён swap
Система начнёт выгружать редко используемые страницы в своп, по сути, использовать диск как "медленную память". Процессы будут жить, но всё станет жутко медленным - диск вместо оперативы и большие задержки.
Посмотреть, включён ли swap:
swapon --show
или просто:
free -h
Если swap выключен
Когда физическая память закончится, ядро запустит OOM Killer (Out Of Memory Killer) - это специальный механизм, который выбирает и убивает процессы, чтобы высвободить память. Умрёт не обязательно твой сервис, система решает сама, кого "пожертвовать", ориентируясь на приоритет oom_score.
Посмотреть, как она видит твоё приложение:
cat /proc/<pid>/oom_score
Как OOM выбирает жертву
Он не смотрит на виртуальную память, а только на реально используемую (resident set size, RSS). Именно физическая память решает, кому жить, а кому нет.
Вывод
Если память утекает Linux не спасёт, он просто решит, кого первым застрелить. Swap продлит агонию, OOM поставит точку.
LinuxCamp | #storage #ram
👍33❤8🔥7
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥63😁31👍7💯4💊2❤1
101-я причина отсутствия памяти: коротко про inode
В ext-файловых системах может случиться так: df -h показывает много свободного места, но создать файл нельзя. Причина в том, что закончились inode.
Что такое inode
Файл в Linux состоит из данных и его описания. Данные лежат в блоках, а описание в inode. В inode хранятся права, владелец и номера блоков с данными.
Посмотреть inode файла:
Почему место может закончиться при свободных гигабайтах
Свободное место и количество inode это разные вещи. Ext2/3/4 создают inode один раз при форматировании. Один файл -> один inode.
Проверка:
Типичная ситуация:
Свободные блоки есть, а inode закончились, получается новый файл создать нельзя.
Что делать
Понять, что именно упёрлось: место или inode. Если упёрлось в inode, вариантов немного. На ext увеличить их нельзя. Только удалить мелкие файлы или переделать файловую систему.
Резервные блоки ext
Ext по умолчанию скрывает около 5% места под root. Иногда это десятки гигабайт.
Посмотреть:
Временно отключить:
Вывод
Если прод внезапно перестал писать, а df -h показывает свободное место — сразу смотри df -i. Чаще всего именно inode закончились первыми. В xfs и btrfs такая ситуация почти не встречается, потому что inode там создаются динамически, а не заранее.
LinuxCamp | #storage
В ext-файловых системах может случиться так: df -h показывает много свободного места, но создать файл нельзя. Причина в том, что закончились inode.
Что такое inode
Файл в Linux состоит из данных и его описания. Данные лежат в блоках, а описание в inode. В inode хранятся права, владелец и номера блоков с данными.
Посмотреть inode файла:
ls -li
Почему место может закончиться при свободных гигабайтах
Свободное место и количество inode это разные вещи. Ext2/3/4 создают inode один раз при форматировании. Один файл -> один inode.
Проверка:
df -h # место
df -i # inode
Типичная ситуация:
df -h → свободно 20G
df -i → 0 свободных inode
Свободные блоки есть, а inode закончились, получается новый файл создать нельзя.
Что делать
Понять, что именно упёрлось: место или inode. Если упёрлось в inode, вариантов немного. На ext увеличить их нельзя. Только удалить мелкие файлы или переделать файловую систему.
Резервные блоки ext
Ext по умолчанию скрывает около 5% места под root. Иногда это десятки гигабайт.
Посмотреть:
tune2fs -l /dev/sdX1 | grep 'Reserved block'
Временно отключить:
sudo tune2fs -m 0 /dev/sdX1
Вывод
Если прод внезапно перестал писать, а df -h показывает свободное место — сразу смотри df -i. Чаще всего именно inode закончились первыми. В xfs и btrfs такая ситуация почти не встречается, потому что inode там создаются динамически, а не заранее.
LinuxCamp | #storage
👍36❤10🔥5😍1
