Если ты работаешь с Linux, особенно на сервере, ты обязан уметь управлять сервисами: запускать, перезапускать, проверять статус, настраивать автозагрузку.
Всё это делается через systemctl — интерфейс для взаимодействия с systemd, который управляет фоновыми процессами (даже теми, о которых ты не догадываешься).Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝20🔥15👍5❤1
Например,
iptables -L позволяет быстро посмотреть текущие правила, а iptables -A — добавить новое правило для разрешения или блокировки трафика.На картинке — полезные команды, которые стоит держать под рукой при работе с Linux-серверами, сетями и Docker.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝15👍8🔥8❤1
Как диагностировать нестабильные systemd-сервисы!
Если система в целом работает корректно, но отдельные сервисы периодически падают или перезапускаются, диагностику удобно начинать со
Сервисы в ошибочном состоянии:
Показывает юниты, завершившиеся с ошибкой — базовая точка входа.
Перезапуски конкретного сервиса:
Позволяет быстро выявить циклические рестарты и их частоту.
Автоматические рестарты
Помогает обнаружить сервисы, которые
Количество рестартов:
Счётчик рестартов с момента запуска
Причина остановки:
Даёт максимальный контекст ошибки и системные пояснения.
Проверка
Актуально, если сервис завершается без явных ошибок в собственных логах.
Конфигурация сервиса:
Позволяет проверить параметры рестарта,
🔥 Такой разбор покрывает большинство случаев нестабильной работы systemd-сервисов без дополнительных инструментов.
🚪 Linux Ready | #практика
Если система в целом работает корректно, но отдельные сервисы периодически падают или перезапускаются, диагностику удобно начинать со
systemd и его журналов.Сервисы в ошибочном состоянии:
systemctl --failed
Показывает юниты, завершившиеся с ошибкой — базовая точка входа.
Перезапуски конкретного сервиса:
journalctl -u nginx --no-pager -g 'Starting|Stopped|Failed'
Позволяет быстро выявить циклические рестарты и их частоту.
Автоматические рестарты
systemd:journalctl -b | grep -Ei 'systemd\[1\].*(restart|Restart)'
Помогает обнаружить сервисы, которые
systemd регулярно перезапускает.Количество рестартов:
systemctl show nginx -p NRestarts
Счётчик рестартов с момента запуска
systemd. Рост значения обычно указывает на нестабильность сервиса.Причина остановки:
journalctl -xeu nginx
Даёт максимальный контекст ошибки и системные пояснения.
Проверка
OOM-killer:journalctl -k -b | grep -Ei 'oom|oom-kill|killed process'
Актуально, если сервис завершается без явных ошибок в собственных логах.
Конфигурация сервиса:
systemctl cat nginx
Позволяет проверить параметры рестарта,
drop-in override’ы, зависимости и условия запуска.Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍9🔥9
Знали, что можно сравнивать вывод команд напрямую — без временных файлов?
Можно сравнить локальный и удалённый конфиг:
Или проверить, что изменилось после деплоя, без копирования и мусора в
🔥
🚪 Linux Ready | #совет
Bash и Zsh умеют подставлять вывод команд как псевдофайлы, что идеально для сравнения конфигов, списков и результатов команд.diff <(ls /etc) <(ls /etc.backup)
<(...) превращает вывод команды в псевдофайл (обычно /dev/fd/* или FIFO), который программа читает как обычный файл.Можно сравнить локальный и удалённый конфиг:
diff nginx.conf <(ssh server 'cat /etc/nginx/nginx.conf')
Или проверить, что изменилось после деплоя, без копирования и мусора в
/tmp.Process substitution (<(...)) отлично работает с diff, grep, sort, comm, wc. Это быстрый способ сравнивать данные, но он зависит от shell и не поддерживается в sh/dash.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍10🤝6❤5
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