Linux Ready | DevOps
11.2K subscribers
1.03K photos
73 videos
549 links
Авторский канал по разработке на Linux.
Ресурсы, обучения, задачи, шпаргалки.
Ежедневно информация пополняется!

Cотрудничество: @energy_c
Download Telegram
👍16🔥7🤝6
Что же выведет консоль?
Anonymous Quiz
11%
A
59%
B
8%
C
23%
D
❤15👍11🤝9
Диагностируем процессы в Linux через strace!

Когда сервис завис, тупит на старте, не открывает файлы или просто ведёт себя странно, а в логах ничего — почти всегда первым делом имеет смысл запустить strace. Он показывает системные вызовы процесса, то есть что программа на самом деле просит у ядра.

Запускаем программу под трассировкой:
strace ls /tmp


Сразу видно, какие файлы открываются, какие библиотеки грузятся, где возникают ошибки.

Можно прицепиться к уже работающему процессу — удобно, если сервис завис:
sudo strace -p <PID>


Обычно быстро становится понятно, где он застрял: futex (блокировка), ожидание I/O (poll/epoll_wait), connect, чтение/запись и т.п.

Если программа создаёт дочерние процессы, без этого ключа часть событий не попадёт в вывод:
strace -f <command>


Проблемы с файлами, конфигами и правами:
strace -e trace=%file <command>


Покажет open/stat/access и другие файловые операции — удобно понять, какие пути реально проверяются.

Частый кейс — программа ищет файл, которого нет:
strace -e trace=%file <command> 2>&1 | grep ENOENT


Сразу видно, какой путь оказался отсутствующим.

Для сетевых проблем:
strace -e trace=%network <command>


Видно создание сокетов, попытки подключения и ошибки.

Если нужно сохранить вывод:
strace -o trace.log <command>


С дочерними процессами лучше так:
strace -ff -o trace.log <command>


Будут отдельные файлы по PID.

Иногда вывод обрезает длинные строки — увеличиваем лимит:
strace -s 200 <command>


Посмотреть, где именно тратится время:
strace -T <command>


Короткая сводка по системным вызовам:
strace -c <command>


🔥 strace незаменим при анализе поведения непрозрачных бинарников и в случаях, когда нет доступа к исходному коду. Он показывает, на каких системных вызовах процесс блокируется и какие операции фактически выполняет в пространстве ядра.

🚪 Linux Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥12❤10
This media is not supported in your browser
VIEW IN TELEGRAM
😎 Linux Insides — подробное руководство по внутреннему устройству ядра!

Это перевод известной книги Linux Insides, где шаг за шагом разбирается, как работает ядро: процесс загрузки системы, переход в защищённый режим, управление памятью, прерывания, драйверы, планировщик и другие низкоуровневые механизмы.

Оставляю ссылочку: GitHub 📱


🚪 Linux Ready | #репозиторий
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝18👍15❤9
Параллельный запуск обычных команд без GNU Parallel!

Многие задачи в Linux можно ускорить в разы, задействовав несколько ядер CPU.

Ключ — опция -P у xargs, которая запускает несколько процессов одновременно (это именно многопроцессность, не потоки).

Например, выполнить задачи параллельно:
P=$(nproc)
seq "$P" | xargs -P"$P" -I{} ./task.sh {}


Здесь одновременно работают до P копий скрипта (обычно по числу доступных CPU).

Отлично подходит для тяжёлых операций над файлами:
find . -maxdepth 1 -name "*.log" -print0 | xargs -0 -P4 -I{} gzip "{}"


Файлы сжимаются параллельно, а не по одному. Использование -print0 / -0 безопасно для имён с пробелами и спецсимволами.

Можно комбинировать с find для массовой обработки каталогов:
find . -name "*.jpg" -print0 | xargs -0 -P6 -I{} convert "{}" -resize 50% "resized/{}"


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

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

🚪 Linux Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍10🤝10❤1
📂 Напоминалка по архитектуре Linux!

