LinuxCamp | DevOps – Telegram
LinuxCamp | DevOps
14.1K subscribers
196 photos
7 videos
301 links
Обо мне: C/C++/Linux эксперт. Говорим про разработку, Linux, DevOps, сети и администрирование.

Админ (реклама): @XoDefender
Чат: @linuxcamp_chat

Менеджер: @Spiral_Yuri
Биржа: https://telega.in/c/linuxcamp_tg

№ 6327102672
Download Telegram
PewDiePie-технарь в деле 🤯

PewDiePie завёл GitHub и выкатил свои dotfiles для Arch (Hyprland). Оконный менеджер прям хорошо выглядит, смахивает на fallout.

README проекта встречает нас надписью «Добро пожаловать, командир» (почему-то на русском).

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

Репозиторий: pewdiepie-archdaemon/dionysus

LinuxCamp | #news #memes
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4112👍10🤪4❤‍🔥1
Тест скорости сети одной командой

Запуск без установки:

Иногда нужно быстро проверить интернет, но нет желания ставить отдельные пакеты. В Linux можно сделать speedtest одной командой:


curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python3 -


Команда скачает Python-скрипт speedtest-cli и тут же запустит его без установки. На выходе будет привычный результат с ping, download и upload. Для работы нужен установленный python3. Если его нет:


sudo apt install python3


Установка для постоянного использования:

Если планируете пользоваться регулярно, то удобнее поставить сам speedtest-cli:


sudo apt install speedtest-cli


После этого достаточно просто выполнить команду:


speedtest


LinuxCamp | #utils #microhelp
😁22👍15🔥7❤‍🔥21🤝1
htop: фишки, о которых часто забывают

О htop знают практически все пользователи линухи. Его воспринимают как "красивый top", а для каких-то систем она вообще предустановлена по умолчанию. Но всеми возможностями пользуются редко, либо вообще не в курсе о них, хотя они реально могут ускорять работу.

Сортировка и дерево процессов:

Сортировку процессов можно переключать на лету. Часто по умолчанию htop показывает нагрузку по CPU, но нажми F6 - и список можно отсортировать по памяти, времени жизни, приоритету или IO. Это удобно, если нужно понять, кто именно грузит систему, не только процессор.


htop
# F6 → выбрать Mem% или TIME+


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


htop
# F5 → Tree


Поиск, приоритеты и завершение:

Поиск по процессам тоже встроен. Просто нажми / и введи часть имени процесса. Найденные совпадения будут подсвечены. Это быстрее, чем прокручивать сотни строк глазами.


htop
# /nginx


Можно менять приоритет процессов прямо из интерфейса. Выбираешь процесс стрелками, нажимаешь F7/F8 и меняешь nice-уровень. Таким образом можно «успокоить» прожорливую задачу без выхода в отдельные команды.


htop
# стрелками выбрать процесс
# F7 - снизить nice, F8 - повысить


Если нужно убить процесс, не обязательно выходить и писать kill. Выбираешь его и нажимаешь F9. Htop спросит, каким сигналом завершить.


htop
# стрелками выбрать процесс
# F9 → SIGTERM или SIGKILL


Дополнительные метрики:

Есть и скрытые метрики. Через F2 открывается меню настроек, где можно включить показ IO по процессам, swap, контекстные переключения, page faults. Htop сразу отобразит эти данные в колонках.


htop
# F2 → Columns → выбрать IO_read, IO_write, MajFLT


Подводный момент: htop показывает данные только в момент запуска, он не хранит историю и не строит долгосрочных графиков. Поэтому если проблему нужно отлавливать во времени, лучше использовать atop или glances.

Вывод:

htop - это не просто «цветной top», а мощный инструмент: сортировка, дерево процессов, поиск, изменение приоритетов, завершение задач и гибкая настройка колонок.

LinuxCamp | #utils
40👍28🔥11
Исправление ошибок в консоли одной командой

Когда часто работаешь в консоли постоянно возникают какие-то мелкие проблемы: опечатался в команде, забыл sudo, не тот флаг или пакет, и снова приходится вводить всё заново.

Решение:

Существует шикарный инструмент - TheFuck! Он автоматически исправляет ошибки в предыдущей команде.

