fzf превращает любой текстовый вывод команды в интерактивный интерфейс с поиском и точным выбором. Это позволяет быстрее ориентироваться в текущем состоянии системы и выполнять действия осознанно.В этом посте:
• Интерактивно выбираем файлы и директории из любого вывода;
• Безопасно работаем с процессами без ps | grep;
• Упрощаем повседневные операции с git и сервисами;
• Применяем единый принцип для десятков CLI-задач.
Подход особенно полезен при работе с большими проектами и нагруженными системами, где важны скорость, точность и контроль действий.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥9🤝7❤3
This media is not supported in your browser
VIEW IN TELEGRAM
Репозиторий от Brendan Gregg — одного из главных экспертов по performance и Linux-трейсингу. Здесь собраны готовые скрипты и утилиты для поиска узких мест по CPU, памяти, дискам и сети с использованием perf, ftrace, bcc и eBPF.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍8🤝7🔥1
Параллелизм в shell
Если в именах файлов есть пробелы или переводы строк — используйте нулевой разделитель:
Для команд вроде
Флаг
Параллельные сетевые проверки можно делать так:
🔥
🚪 Linux Ready | #совет
xargs -P позволяет выполнять команды параллельно, но есть нюансы, которые отличают рабочее решение от опасного.Если в именах файлов есть пробелы или переводы строк — используйте нулевой разделитель:
find . -name "*.log" -print0 | xargs -0 -n1 -P4 gzip
-print0 и -0 гарантируют корректную обработку любых имён файлов.Для команд вроде
rm всегда добавляй защиту от пустого ввода:find /tmp -type f -print0 | xargs -0 -r -n1 -P8 rm
Флаг
-r не запустит команду, если вход пуст — это важный предохранитель.Параллельные сетевые проверки можно делать так:
xargs -n1 -P5 ping -c1 -n < hosts.txt
-n отключает DNS-резолвинг и делает проверки стабильнее и быстрее.xargs -P — это параллелизм по задачам, а не по потокам. Каждый файл или хост обрабатывается отдельным процессом.Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤8🔥8
This media is not supported in your browser
VIEW IN TELEGRAM
Здесь собраны материалы о том, как работает ядро Linux: управление памятью, планировщик задач, драйверы устройств, файловые системы и взаимодействие с железом. Документация показывает внутренние механизмы системы, а не только внешнее поведение.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥9❤7
Как диагностировать рассинхронизацию времени!
Некорректное системное время приводит к сбоям
Общее состояние времени:
Показывает текущее время, статус синхронизации и RTC.
Кто управляет временем:
Важно, чтобы реально корректировал время только один механизм.
Качество синхронизации:
Резкие коррекции времени:
Помогает выявить скачки и принудительные корректировки.
Большое расхождение между
Виртуализация:
Базовая настройка:
🔥 Суть: проблемы времени почти всегда вызваны конфликтом источников синхронизации, неверной настройкой RTC или влиянием виртуализации.
🚪 Linux Ready | #практика
Некорректное системное время приводит к сбоям
TLS, аутентификации, логирования и распределённых систем. Ниже — компактный чек-лист диагностики.Общее состояние времени:
timedatectl
Показывает текущее время, статус синхронизации и RTC.
RTC in local TZ = yes на серверах — плохая практика; рекомендуется UTC.Кто управляет временем:
systemctl is-active systemd-timesyncd chronyd chrony ntp ntpd 2>/dev/null || true
systemctl status systemd-timesyncd chronyd chrony ntp ntpd 2>/dev/null || true
Важно, чтобы реально корректировал время только один механизм.
Качество синхронизации:
timedatectl timesync-status
timedatectl show -p NTPSynchronized -p NTP
chronyc sources -v
timesync-status актуален только для systemd-timesyncd; для chrony используйте chronyc.Резкие коррекции времени:
journalctl -u systemd-timesyncd -u chronyd -u ntp -u ntpd | \
grep -iE "step|jump|offset|slew|clock"
Помогает выявить скачки и принудительные корректировки.
RTC и перезагрузки:hwclock --show
Большое расхождение между
RTC и system clock проявляется после ребута, особенно если NTP не стартует сразу.Виртуализация:
systemd-detect-virt
dmesg | grep -iE "kvm|hyper-v|vmware|xen|clock|timesync|ptp"
Guest-tools и гипервизор могут конфликтовать с NTP внутри гостя.Базовая настройка:
timedatectl set-ntp true # systemd-timesyncd
systemctl enable --now chronyd # chrony
timedatectl set-local-rtc 0 # RTC в UTC
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤9🔥9😁1
Нагружаем приложение и смотрим, как оно себя ведёт!
Сегодня прогоняем тестовое веб‑приложение через обычную нагрузку и простейшую «атаку», чтобы увидеть разницу по метрикам и логам. Всё через терминал и пару утилит:
Сначала замерим «здоровое» состояние с равномерной нагрузкой:
За 30 секунд получим средний
Теперь устроим «атаку» с одного IP — резкий всплеск запросов:
Следим в это время за приложением:
В логах увидишь частые обращения к одному эндпоинту и рост
Можно вынести это в простой скрипт:
🔥 Так удобно быстро смотреть, где приложение начинает «сыпаться» под нагрузкой: код, база или сеть.
🚪 Linux Ready | #практика
Сегодня прогоняем тестовое веб‑приложение через обычную нагрузку и простейшую «атаку», чтобы увидеть разницу по метрикам и логам. Всё через терминал и пару утилит:
hey/ab для нагрузки и curl для имитации агрессивного клиента.Сначала замерим «здоровое» состояние с равномерной нагрузкой:
hey -z 30s -c 20 http://localhost:8080/
За 30 секунд получим средний
RPS, latency и процент ошибок. Это будет базовый уровень, с которым будем сравнивать.Теперь устроим «атаку» с одного IP — резкий всплеск запросов:
hey -z 30s -c 200 http://localhost:8080/login
Следим в это время за приложением:
tail -f app.log
htop
В логах увидишь частые обращения к одному эндпоинту и рост
5xx/4xx, а по ресурсам — скачок CPU/памяти.Можно вынести это в простой скрипт:
load_test() {
hey -z 20s -c 30 "$1"
hey -z 20s -c 200 "$1"
}
load_test "http://localhost:8080/login"Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥10❤8🤝1
FIFO в Linux: именованные пайпы для связи процессов без файлов!
Если нужно связать разные процессы, скрипты или shell’ы — используй FIFO (именованный канал).
Создаём канал:
Чтение из канала (блокируется, пока нет данных):
Запись в канал — из другого процесса или терминала (может блокироваться, если нет читателя):
🔥 Данные передаются напрямую через ядро, без сохранения в файл на диске (буферизация — в памяти ядра).
🚪 Linux Ready | #совет
Если нужно связать разные процессы, скрипты или shell’ы — используй FIFO (именованный канал).
Создаём канал:
mkfifo /tmp/myfifo
Чтение из канала (блокируется, пока нет данных):
cat /tmp/myfifo
Запись в канал — из другого процесса или терминала (может блокироваться, если нет читателя):
echo "hello world" > /tmp/myfifo
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤8🔥5🤝3
This media is not supported in your browser
VIEW IN TELEGRAM
Ресурс помогает разобраться в том, как развивается ядро: какие изменения в него вносятся, как читать патчи и тд. Здесь много материалов о процессе разработки, структуре кода и правилах взаимодействия внутри сообщества. Документация и гайды фокусируются на понимании того, как и почему принимаются технические решения в ядре.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍10🤝8
Низкоуровневый аудит процесса в Linux!
Когда
Аргументы запуска процесса (
Показывает текущие аргументы процесса. Полезно для диагностики, но
Пример вывода:
Память процесса:
Пример:
Детальная карта памяти процесса:
Позволяет понять, где именно расходуется память:
Открытые файлы и сокеты процесса:
Здесь видны логи, сокеты,
Количество потоков внутри процесса:
Рост значения без явной нагрузки может указывать на проблемы с управлением потоками, но не всегда означает утечку.
Реальный исполняемый файл процесса:
Права и
🔥 Короткая практическая выжимка для анализа процессов на уровне procfs/ядра.
🚪 Linux Ready | #практика
Когда
top и htop уже не дают ответов, вся реальная картина состояния процесса находится в /proc. Аргументы запуска процесса (
argv):cat /proc/PID/cmdline | tr '\0' ' '
Показывает текущие аргументы процесса. Полезно для диагностики, но
argv может быть изменён самим процессом и не всегда отражает исходную команду запуска.Пример вывода:
/usr/bin/python3 worker.py --queue=emails --env=prod
Память процесса:
cat /proc/PID/status | grep -E 'VmRSS|VmSize|VmSwap'
VmRSS — реально занятая RAM
VmSize — виртуальное адресное пространство процесса
VmSwap — объём, вытесненный в swap
Пример:
VmRSS: 412384 kB
VmSwap: 65536 kB
Детальная карта памяти процесса:
cat /proc/PID/smaps
Позволяет понять, где именно расходуется память:
private, shared, file-backed. На больших процессах может быть тяжёлым.Открытые файлы и сокеты процесса:
ls -l /proc/PID/fd
Здесь видны логи, сокеты,
pipes и удалённые файлы, которые всё ещё удерживаются процессом (доступ зависит от прав).Количество потоков внутри процесса:
ls /proc/PID/task | wc -l
Рост значения без явной нагрузки может указывать на проблемы с управлением потоками, но не всегда означает утечку.
Реальный исполняемый файл процесса:
readlink /proc/PID/exe
Права и
capabilities процесса:cat /proc/PID/status | grep Cap
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍10🔥6🤝3
👍11🔥9❤8
Как гарантировать, что скрипт или команда не запустится дважды?
Часто
PID-файлы — ненадёжны.
Проверки через
В Linux есть решение —
Запустить команду, только если она ещё не выполняется:
Если блокировка занят,
Для скриптов ещё надёжнее:
С этого момента гарантированно: только один экземпляр, блокировка снимается автоматически при
🔥
🚪 Linux Ready | #совет
Часто
cron запускается повторно, деплой стартует дважды, скрипт пересекается сам с собой.PID-файлы — ненадёжны.
Проверки через
ps — гонки.В Linux есть решение —
flock.Запустить команду, только если она ещё не выполняется:
flock -n /tmp/deploy.lock deploy.sh
Если блокировка занят,
flock завершится с ошибкой, команда не стартует.Для скриптов ещё надёжнее:
exec 9>>/tmp/job.lock
flock -n 9 || exit 1
С этого момента гарантированно: только один экземпляр, блокировка снимается автоматически при
exit.flock — это advisory-блокировка ядра с атомарной установкой, а не договорённость скриптов. Используйте её для cron, деплоя, миграций, бэкапов и CI-шагов.Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥9❤6🤝1
Как быстро и безопасно работать с большими файлами в Linux!
Большие логи, дампы,
Быстрый просмотр начала файла:
Просмотр конца файла (самый частый кейс для логов):
Постраничный просмотр без загрузки файла в память:
Полезные режимы:
Поиск по огромному файлу с ограничением результатов:
Подсчёт количества строк:
Читает файл последовательно и обычно быстрее любых текстовых редакторов.
Быстрое извлечение диапазона строк:
Разделение большого файла на части:
Полезно для передачи, обработки или параллельного анализа.
Обработка с индикатором прогресса:
Безопасное массовое изменение содержимого:
Изменение через временный файл — надёжнее, чем
🔥 Эти приёмы позволяют уверенно работать с файлами любого размера даже на слабых серверах и ноутбуках.
🚪 Linux Ready | #практика
Большие логи, дампы,
CSV, JSON, бэкапы — с ними сталкиваются почти все. Неправильная работа с такими файлами часто приводит к зависаниям терминала, высокой нагрузке и потере времени.Быстрый просмотр начала файла:
head -n 50 huge.log
Просмотр конца файла (самый частый кейс для логов):
tail -n 50 huge.log
Постраничный просмотр без загрузки файла в память:
less huge.log
Полезные режимы:
-F — выход, если файл помещается на экран
-S — без переноса строк
+F — режим tail -f (follow)
Поиск по огромному файлу с ограничением результатов:
grep -n -m 10 "ERROR" huge.log
Подсчёт количества строк:
wc -l huge.log
Читает файл последовательно и обычно быстрее любых текстовых редакторов.
Быстрое извлечение диапазона строк:
sed -n '100000,100200p' huge.log
Разделение большого файла на части:
split -l 500000 huge.log part_
Полезно для передачи, обработки или параллельного анализа.
Обработка с индикатором прогресса:
pv huge.log | grep "ERROR" > errors.log
pv показывает скорость и объём обработки (утилита может быть не установлена по умолчанию).Безопасное массовое изменение содержимого:
sed 's/old_value/new_value/g' huge.log > huge.log.new && mv huge.log.new huge.log
Изменение через временный файл — надёжнее, чем
sed -i, особенно для больших файлов.Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥15❤8🤝6👍5😁1
В шпоре собраны ключевые утилиты для анализа и нормализации путей: разрешение символических ссылок, получение канонических и абсолютных путей, создание и удаление symlink, а также разбор путей на компоненты. Практический минимум для shell-скриптов, DevOps-задач и системного администрирования.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍9❤7🤝3