Например, ядро управляет процессами, памятью, устройствами, сетью и файловыми системами — именно эти подсистемы обеспечивают работу всей операционной системы.

На картинке — 5 основных компонентов ядра, которые важно понимать разработчикам, DevOps-инженерам и системным администраторам.

Сохрани, чтобы держать базовую архитектуру Linux под рукой!

🚪 Linux Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍10🤝8👎1
👩‍💻 Создаём временный защищённый файл с автоудалением!

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

В этом посте:
• Создаём файл с правами только для текущего пользователя;

• Вводим секрет скрыто, без отображения на экране и записи в history;

• Настраиваем автоудаление через заданный интервал;

• Получаем одноразовое локальное хранилище без сторонних сервисов.


Полезный приём для работы с ключами, паролями, временными доступами и любыми чувствительными данными.

🚪 Linux Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25❤9🤝8👎1
This media is not supported in your browser
VIEW IN TELEGRAM
✍️ Ryan’s Tutorials — системное руководство по командной строке Linux!

Это подробный курс, который последовательно проводит от самых основ до уверенного использования системы. Материал разбит на разделы с примерами команд, пояснениями и практическими приёмами работы с файлами, процессами и окружением. Особое внимание уделено Bash и тому, как с помощью терминала автоматизировать задачи и управлять системой без графического интерфейса.

📌 Оставляю ссылочку: ryanstutorials.net

🚪 Linux Ready | #сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤9🔥9
Знали, что Linux умеет реагировать на события файловой системы в реальном времени?

Ядро через inotify сообщает, когда файл изменился, создан или заменён.

Команда блокируется и просыпается только при событии, поэтому почти не расходует CPU:
inotifywait -e close_write config.yaml


Можно отслеживать целую директорию (важно, если редактор сохраняет через temp-файл + rename) и автоматизировать любые действия - перезапуск сервисов, сборку проекта или бэкап:
inotifywait -m -e create,delete,modify,moved_to ./src


Очень удобно для авто-reload без Docker, IDE и сторонних инструментов:
while inotifywait -e close_write app.py; do
pkill -f "python app.py"; python app.py &
done


🔥 Такой прием пригодится для CI-скриптов, авторазвертывания, hot-reload и администрирования.

🚪 Linux Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍13🤝8❤2
👍 Полезную статью нашел на Хабре: «Шпаргалка по поиску узких мест в Linux: топ утилит на все случаи жизни»!

В этой статье:
• Собран практический набор инструментов для быстрой диагностики производительности системы и сервисов;
• Показано, как находить реальные причины тормозов — от CPU и памяти до дисков и сети;
• Даны команды и подходы, которые пригодятся и на сервере в продакшене.


🔊 Продолжайте читать на Habr!


🚪 Linux Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥8🤝7❤2
Переменные окружения в Linux: управление поведением процессов!

Переменные окружения (environment variables) задают контекст выполнения программ. Через них настраиваются shell, компиляторы, интерпретаторы, библиотеки и большинство CLI-утилит. Это базовый механизм конфигурации в Unix-подобных системах.

Посмотреть все переменные окружения текущего процесса (shell):
printenv


или:
env


Обе команды выводят окружение текущего процесса (экспортированные переменные). env также часто используют для запуска команды с заданными переменными.

Посмотреть значение конкретной переменной:
echo "$PATH"


Кавычки важны при подстановке переменных: они предотвращают нежелательное разбиение на слова и обработку спецсимволов (особенно если значение содержит пробелы или символы glob).

Временная переменная для одного запуска программы:
DEBUG=true ./app


Переменная будет доступна только процессу ./app и его дочерним процессам. В текущем shell она не сохранится.

Экспорт переменной в текущей сессии shell:
export NODE_ENV=production


После export переменная становится частью окружения текущего shell и наследуется всеми дочерними процессами, но не влияет на другие терминалы и будущие входы в систему.

Удаление переменной:
unset NODE_ENV


Удаляет переменную из текущего shell и его окружения.