Установка:

Debian/Ubuntu:


sudo apt install python3-dev python3-pip
pip3 install thefuck --user


Arch:


yay -S thefuck


Чтобы активировать добавьте в ~/.bashrc или ~/.zshrc:


echo 'eval $(thefuck --alias)' >> ~/.bashrc
source ~/.bashrc


Использование:

После этого можно использовать, теперь, если вы ошиблись при вводе команды, достаточно набрать:


fuck


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

Важно!

Иногда thefuck может предложить неожиданное исправление, поэтому полезно следить за тем, что именно он собирается выполнить :)

LinuxCamp | #utils
18😁14🔥115
Современный ls: exa / eza

Когда-то появился инструмент exa - красивая альтернатива ls. С недавних пор основной форк называется eza. Оба делают одно и то же, просто eza активнее поддерживается и именно он есть в новых Ubuntu/Debian.

Что умеет:

- Красиво подсвечивает права, владельцев, даты.
- Показывает дерево директорий.
- Встраивает git-статусы (-M modified, -N new, -- unchanged).
- Поддерживает иконки (если шрифт в терминале позволяет).

Установка:

sudo apt install eza


(в старых системах пакет может называться exa)

Мастхэв команды:

# дерево каталогов
eza -T

# подробный вывод с правами и датами
eza -l

# с владельцами и git-статусом
eza -lg --git

# размеры в "человеческом" виде
eza -lh

# сортировка по времени изменения
eza -lt


Комбинированный вариант (можно использовать как алиас вместо ls):

alias ls="eza -lh --git --icons"


Вывод:

eza - это та же простая команда для просмотра файлов, но в современном исполнении. Установка занимает секунды, а ощущение, что терминал стал живее и дружелюбнее - останется надолго. Если привыкли к ls, попробуйте заменить его алиасом на eza и, скорее всего, уже не захотите возвращаться назад.

LinuxCamp | #utils
🔥37👍256😐3❤‍🔥1
Напоминаю, что у нас есть чат с отборными линуксоидами. Сюда можно задать любой интересующий вопрос по Linux, DevOps, системному администрированию и разработке.

Участники всегда рады помочь и пообщаться, поэтому не упускай сообщество из виду и присоединяйся!
👍9🔥7💊41
Работа с HTTP-запросами в терминале

Инструмент:

Для отправки запросов из командной строки можно использовать утилиту httpie. Она позволяет выполнять запросы в формате, близком к привычному синтаксису HTTP.

Установка:


apt install httpie


Примеры использования:

Простой GET-запрос
(без операторов — просто указываем метод и URL):


http GET https://primer.com/json


Запрос с передачей данных
- ключ=значение → строка
- ключ:=значение → литерал (число, true/false/null)


http POST https://primer.com/post name=LinuxCamp active:=true


Добавить заголовки
- ключ:значение → HTTP-заголовок


http GET https://primer.com/headers User-Agent:LinuxCamp


Особенности:

- Подсветка синтаксиса и форматирование ответа.
- Удобный ввод параметров (ключ-значение).
- Поддержка JSON "из коробки".
- Подходит для быстрой проверки API прямо из терминала.

Вывод:

httpie - это удобная альтернатива curl, ориентированная на человеко-читаемый вывод. Подсветка синтаксиса, автоматическая работа с JSON и лаконичный ввод делают его полезным инструментом для тестирования и отладки HTTP-запросов прямо в терминале.

LinuxCamp | #utils
👍2810🔥6❤‍🔥1
Быстрое перемещение по папкам с помощью zoxide

Инструмент:

zoxide - это умный заменитель cd, который запоминает каталоги, в которых вы работаете, и позволяет прыгать к ним за пару символов.

Установка:


sudo apt install zoxide


Затем добавьте в ~/.bashrc или ~/.zshrc:


eval "$(zoxide init bash)" # для bash
eval "$(zoxide init zsh)" # для zsh


Как пользоваться:

Обычный cd остаётся доступным, но появляются новые возможности, например, добавление каталогов в базу (происходит автоматически при cd):


cd ~/projects/linuxcamp


Переход в каталог по части имени (z - сокращение от zoxide), сразу откроет ~/projects/linuxcamp:


z linux


Если каталог встречается несколько раз, можно уточнить путь:


z proj lin


Быстрый возврат в предыдущую папку:


z -


Посмотреть список популярных путей (с рейтингом посещений):


zoxide query -l


Особенности:

- Работает поверх истории - чем чаще заходите в папку, тем выше её приоритет.
- Поддерживает автодополнение (bash, zsh, fish).
- Значительно сокращает время навигации по проектам.

Вывод:

zoxide делает работу с файловой системой быстрее и удобнее. Там, где раньше приходилось писать длинные пути или хранить алиасы, теперь достаточно пары букв.

LinuxCamp | #utils
👍2214🔥7❤‍🔥4👏2
😎 Биг дроп на канале: как я бы учил программирование с 0?

Я уже как 5 лет учу программирование. За это время совершал ошибки и корректировал свой путь. Есть много вещей, которые я бы делал иначе, чтобы процесс шел более эффективно.

В новом видео делюсь опытом и рассказываю, как, по моему мнению, стоит учить программирование, учитывая наличие ИИ в современном мире:

— какие ошибки я бы точно не повторил и как себя держать в ментальном порядке

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

— как не попасть в "Tutorial hell" и не увязнуть в потреблении курсов

Видос уже на канале: YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥105🥱2🤣1
asciinema - как записать терминал красиво и удобно

С помощью asciinema можно записывать терминал так, что результат выглядит как видео, но на самом деле это текст. Его можно не только просто воспроизводить как видео, но и копировать команды и вывод прямо из записи. В отличие от классического скринкаста, который занимает много места и теряет качество, asciinema сохраняет чистый поток терминала в лёгком текстовом файле, соответственно мало весит.

Установка:


sudo apt install asciinema


Как записать демку:


asciinema rec demo.cast


Запустится запись. Всё, что вы вводите и что выводит программа сохраняется. Остановить: Ctrl+D или exit.
Файл demo.cast можно вставить в README.md проекта, хранить локально (и потом воспроизводить: asciinema play demo.cast), либо просто делиться файлом

Мгновенный шаринг:

Можно делиться записью прямо через официальное облако asciinema:


asciinema upload demo.cast


После этой команды терминал вернёт ссылку вида:


https://asciinema.org/a/cFWlOCAQjSYYGeJRoUAlSfHx1


По этой ссылке можно открыть сайт asciinema и там посмотреть запись терминала как видео и также весь поток ввода-вывода можно скопировать!

Осторожно с паролями!

asciinema пишет всё, что появляется в терминале. Если вводите пароль или показываете секретный ключ он попадёт в запись, этими данными делиться небезопасно :)

Вывод:

asciinema - это как GIFки из терминала, только без лишнего веса и с удобной интеграцией в документацию, README файлы и копирования ввода-вывода.

LinuxCamp | #utils
🔥26👍106🤔4❤‍🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Еще немного экстремально обоснованного хейта в сторону винды))

Мое требование - нужно переделать все туториалы по установке линукса так, чтобы они заканчивались вот этим шагом 😂

LinuxCamp | #memes
Please open Telegram to view this post
VIEW IN TELEGRAM
😁73💊11🔥8👍76👏3❤‍🔥1
История о моменте, когда не понимаешь, что происходит

Запускал я однажды MVP нового проекта на новом домене. Сеть поднял, контейнеры крутятся, nginx настроен. Сидим все в офисе с wi-fi - всё летает, тестировщики даже с иностранными vpn тестируют, все ок.

Пошёл трафик, хоть и небольшой. Через пару дней бизнес: «С телефона сайт не открывается». Проверяю, реально, в мобильной сети таймаут.

Думаю: баг в коде? косяк в nginx? Меняю конфиги, даже делаю location / { return 200 "test"; }, но не помогает. Оказывается, что основной сайт компании при этом работает и с wi-fi, и с мобильного. Что-то тут нечисто 🤔

И тут вкидывают новость: в РФ начали троттлить (ограничивать скорость) пул ip адресов Cloudflare, и работает это тоже неравномерно, в одной сети может быть все ок, в другой нет. Я конечно же подумал: "пф, как же хорошо, что у нас все домены идут через ServicePipe". Но все-таки решил сравнить DNS у доменов:


