Forwarded from Кирилл Жильников
Самый тупой баг
Рассказываю историю. Несколько дней назад я активно занимался деплоем своего "вайб-веб" приложения на сервак: переносил код и, самое ключевое, настраивал докер файлы. По указанной логике у нас при инициализации контейнера выполняется компиляция проекта:
Если все локально собирается, то и удаленно тоже должно (так мне изначально казалось). Для справки (потом будет очень важно):
Теперь давайте о проблеме:
— я выполняю на сервере "docker compose up --build -d app"
— у меня в конце срабатывает "npm run build"
— сборка на серваке падает с:
Проблема же, кажется, очевидная - не определяется импортируемый модуль. Значит, вероятно, что-то не так либо в экспорте, либо в пути до модуля.
Я смотрю структуру проекта на MacOS - такой путь существует, ну и сборка проходит успешно. Пытаюсь стучать в Cursor, он мне ничего дельного сначала не давал.
Потом.... Через часа 3 где-то, он решил посмотреть скрытый .git каталог и нашел, что названия каталогов на гите отличаются от нейминга на MacOS.
Проблема оказалась в том, что я на локальной системе поменял название каталога с "ui" на "UI", но в гит изменение не попало и на серваке лежал каталог "ui"!
А маку же все равно, для его FS каталоги UI и ui аналогичны. В linux же файловая система чувствительна к регистру, поэтому путь не определялся.
Такие дела. Итого, что я вам советую, друзья:
Рассказываю историю. Несколько дней назад я активно занимался деплоем своего "вайб-веб" приложения на сервак: переносил код и, самое ключевое, настраивал докер файлы. По указанной логике у нас при инициализации контейнера выполняется компиляция проекта:
CMD npm run build
Если все локально собирается, то и удаленно тоже должно (так мне изначально казалось). Для справки (потом будет очень важно):
у меня локальная работа идет на MacOS, сервак же - Linux (debain)
Теперь давайте о проблеме:
— я выполняю на сервере "docker compose up --build -d app"
— у меня в конце срабатывает "npm run build"
— сборка на серваке падает с:
Module not found: Can't resolve '@/app/components/UI/IconButtonn'
Проблема же, кажется, очевидная - не определяется импортируемый модуль. Значит, вероятно, что-то не так либо в экспорте, либо в пути до модуля.
Я смотрю структуру проекта на MacOS - такой путь существует, ну и сборка проходит успешно. Пытаюсь стучать в Cursor, он мне ничего дельного сначала не давал.
Потом.... Через часа 3 где-то, он решил посмотреть скрытый .git каталог и нашел, что названия каталогов на гите отличаются от нейминга на MacOS.
Проблема оказалась в том, что я на локальной системе поменял название каталога с "ui" на "UI", но в гит изменение не попало и на серваке лежал каталог "ui"!
А маку же все равно, для его FS каталоги UI и ui аналогичны. В linux же файловая система чувствительна к регистру, поэтому путь не определялся.
Такие дела. Итого, что я вам советую, друзья:
Обращайте внимание на файловые системы и, в целом, специфику ОС, с которыми вы работаете
👍51🔥18😁10✍4❤🔥2
rsync - железный инструмент для копирования
Главное преимущество rsync - он передаёт только изменённые части файлов. Если у тебя есть 100 ГБ данных и изменился один файл на 10 МБ, скопируется только этот кусок. Это экономит время и трафик, особенно при бэкапах или синхронизации между серверами.
Почему быстрее
В отличие от scp и cp, которые всегда переносят файл целиком, rsync использует алгоритм дельт. Он сравнивает файлы и гоняет только разницу. На больших проектах или медленных каналах это ускоряет процесс в разы.
Пример команды
– -a сохраняет структуру и права
– -v показывает процесс копирования
– -z сжимает данные при передаче
Полезные фишки
Вывод
rsync работает быстрее и экономнее, чем обычное scp, когда нужно не просто скопировать, а поддерживать актуальные копии данных. Он стал стандартом де-факто для бэкапов и синхронизации именно благодаря своей скорости и эффективности.
LinuxCamp | #utils
Главное преимущество rsync - он передаёт только изменённые части файлов. Если у тебя есть 100 ГБ данных и изменился один файл на 10 МБ, скопируется только этот кусок. Это экономит время и трафик, особенно при бэкапах или синхронизации между серверами.
Почему быстрее
В отличие от scp и cp, которые всегда переносят файл целиком, rsync использует алгоритм дельт. Он сравнивает файлы и гоняет только разницу. На больших проектах или медленных каналах это ускоряет процесс в разы.
Пример команды
rsync -avz /home/user/ user@server:/backup/
– -a сохраняет структуру и права
– -v показывает процесс копирования
– -z сжимает данные при передаче
Полезные фишки
# Сухой прогон (показать, что будет скопировано)
rsync -avzn /src/ /dst/
# Удалить лишнее в целевой папке
rsync -av --delete /src/ /dst/
Вывод
rsync работает быстрее и экономнее, чем обычное scp, когда нужно не просто скопировать, а поддерживать актуальные копии данных. Он стал стандартом де-факто для бэкапов и синхронизации именно благодаря своей скорости и эффективности.
LinuxCamp | #utils
👍71🔥15❤5
Торвальдс завез новое ядро - 6.17
Линус представил новую версию ядра. Она станет основой для осенних релизов: Ubuntu 25.10 и Fedora 43.
Что нового из интересного?
— файловая система Btrfs стала быстрее;
— добавлены системные вызовы file_getattr() и file_setattr();
— внедрены новые драйвера, собранные на Rust. Он у нас продолжает закрепляться как второй язык для разработки драйверов и модулей ядра;
— в драйверах расширена поддержка некоторых GPU: Qualcomm, Adreno, Mali;
— старая добрая EXT4 тоже не забыта и получила небольшие апдейты;
Если кому будет интересно, больше нововведений и правок у нас расписаны на OpenNet.
Что с 6.18?
Линус уже анонсировал работу над версией 6.18, которую ждём к концу года или началу следующего.
LinuxCamp | #news
Линус представил новую версию ядра. Она станет основой для осенних релизов: Ubuntu 25.10 и Fedora 43.
Что нового из интересного?
— файловая система Btrfs стала быстрее;
— добавлены системные вызовы file_getattr() и file_setattr();
— внедрены новые драйвера, собранные на Rust. Он у нас продолжает закрепляться как второй язык для разработки драйверов и модулей ядра;
— в драйверах расширена поддержка некоторых GPU: Qualcomm, Adreno, Mali;
— старая добрая EXT4 тоже не забыта и получила небольшие апдейты;
Если кому будет интересно, больше нововведений и правок у нас расписаны на OpenNet.
Что с 6.18?
Линус уже анонсировал работу над версией 6.18, которую ждём к концу года или началу следующего.
LinuxCamp | #news
🔥29❤8💊6🌭2🤔1
LVM и снапшоты: быстрый откат изменений
Если понимаешь что напортачишь на сервере, то лучше использовать стапшот. Благодаря этому можно вернуться без боли в интимных местах вернуть все как было.
Что такое LVM
LVM (Logical Volume Manager) - это слой между физическим диском и файловой системой. Он позволяет разбивать хранилище на гибкие логические тома, которые можно изменять на лету без перекатывания дисков.
Зачем нужны снапшоты
Снапшот - это снимок состояния тома в определённый момент времени. Он создаётся мгновенно и занимает мало места, так как хранит только изменения после создания.
Пример использования
Перед обновлением или экспериментами можно сделать снапшот:
Если что-то пошло не так можно вернуть систему в исходное состояние.
Важно помнить
- Снапшоты занимают место: если оно закончится, снапшот станет бесполезен.
- Это не замена полноценному бэкапу, а удобный способ быстро откатить изменения.
Вывод
LVM-снапшоты - мощный инструмент для админа. Они позволяют экспериментировать без страха сломать систему и экономят время на откатах.
LinuxCamp | #utils
Если понимаешь что напортачишь на сервере, то лучше использовать стапшот. Благодаря этому можно вернуться без боли в интимных местах вернуть все как было.
Что такое LVM
LVM (Logical Volume Manager) - это слой между физическим диском и файловой системой. Он позволяет разбивать хранилище на гибкие логические тома, которые можно изменять на лету без перекатывания дисков.
Зачем нужны снапшоты
Снапшот - это снимок состояния тома в определённый момент времени. Он создаётся мгновенно и занимает мало места, так как хранит только изменения после создания.
Пример использования
Перед обновлением или экспериментами можно сделать снапшот:
# создаём снапшот на 5G
lvcreate --size 5G --snapshot --name my_snap /dev/vg0/my_volume
# монтируем и работаем с ним
mount /dev/vg0/my_snap /mnt/snap
Если что-то пошло не так можно вернуть систему в исходное состояние.
Важно помнить
- Снапшоты занимают место: если оно закончится, снапшот станет бесполезен.
- Это не замена полноценному бэкапу, а удобный способ быстро откатить изменения.
Вывод
LVM-снапшоты - мощный инструмент для админа. Они позволяют экспериментировать без страха сломать систему и экономят время на откатах.
LinuxCamp | #utils
👍39❤12🔥8🤔1
YAST — пилот для openSUSE и SUSE
YaST (Yet another Setup Tool) — ваш персональный “центр управления полетами” для операционной системы.
Он позволяет настроить практически любые аспекты системы, минуя необходимость копаться в конфигурационных файлах и вводить бесконечные команды в терминале.
Что умеет:
— Настройка системы, пользователей и сети. Добавляй новых пользователей, меняй права, настраивай Wi-Fi, IP и DNS через понятное меню, без ручного редактирования.
— Управление пакетами и репозиториями. Устанавливай программы, подключай репозитории и следи за обновлениями.
— Разметка дисков и установка загрузчика. Хочешь разделить диск или поменять параметры загрузки? Всё можно сделать через удобный интерфейс.
— Службы, файрвол и безопасность. Контролируй, какие сервисы запускаются при старте системы, открывай нужные порты и регулируй уровень безопасности.
Примеры использования
Почему YaST важен:
YaST — это универсальный инструмент для администрирования openSUSE. Он значительно экономит время и делает настройку системы доступной для тех, кто предпочитает работать с GUI, а не с командной строкой.
LinuxCamp | #utils
YaST (Yet another Setup Tool) — ваш персональный “центр управления полетами” для операционной системы.
Он позволяет настроить практически любые аспекты системы, минуя необходимость копаться в конфигурационных файлах и вводить бесконечные команды в терминале.
Что умеет:
— Настройка системы, пользователей и сети. Добавляй новых пользователей, меняй права, настраивай Wi-Fi, IP и DNS через понятное меню, без ручного редактирования.
— Управление пакетами и репозиториями. Устанавливай программы, подключай репозитории и следи за обновлениями.
— Разметка дисков и установка загрузчика. Хочешь разделить диск или поменять параметры загрузки? Всё можно сделать через удобный интерфейс.
— Службы, файрвол и безопасность. Контролируй, какие сервисы запускаются при старте системы, открывай нужные порты и регулируй уровень безопасности.
Примеры использования
# Запуск основного интерфейса YaST в консоли
sudo yast
# Прямой вызов модуля настройки сети
sudo yast2 lan
# Прямой вызов модуля управления пользователями
sudo yast2 users
# Прямой вызов модуля настройки файрвола
sudo yast2 firewall
# Установка пакета nginx
sudo yast2 --install nginx
Почему YaST важен:
YaST — это универсальный инструмент для администрирования openSUSE. Он значительно экономит время и делает настройку системы доступной для тех, кто предпочитает работать с GUI, а не с командной строкой.
LinuxCamp | #utils
👍23❤6🔥5
Устанавливаем Docker на Ubuntu правильно
Просто копи паста в большинстве случаев будет достаточно. Если ты копировал случайные команды из форумов вроде "curl https://get.docker.com | sh", забудь. Так можно словить старую или небезопасную сборку.
Удаляем старые версии (если были)
Ставим зависимости
Добавляем официальный репозиторий Docker
Создаём папку под ключи:
Добавляем GPG-ключ Docker:
Добавляем репозиторий:
Устанавливаем Docker и Compose-плагины
Проверяем:
Если видишь строку вроде "Docker version 27.x.x", значит всё ок.
Разрешаем запуск Docker без sudo
После этого выйди из терминала и зайди снова. Проверяем:
Если всё работает — поздравляю, Docker установлен правильно и официально
Что не нужно делать
- Не устанавливай Docker через snap install docker - это урезанная версия.
- Не используй скрипты get.docker.com на продакшене.
- Не ставь docker.io это старая сборка из репозиториев Ubuntu.
Вывод
Эта инструкция полностью соответствует официальной документации Docker, можно просто скопировать все команды.
Ты получаешь последнюю стабильную версию Docker и Compose, всё обновляется из официального репозитория, и система останется чистой.
LinuxCamp | #utils #docker
Просто копи паста в большинстве случаев будет достаточно. Если ты копировал случайные команды из форумов вроде "curl https://get.docker.com | sh", забудь. Так можно словить старую или небезопасную сборку.
Удаляем старые версии (если были)
sudo apt remove docker docker-engine docker.io containerd runc
Ставим зависимости
sudo apt install ca-certificates curl gnupg lsb-release -y
Добавляем официальный репозиторий Docker
Создаём папку под ключи:
sudo mkdir -p /etc/apt/keyrings
Добавляем GPG-ключ Docker:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Добавляем репозиторий:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Устанавливаем Docker и Compose-плагины
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Проверяем:
docker --version
Если видишь строку вроде "Docker version 27.x.x", значит всё ок.
Разрешаем запуск Docker без sudo
sudo usermod -aG docker $USER
После этого выйди из терминала и зайди снова. Проверяем:
docker run hello-world
Если всё работает — поздравляю, Docker установлен правильно и официально
Что не нужно делать
- Не устанавливай Docker через snap install docker - это урезанная версия.
- Не используй скрипты get.docker.com на продакшене.
- Не ставь docker.io это старая сборка из репозиториев Ubuntu.
Вывод
Эта инструкция полностью соответствует официальной документации Docker, можно просто скопировать все команды.
Ты получаешь последнюю стабильную версию Docker и Compose, всё обновляется из официального репозитория, и система останется чистой.
LinuxCamp | #utils #docker
👍49🔥13❤11
Создание ssh-ключа: копипасти и не думай
Linux / macOS (bash, терминал)
Создать ключ (RSA, 4096 бит, стандартный путь
Нажми Enter, чтобы принять путь по умолчанию, при желании введи passphrase или оставь пустым. Далее добавить ключ в ssh-agent (рекомендуется, чтобы не вводить passphrase постоянно):
Копировать публичный ключ на сервер (самый простой вариант):
Если
Проверка подключения:
Windows (PowerShell, Windows 10/11 с OpenSSH)
Открыть PowerShell (не Git Bash), затем создать ключ:
Запустить агент и добавить ключ:
Скопировать публичный ключ на сервер (один вариант):
Проверка подключения:
Вывод
Теперь у вас есть ssh ключ для безопасного подключения к серверам.
LinuxCamp | #ssh
Linux / macOS (bash, терминал)
Создать ключ (RSA, 4096 бит, стандартный путь
~/.ssh/id_rsa):ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Нажми Enter, чтобы принять путь по умолчанию, при желании введи passphrase или оставь пустым. Далее добавить ключ в ssh-agent (рекомендуется, чтобы не вводить passphrase постоянно):
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
Копировать публичный ключ на сервер (самый простой вариант):
ssh-copy-id user@your_server
Если
ssh-copy-id нет, можно так:cat ~/.ssh/id_rsa.pub | ssh user@your_server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
Проверка подключения:
ssh user@your_server
# либо явно указать ключ
ssh -i ~/.ssh/id_rsa user@your_server
Windows (PowerShell, Windows 10/11 с OpenSSH)
Открыть PowerShell (не Git Bash), затем создать ключ:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# Нажми Enter несколько раз, чтобы принять путь по умолчанию (C:\Users\<User>\.ssh\id_rsa), при желании введи passphrase
Запустить агент и добавить ключ:
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_rsa
Скопировать публичный ключ на сервер (один вариант):
type $env:USERPROFILE\.ssh\id_rsa.pub | ssh user@your_server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
Проверка подключения:
ssh user@your_server
# или с явным ключом
ssh -i $env:USERPROFILE\.ssh\id_rsa user@your_server
Вывод
Теперь у вас есть ssh ключ для безопасного подключения к серверам.
LinuxCamp | #ssh
1👍30❤16🔥6😁1
Так вышла же новая Ubuntu 25.10!
Ребята из Canonical выпустили Questing Quokka. В целом, ничего революционного, но есть за что зацепиться глазом:
— Beta на базе ядра Linux 6.17
— Использует новое рабочее окружение GNOME 49, в котором разработчики окончательно отказались от поддержки сеансов на базе X11, сделав Wayland единственным вариантом
Это не значит, что X11-приложения остались без поддержки — для них используется XWayland
— Замена GNOME Terminal на Ptyxis (эмулятор терминала ориентирован на работу с контейнерами: Toolbox, Distrobox, Podman)
Радует высокой скоростью отрисовки благодаря Vulkan и OpenGL
— Замена GNU Coreutils на Rust Coreutils (uutils) и sudo на sudo-rs. Эти инструменты написаны на Rust
Вывод
Это НЕ LTS-версия. Её поддержат всего до июля 2026-го. Так что для серьёзных, если нужна стабильность и поддержка, можно использовать 24.04 (выпуск поддержки до апреля 2029 года).
Следующий LTS уже получил имя - Resolute Raccoon (Решительный Енот). Будет в апреле 2026.
LinuxCamp | #news
Ребята из Canonical выпустили Questing Quokka. В целом, ничего революционного, но есть за что зацепиться глазом:
— Beta на базе ядра Linux 6.17
— Использует новое рабочее окружение GNOME 49, в котором разработчики окончательно отказались от поддержки сеансов на базе X11, сделав Wayland единственным вариантом
Это не значит, что X11-приложения остались без поддержки — для них используется XWayland
— Замена GNOME Terminal на Ptyxis (эмулятор терминала ориентирован на работу с контейнерами: Toolbox, Distrobox, Podman)
Радует высокой скоростью отрисовки благодаря Vulkan и OpenGL
— Замена GNU Coreutils на Rust Coreutils (uutils) и sudo на sudo-rs. Эти инструменты написаны на Rust
Вывод
Это НЕ LTS-версия. Её поддержат всего до июля 2026-го. Так что для серьёзных, если нужна стабильность и поддержка, можно использовать 24.04 (выпуск поддержки до апреля 2029 года).
Следующий LTS уже получил имя - Resolute Raccoon (Решительный Енот). Будет в апреле 2026.
LinuxCamp | #news
👍25🔥8❤7💊5
Как выйти из vim не переустанавливая сервер?
vim - это встроенный в Linux текстовый редактор. Он есть почти везде и нужен, когда GUI-редакторов нет под рукой.
Как открыть и выйти
Ты попадаешь в Normal-режим, тут текст вводиться не будет, клавиши выполняют команды. Чтобы выйти:
(если что-то не работает нажми Esc и попробуй ещё раз).
Как редактировать
Чтобы начать печатать текст, надо перейти в Insert-режим, для этого достаточно нажать что-нибудь из этого:
Когда закончил редактирование нажми Esc, чтобы вернуться обратно в Normal.
Как двигаться
В Normal-режиме работают стрелки, но дляизвращенцев кого-то придумали:
А ещё (команды работают в Normal-режиме, нажмите Esc):
Как правитьк сожалению не миром
Полезная имба
Вывод
vim'ом оказывается можно пользоваться и без использования транквилизаторов, главное сначала разобраться :)
Ставь реакцию, если разобрался!
LinuxCamp | #utils
vim - это встроенный в Linux текстовый редактор. Он есть почти везде и нужен, когда GUI-редакторов нет под рукой.
Как открыть и выйти
vim file.txt
Ты попадаешь в Normal-режим, тут текст вводиться не будет, клавиши выполняют команды. Чтобы выйти:
:q — выйти
:q! — выйти без сохранения
:wq — сохранить и выйти
(если что-то не работает нажми Esc и попробуй ещё раз).
Как редактировать
Чтобы начать печатать текст, надо перейти в Insert-режим, для этого достаточно нажать что-нибудь из этого:
i — вставить перед курсором
a — вставить после курсора
o — вставить новую строку и остаться на ней
Когда закончил редактирование нажми Esc, чтобы вернуться обратно в Normal.
Как двигаться
В Normal-режиме работают стрелки, но для
h — влево j — вниз
k — вверх l — вправо
А ещё (команды работают в Normal-режиме, нажмите Esc):
0 — в начало строки
$ — в конец строки
gg — в начало файла
G — в конец файла
Как править
dd — удалить строку
yy — скопировать строку
p — вставить
u — отменить
Ctrl + r — вернуть отменённое
Полезная имба
:set number — показать номера строк
:syntax on — включить подсветку
Вывод
vim'ом оказывается можно пользоваться и без использования транквилизаторов, главное сначала разобраться :)
Ставь реакцию, если разобрался!
LinuxCamp | #utils
50👍111😁46🔥19❤13🤯5💔1
Все флаги курла! (почти)
Самые нужные флаги
1. -X - вставляешь метод запроса
2. -d - отправляешь данные (автоматически включает POST)
3. -H - заголовок (хедер, header)
4. -i / -I - показать заголовки ответа (-I - только их)
5. -L - следовать за редиректами
6. -o / -O - сохранить файл (-O - с оригинальным именем, -o <name.txt> - со своим именем)
7. -s - тихий режим (никаких прогресс-баров)
8. -v / -vvv - подробный вывод (диагностика)
9. -u - авторизация
10. -k - игнорировать SSL-ошибки (осторожно!)
Комбинируй флаги:
Вывод:
curl - твой HTTP-отладчик, загрузчик и дебаггер в одной команде. Освоишь 10 ключей и ты уже мастер.
LinuxCamp | #utils
Самые нужные флаги
1. -X - вставляешь метод запроса
curl -X POST https://api.site.com/data
2. -d - отправляешь данные (автоматически включает POST)
curl -d "name=Chirill&age=45" https://api.site.com/user
3. -H - заголовок (хедер, header)
curl -H "Authorization: Bearer TOKEN" https://api.site.com/me
4. -i / -I - показать заголовки ответа (-I - только их)
curl -I https://example.com
5. -L - следовать за редиректами
curl -L http://site.com
6. -o / -O - сохранить файл (-O - с оригинальным именем, -o <name.txt> - со своим именем)
curl -O https://example.com/file.zip
7. -s - тихий режим (никаких прогресс-баров)
curl -s https://example.com
8. -v / -vvv - подробный вывод (диагностика)
curl -v https://api.site.com
9. -u - авторизация
curl -u user:password https://site.org
10. -k - игнорировать SSL-ошибки (осторожно!)
curl -k https://selfsigned.local
Комбинируй флаги:
curl -s -L -H "Accept: application/json" https://api.exnode.ru/articles
Вывод:
curl - твой HTTP-отладчик, загрузчик и дебаггер в одной команде. Освоишь 10 ключей и ты уже мастер.
LinuxCamp | #utils
15👍53❤11🔥10
Почему же тормозит сервер...
Бывает, начинаешь замечать странные вещи: страницы грузятся медленно, CPU не забит, память вроде есть, а система еле дышит.
В таких случаях стандартные утилиты вроде htop бывают бессильны — нужен детальный разбор.
Я собрал 3 Bash-скрипта, которые помогают быстро найти виновника — будь то память, диск или сеть:
1. memory_analysis.sh — поиск аномалий памяти. Показывает не просто free -m, а:
— какие процессы реально жрут RAM (по RSS);
— кто держит «грязную» память, не сбрасывая её на диск;
— насколько система страдает от нехватки памяти (PSI).
2. io_analyzer.sh — анализ дискового I/O. Находит процессы, которые активно грузят диск, и показывает:
—статистику I/O по устройствам (iostat);
— кто пишет и читает больше всех (pidstat -dl);
— какие процессы открыли тысячи файлов или гигантские логи (>100MB).
3. network_analysis.sh — детектор сетевых аномалий. Помогает вычислить сетевые странности:
— кто держит слишком много соединений;
— какие процессы слушают нестандартные порты;
— где растёт число ошибок и сброшенных пакетов.
Итог:
Эти три скрипта — не замена Zabbix или Prometheus. Это лёгкий, но мощный инструмент диагностики для VPS и продов без сложных систем мониторинга.
LinuxCamp | #utils
Бывает, начинаешь замечать странные вещи: страницы грузятся медленно, CPU не забит, память вроде есть, а система еле дышит.
В таких случаях стандартные утилиты вроде htop бывают бессильны — нужен детальный разбор.
Я собрал 3 Bash-скрипта, которые помогают быстро найти виновника — будь то память, диск или сеть:
1. memory_analysis.sh — поиск аномалий памяти. Показывает не просто free -m, а:
— какие процессы реально жрут RAM (по RSS);
— кто держит «грязную» память, не сбрасывая её на диск;
— насколько система страдает от нехватки памяти (PSI).
Если растёт full в /proc/pressure/memory — всё, система уже задыхается.
2. io_analyzer.sh — анализ дискового I/O. Находит процессы, которые активно грузят диск, и показывает:
—статистику I/O по устройствам (iostat);
— кто пишет и читает больше всех (pidstat -dl);
— какие процессы открыли тысячи файлов или гигантские логи (>100MB).
Если %util ≈ 100% и await высокий — диск — узкое место.
3. network_analysis.sh — детектор сетевых аномалий. Помогает вычислить сетевые странности:
— кто держит слишком много соединений;
— какие процессы слушают нестандартные порты;
— где растёт число ошибок и сброшенных пакетов.
Полезно при подозрении на DDoS, утечки соединений или забытые сервисы.
Итог:
Эти три скрипта — не замена Zabbix или Prometheus. Это лёгкий, но мощный инструмент диагностики для VPS и продов без сложных систем мониторинга.
LinuxCamp | #utils
👍40🔥6👏4❤2
`>`, `2>`, `&1`, `2>&1` - что это вообще такое?
Эти команды и символы часто можно встретить в терминале или скриптах. Разбираем по порядку, что означает каждый знак, куда уходит вывод и почему от порядка зависит результат.
Стандартные потоки
Каждая команда в Linux работает с тремя потоками. Читает из stdin, пишет результат в stdout и выводит ошибки в stderr. Перенаправление (>, 2>, 2>&1) - это способ указать, куда именно должен идти каждый поток: в файл, в терминал или в никуда.
Символ '>' - направить вывод в файл
'>' создаёт (или перезаписывает) файл и отправляет туда стандартный вывод. Чтобы не затирать файл используйте '>>', он вставляет в конец:
Символ '2>' - то же самое, но для ошибок
Здесь '2' - это номер потока stderr. Ошибки уйдут в errors.txt, а обычный вывод останется в терминале.
Объединение потоков: '2>&1'
'2>&1' значит отправить ошибки ('2') туда же, куда идёт обычный вывод ('1'). Порядок важен! Если написать наоборот (2>&1 > all.txt), ошибки всё равно пойдут в консоль, потому что в момент перенаправления stdout ещё не указывает на файл.
Сокращённая запись: '&>'
Эквивалент предыдущей команды, оба потока в один файл. Работает только в bash и zsh. Если ваш скрипт должен выполняться в sh или dash, используйте классическую форму.
/dev/null - "чёрная дыра"
Команда выполняется, но вывод и ошибки никуда не сохраняются. Удобно для cron-задач, но не для отладки.
Вывод
Понимание потоков позволит писать устойчивые shell-скрипты и не терять данные.
LinuxCamp | #shell
Эти команды и символы часто можно встретить в терминале или скриптах. Разбираем по порядку, что означает каждый знак, куда уходит вывод и почему от порядка зависит результат.
Стандартные потоки
1 - stdout (нормальный вывод)
2 - stderr (ошибки)
Каждая команда в Linux работает с тремя потоками. Читает из stdin, пишет результат в stdout и выводит ошибки в stderr. Перенаправление (>, 2>, 2>&1) - это способ указать, куда именно должен идти каждый поток: в файл, в терминал или в никуда.
Символ '>' - направить вывод в файл
echo "hello" > log.txt
'>' создаёт (или перезаписывает) файл и отправляет туда стандартный вывод. Чтобы не затирать файл используйте '>>', он вставляет в конец:
echo "new line" >> log.txt
Символ '2>' - то же самое, но для ошибок
command 2> errors.txt
Здесь '2' - это номер потока stderr. Ошибки уйдут в errors.txt, а обычный вывод останется в терминале.
Объединение потоков: '2>&1'
command > all.txt 2>&1
'2>&1' значит отправить ошибки ('2') туда же, куда идёт обычный вывод ('1'). Порядок важен! Если написать наоборот (2>&1 > all.txt), ошибки всё равно пойдут в консоль, потому что в момент перенаправления stdout ещё не указывает на файл.
Сокращённая запись: '&>'
command &> all.txt
Эквивалент предыдущей команды, оба потока в один файл. Работает только в bash и zsh. Если ваш скрипт должен выполняться в sh или dash, используйте классическую форму.
/dev/null - "чёрная дыра"
command > /dev/null 2>&1
Команда выполняется, но вывод и ошибки никуда не сохраняются. Удобно для cron-задач, но не для отладки.
Вывод
Понимание потоков позволит писать устойчивые shell-скрипты и не терять данные.
LinuxCamp | #shell
👍60❤17🔥9🦄3🎉1
Да зачем проверять эти ваши ИИ агенты... И так же прекрасно справляются)
Чтоб не приходилось переводить:
LinuxCamp | #memes
Чтоб не приходилось переводить:
«ты создал каталог ~ в этом проекте… но ~ должна быть моей домашней директорией»
«о нет! ты совершенно прав! я создал каталог ~ вместо того, чтобы использовать твою реальную домашнюю директорию. Сейчас исправлю: rm -rf ~/»
LinuxCamp | #memes
😁82🔥11❤5👍5🤣4
Вышла Mobian 13.0! Debian на мобилу
Проект Mobian - дистрибутив, который превращает мобильные устройства в карманные компьютеры на базе Debian.
Теперь можно установить на поддерживаемые смартфоны и планшеты почти стоковый Debian с удобными мобильными оболочками: Phosh (на базе GNOME) или KDE Plasma Mobile.
Всё работает на ядре Linux 6.12 и пакетной базе свежего Debian 13.
Что нового в Mobian 13.0:
— Основа Debian 13 «Trixie»
— Современное ядро — для большинства устройств используется Linux 6.12.
— Обновлённые оболочки — Phosh 46.0 и KDE Plasma Mobile 6.3.
— Широкий список устройств: готовые образы есть для PinePhone, PinePhone Pro, Purism Librem 5, для популярных Android-смартфонов от Google, OnePlus и Xiaomi.
LinuxCamp | #news
Проект Mobian - дистрибутив, который превращает мобильные устройства в карманные компьютеры на базе Debian.
Теперь можно установить на поддерживаемые смартфоны и планшеты почти стоковый Debian с удобными мобильными оболочками: Phosh (на базе GNOME) или KDE Plasma Mobile.
Всё работает на ядре Linux 6.12 и пакетной базе свежего Debian 13.
Что нового в Mobian 13.0:
— Основа Debian 13 «Trixie»
— Современное ядро — для большинства устройств используется Linux 6.12.
— Обновлённые оболочки — Phosh 46.0 и KDE Plasma Mobile 6.3.
— Широкий список устройств: готовые образы есть для PinePhone, PinePhone Pro, Purism Librem 5, для популярных Android-смартфонов от Google, OnePlus и Xiaomi.
LinuxCamp | #news
👍42🔥14❤9🤔2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁73🔥17👍8❤5
Консольный проводник: broot
Интерактивная альтернатива ls и cd, которая показывает дерево директорий прямо в терминале, позволяет искать файлы на лету и мгновенно переходить в любую папку. Чтобы вместо бесконечных ls, cd, ls видеть всё дерево сразу, можно использовать broot.
Запуск команды
Откроется интерактивный интерфейс, где можно раскрывать папки, искать файлы по имени и тут же открывать их. Инструмент поддерживает вывод нескольких деревьев одновременно, а флаг -s добавляет отображение размеров каталогов, что удобно при анализе занимаемого места.
Быстрый переход
Одна клавиша и ты в нужной папке:
broot сам подставит нужную команду cd path/to/dir.
Поиск и фильтры
Встроенный фильтр работает так же удобно, как в ripgrep (rg): просто начинаешь печатать и дерево моментально сужается до нужных файлов.
Установка через cargo
Самый универсальный способ поставить через Rust:
Если будут проблемы с версией rust:
После установки добавь бинарь в PATH:
Вывод
broot - это tree, find, cd и fzf в одном флаконе. Благодаря встроенным фильтрам, поиску и отображению размеров папок он превращает терминал в файловый менеджер. Попробовать стоит, особенно если устал блуждать по ls и cd.
LinuxCamp | #utils
Интерактивная альтернатива ls и cd, которая показывает дерево директорий прямо в терминале, позволяет искать файлы на лету и мгновенно переходить в любую папку. Чтобы вместо бесконечных ls, cd, ls видеть всё дерево сразу, можно использовать broot.
Запуск команды
broot
Откроется интерактивный интерфейс, где можно раскрывать папки, искать файлы по имени и тут же открывать их. Инструмент поддерживает вывод нескольких деревьев одновременно, а флаг -s добавляет отображение размеров каталогов, что удобно при анализе занимаемого места.
Быстрый переход
Одна клавиша и ты в нужной папке:
:cd
broot сам подставит нужную команду cd path/to/dir.
Поиск и фильтры
Встроенный фильтр работает так же удобно, как в ripgrep (rg): просто начинаешь печатать и дерево моментально сужается до нужных файлов.
Установка через cargo
Самый универсальный способ поставить через Rust:
sudo apt install -y build-essential libxcb1-dev libxcb-render0-dev \
libxcb-shape0-dev libxcb-xfixes0-dev cargo
cargo install --locked broot
Если будут проблемы с версией rust:
curl https://sh.rustup.rs -sSf | sh -s -- -y
source $HOME/.cargo/env
rustup update stable
После установки добавь бинарь в PATH:
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
Вывод
broot - это tree, find, cd и fzf в одном флаконе. Благодаря встроенным фильтрам, поиску и отображению размеров папок он превращает терминал в файловый менеджер. Попробовать стоит, особенно если устал блуждать по ls и cd.
LinuxCamp | #utils
❤21👍16🔥6
Мониторинг с веб-версией за 1 команду
Когда нужно сделать серьезный мониторинг, пригодится инструмент, который показывает всё сразу: загрузку процессора, памяти, сети, дисков, температуру и даже Docker-контейнеры. Это glances.
Что это такое
glances - системный монитор с web-интерфейсом и консольным отображением из коробки. Он написан на Python, работает в Linux, macOS и Windows, и адаптируется под размер терминала, показывает ровно столько данных, сколько помещается.
Запуск
Откроется интерактивная панель, где видны все метрики системы в реальном времени.
Можно листать стрелками, сортировать процессы и даже отслеживать температуру и I/O.
Web-интерфейс
Можно смотреть метрики прямо из браузера:
После запуска открой http://<ip>:61208 и получишь панель мониторинга в реальном времени.
Установка
или, если хочешь последнюю версию:
Дополнительно
glances поддерживает экспорт данных в Prometheus, InfluxDB, Elasticsearch и MQTT, удобно для централизованного мониторинга.
Вывод
glances - это как htop, iostat, sensors и netstat в одном окне. Лёгкий, понятный и идеален, если хочешь быстро понять, что происходит с системой.
LinuxCamp | #utils
Когда нужно сделать серьезный мониторинг, пригодится инструмент, который показывает всё сразу: загрузку процессора, памяти, сети, дисков, температуру и даже Docker-контейнеры. Это glances.
Что это такое
glances - системный монитор с web-интерфейсом и консольным отображением из коробки. Он написан на Python, работает в Linux, macOS и Windows, и адаптируется под размер терминала, показывает ровно столько данных, сколько помещается.
Запуск
glances
Откроется интерактивная панель, где видны все метрики системы в реальном времени.
Можно листать стрелками, сортировать процессы и даже отслеживать температуру и I/O.
Web-интерфейс
Можно смотреть метрики прямо из браузера:
glances -w
После запуска открой http://<ip>:61208 и получишь панель мониторинга в реальном времени.
Установка
sudo apt install glances
или, если хочешь последнюю версию:
pip install glances
Дополнительно
glances поддерживает экспорт данных в Prometheus, InfluxDB, Elasticsearch и MQTT, удобно для централизованного мониторинга.
Вывод
glances - это как htop, iostat, sensors и netstat в одном окне. Лёгкий, понятный и идеален, если хочешь быстро понять, что происходит с системой.
LinuxCamp | #utils
👍37❤11🔥11
Куда делось место на диске?
Иногда du -h показывает тонны цифр, но понять, где заполнена память всё равно сложно. Для этого есть dust - современная замена du, которая красиво визуализирует использование диска прямо в терминале.
Что делает dust
Он сортирует директории по размеру и рисует дерево, где видно, кто занимает больше всего места.
Вывод читается с первого взгляда: чем глубже, тем меньше папка, а самая тяжёлая подсвечивается ярче.
Примеры
Показать топ по текущей директории:
Посчитать размер домашней папки без скрытых файлов:
Показать только верхние 10 результатов:
Установка
Вывод
dust - это du, которому сделали интерфейс для людей. Он помогает быстро понять, куда уходит место, и очистить диск без паники.
LinuxCamp | #utils
Иногда du -h показывает тонны цифр, но понять, где заполнена память всё равно сложно. Для этого есть dust - современная замена du, которая красиво визуализирует использование диска прямо в терминале.
Что делает dust
Он сортирует директории по размеру и рисует дерево, где видно, кто занимает больше всего места.
dust
Вывод читается с первого взгляда: чем глубже, тем меньше папка, а самая тяжёлая подсвечивается ярче.
Примеры
Показать топ по текущей директории:
dust .
Посчитать размер домашней папки без скрытых файлов:
dust -d 1 ~
Показать только верхние 10 результатов:
dust -n 10
Установка
sudo apt install dust
Вывод
dust - это du, которому сделали интерфейс для людей. Он помогает быстро понять, куда уходит место, и очистить диск без паники.
LinuxCamp | #utils
👍53🔥12❤11