Постоянные переменные пользователя - задаются в конфигурационных файлах shell и применяются при старте сессии. Для Bash обычно используют: ~/.bashrc — интерактивные shell; ~/.profile или ~/.bash_profile — login-shell

Конкретный файл зависит от способа запуска shell в системе.

Пример:
export EDITOR=vim
export PATH="$HOME/bin:$PATH"


После изменения применить настройки можно:
source ~/.bashrc


или просто открыть новый терминал.

Глобальные переменные для всех пользователей - можно задать в файле:
/etc/environment


Этот файл обычно обрабатывается при входе в систему через PAM. Он поддерживает только простые присваивания без shell-синтаксиса, экспорта и подстановок.

Пример:
JAVA_HOME=/usr/lib/jvm/java-17


Посмотреть окружение конкретного запущенного процесса:
cat /proc/<PID>/environ | tr '\0' '\n'


Переменные хранятся в памяти процесса как строки, разделённые нулевым байтом. Обычно доступно только для своих процессов или с правами root (может ограничиваться настройками безопасности).

Порядок PATH критичен - поиск исполняемых файлов идёт слева направо:
echo "$PATH"


Будет запущена первая найденная программа с совпадающим именем.

🔥 Переменные окружения передаются процессам через механизм fork/exec, существуют только в памяти процесса и наследуются его потомками. Они не изменяют систему глобально сами по себе и являются стандартным способом управления поведением программ в Linux.

🚪 Linux Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝17❤10🔥9👍2
This media is not supported in your browser
VIEW IN TELEGRAM
👍 BrendanGregg — официальный сайт эксперта по производительности систем!

Сайт одного из ведущих мировых экспертов по производительности вычислительных систем, где собраны статьи, инструменты, документация, презентации и исследования по Linux, трассировке, оптимизации и анализу работы инфраструктуры. Материалы ориентированы на разработчиков, DevOps-инженеров и системных администраторов.

📌 Оставляю ссылочку: brendangregg.com

🚪 Linux Ready | #сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤8🤝8
Полный лог выполнения команды без потери вывода в терминале!

Когда команда пишет ошибки в stderr, обычный | tee file сохраняет только stdout. В результате лог оказывается неполным и бесполезным для анализа.

Перенаправление 2>&1 объединяет stderr со stdout — теперь в файл попадает абсолютно всё:
docker build . 2>&1 | tee build.log


Можно сразу фильтровать поток, не теряя оригинальный лог:
pytest -v 2>&1 | tee test.log | grep -E "FAILED|ERROR"


Связка 2>&1 | tee превращает любую команду в одновременно интерактивную и логируемую.

🔥 Особенно полезно при долгих сборках, CI-задачах и отладке, когда важно видеть вывод в реальном времени и одновременно сохранять полный отчёт.

🚪 Linux Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥9❤8
This media is not supported in your browser
VIEW IN TELEGRAM
💡 How To Secure A Linux Server — пошаговое руководство по защите Linux-сервера!

Репозиторий представляет собой подробный чек-лист по хардненингу системы: настройка безопасного SSH-доступа, файрвола, ограничение прав пользователей, аудит действий, антивирусная защита и другие меры повышения безопасности. Материал ориентирован на реальные сценарии эксплуатации серверов и может применяться как для домашних, так и для облачных систем.

Оставляю ссылочку: GitHub 📱


🚪 Linux Ready | #репозиторий
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥8🤝7❤2
👍13🔥8🤝6
Что же выведет консоль?
Anonymous Quiz
32%
A
31%
B
21%
C
16%
D
🔥14👍8🤝8
👩‍💻 Быстрые операции с текстом в терминале!

В этом посте собраны утилиты для эффективной обработки текстовых файлов в командной строке. Рассмотрены сортировка строк, подсчёт повторений, устранение дубликатов, а также объединение данных построчно и по ключевым полям. Полезно для анализа логов, работы со списками и построения конвейеров обработки данных.

🚪 Linux Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥16❤7🤝4