# Мой MVP-домен
dig +short my-new-domain.tld A
# Основной домен
dig +short main.company.tld A


Результат:

— основной домен: ip провайдера/прокси (ServicePipe), у которого в РФ всё ок
— мой домен: IP-адреса Cloudflare, часть из которых блокировалась

Добавил проверку трассы:


dig +trace my-new-domain.tld
dig +trace main.company.tld


Картина сложилась: мобильные операторы по пути до Cloudflare режут или троттлят соединение, а трафик на ServicePipe доходит без проблем.

В итоге перевели новый домен через тот же провайдер (SP), всё стабилизировалось. И да, ещё и денег заработали 😊

LinuxCamp | #magadrovosex #network #story
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥30👍1510❤‍🔥1
btop: next level мониторинг процессов

Что такое btop:

Классика жанра top или htop. Но есть современная альтернатива - btop. Интерфейс более красивый, делится на несколько вкладок, и каждая отвечает за свою часть системы.

Установка:



sudo snap install btop


Работа с процессами:

В btop можно смотреть список процессов, фильтровать и сортировать их, переключаться на дерево иерархии. Управление процессами тоже встроено: можно изменить приоритет или завершить задачу.

Поддерживается работа мышью, клик по нужному процессу сразу открывает меню действий.
Запускается просто командой:


btop


Память и диски:

В отличие от htop, btop показывает полное распределение памяти: занятое, свободное, кэш, буферы и swap. Для дисков можно видеть не только объём, но и скорость чтения и записи в реальном времени.

Сеть:

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

На графиках удобно отслеживать пики нагрузки. В htop этого нет, там пришлось бы использовать отдельные инструменты, например iftop или nload.

Вывод:

btop объединяет в одном интерфейсе возможности htop, iotop и nload. При этом он остаётся лёгким по ресурсам и удобным в использовании.

Если нужен инструмент для мониторинга процессов, памяти, дисков и сети btop заметно опережает htop по возможностям.

LinuxCamp | #utils
👍408🔥7❤‍🔥1
Последняя стадия принятия, она такая)

1. Борюсь с багами Nvidia
2. Плачу из-за багов Nvidia
3. Становлюсь одним целым с багами Nvidia

У меня на работе даже был кейс, когда нужно было под каждое отдельное GPU Nvidia в композиторе (picom) добавлять исключения на некоторые граф. эффекты, иначе все артефачило.

LinuxCamp | #memes
😭32😁12🫡71💔1
Логи, краткий гайд по поиску и чтению

Логи — это «черный ящик» вашей системы. Умение с ними работать - ключевой навык для быстрого решения проблем. Разберем основы.

Где всё лежит?

Почти все логи живут в /var/log. Главные файлы:

/var/log/syslog/messages — общий журнал системы (ядра, службы, сеть).

/var/log/auth.log/secure — попытки входа (успешные и нет). Первое место для проверки безопасности.

/var/log/dmesg — сообщения от ядра и драйверов. Смотрите через одноименную команду, фильтруя по уровню, например, только ошибки:

dmesg -l err


Чем смотреть?

tail -f (следить в реальном времени), less (просмотр), grep (поиск).

lnav
(Log File Navigator) — делает работу с логами гораздо удобнее.

Почему lnav?

Открывает несколько файлов сразу и архивы (.gz) напрямую.
Показывает гистограмму сообщений по времени (клавиша i).
Подсвечивает синтаксис для разных форматов логов.

Установка и использование:


sudo apt install lnav


sudo lnav /var/log/syslog /var/log/auth.log


LinuxCamp | #utils
1👍4110❤‍🔥5
Зачем нужен Whois

Что это такое

whois - это утилита, которая показывает регистрационные данные о доменах и IP-адресах. Через неё можно узнать, кто владелец сайта, где зарегистрирован домен, какие у него NS-сервера и когда заканчивается регистрация.

Как работает

Запрос отправляется к публичным базам данных, где хранятся сведения о доменах и IP. Ответ может отличаться в зависимости от зоны (.ru, .com и т.д.), а часть информации скрывается из-за политики приватности.

Пример в консоли


whois linux.org


На выходе данные о регистраторе, сроке действия, контактной информации (если она открыта):


Domain Name: linux.org
Updated Date: 2024-05-16T04:04:59Z
Creation Date: 1994-05-10T04:00:00Z
Registry Expiry Date: 2034-05-11T04:00:00Z
Registrar Abuse Contact Email: domain.operations@web.com
Registrar Abuse Contact Phone: +1.9046806694
Name Server: lia.ns.cloudflare.com
Name Server: mark.ns.cloudflare.com
...


Где полезно

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

Важно помнить

Информация в whois может быть скрыта через защиту приватности, но технические данные (например, NS-записи) почти всегда доступны.

LinuxCamp | #utils #network
👍3210🔥7❤‍🔥1😁1
Linux сообщество всегда даст дельный совет))

Если кто не знал, "rm -rf" это у нас сокращение от "Read Manual":

"-r" перенаправит на случайную страницу
"-f" отфильтрует инфу


P.S это неправда и просто так, без понимания не выполняй эту команду, пожааалуйста)

LinuxCamp | #memes
😁103🔥4❤‍🔥2👍2🐳2🤔1
Знакомо, когда "apt upgrade" ползет как черепаха?

Виноват не всегда провайдер. Часто - просто загруженное или далёкое зеркало, с которого вы качаете пакеты. Лечится это за 2 минуты! Давайте разберемся, как заставить пакеты летать:

Debian/Ubuntu

Ставим инструмент для поиска самого шустрого зеркала и сразу применяем его:


# Устанавливаем утилиту для выбора самого быстрого зеркала
sudo apt install netselect-apt

# Выбираем зеркало для стабильной версии Debian
sudo netselect-apt stable

# Делаем резервную копию текущего списка репозиториев
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

# Перемещаем новый файл sources.list в /etc/apt/
sudo mv sources.list /etc/apt/sources.list

# Обновляем индекс пакетов с нового зеркала
sudo apt update


Arch Linux

Тут нам поможет reflector. Он протестирует и отсортирует зеркала по скорости:


# Устанавливаем утилиту reflector
sudo pacman -S reflector

# Генерируем новый список зеркал:
sudo reflector --country "Russia" \
--age 12 \
--protocol https \
--sort rate \
--save /etc/pacman.d/mirrorlist


"age 12" — брать только зеркала, обновлённые за последние 12 часов.

"protocol https" — фильтруем только зеркала с защищённым соединением.

"sort rate" — сортировка по скорости загрузки (можно ещё --sort score или --sort delay).

"save /etc/pacman.d/mirrorlist" — сохраняем новый список зеркал, который будет использовать pacman.

Fedora

Всё ещё проще — включаем встроенную фишку:


config-manager --set-enabled fastestmirror


LinuxCamp | #utils
2👍38🔥1510❤‍🔥1
Эмуляция сетевых проблем в Linux

Зачем это нужно

Иногда надо проверить, как приложение ведёт себя при «плохом интернете»: потерях пакетов, задержках или ограниченной скорости. Для этого в Linux есть tc netem - инструмент управления трафиком.

Как работает

tc (Traffic Control) позволяет добавлять правила для сетевых интерфейсов. С помощью модуля netem можно симулировать нестабильную сеть прямо на локальной машине или сервере.

Пример команды


# Добавляем задержку 200ms на интерфейс eth0
sudo tc qdisc add dev eth0 root netem delay 200ms

# Потери пакетов 10%
sudo tc qdisc change dev eth0 root netem loss 10%


Что можно эмулировать

Задержки, джиттер, потерю пакетов, дублирование и даже случайный порядок доставки. Это удобно для тестирования веб-сервисов, VoIP и игр.

Важно помнить

После тестов правила нужно очищать, иначе плохая сеть так и останется:


sudo tc qdisc del dev eth0 root


Вывод

Тестировать стоит не только код и логику приложения, но и его поведение в условиях сетевых проблем. Именно такие ситуации чаще всего ловят пользователей и самих разработчиков врасплох.

LinuxCamp | #utils
6🔥47👍2112❤‍🔥1🤝1
Самый тупой баг

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


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😁104❤‍🔥2
rsync - железный инструмент для копирования

Главное преимущество 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🔥155