Для одиночного сервера не всегда нужен
Prometheus и сложные дашборды. Достаточно видеть загрузку CPU, памяти, диска, состояние сервисов и свежие ошибки в логах — это уже закрывает 80% реальных проблем.В этом посте:
• Снимаем быстрый срез по ресурсам (CPU, RAM, диск);
• Простой способ проверки ключевых сервисов через systemd;
• Минимальные приёмы работы с логами nginx;
• Собираем всё это в лёгкий мониторинг.
Будет полезно тем, кто держит свои проекты на
VPS и хочет видеть, что с ними происходит, без тяжёлых систем мониторинга.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥8❤5🤝1
Например,
/bin содержит системные бинарные файлы, а /etc — конфигурации, управляющие поведением системы.На картинке — директории Linux, их назначение и место в иерархии.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤13🔥7🤝1
Мини-скрипт мониторинга файла с логом и простым alert (webhook)
Отслеживаем изменения файла/папки и логируем с таймстампом, при установленном
Файл
Запускаем скрипт в фоне (например, через
Теперь скрипт работает в фоне,
Проверка работоспособности:
Пример ожидаемого вывода
Остановка/очистка. Убираем процесс-монитор:
🔥 В результате скрипт даёт простой и надёжный способ отслеживать изменения файлов и записывать события в лог.
🚪 Linux Ready | #практика
Отслеживаем изменения файла/папки и логируем с таймстампом, при установленном
ALERT_WEBHOOK отправляем короткий POST. Требуется inotifywait (inotify-tools):#!/usr/bin/env bash
WATCH="$1"; LOG="${2:-/var/log/filewatch.log}"
inotifywait -m -e modify,create,delete,move --format '%T %w %e %f' --timefmt '%F %T' "$WATCH" |
while read -r ts path ev file; do
echo "$ts $path $ev $file" >> "$LOG"
[ -n "$ALERT_WEBHOOK" ] && curl -s -X POST -H 'Content-Type: application/json' --data "{\"text\":\"$ts $path $ev $file\"}" "$ALERT_WEBHOOK" >/dev/null 2>&1
done
Файл
/var/log/filewatch.log начнёт пополняться строками вида:YYYY-MM-DD HH:MM:SS /path MODIFY filename.Запускаем скрипт в фоне (например, через
nohup), чтобы он работал независимо от сессии:nohup /usr/local/bin/file-monitor.sh /path/to/watch /var/log/filewatch.log >/dev/null 2>&1 &
Теперь скрипт работает в фоне,
PID виден через pgrep -f file-monitor.sh.Проверка работоспособности:
tail -n 3 /var/log/filewatch.log
Пример ожидаемого вывода
2025-11-11 12:34:01 /path/to/watch MODIFY important.conf
Остановка/очистка. Убираем процесс-монитор:
pkill -f file-monitor.sh && echo "Остановлено" || echo "Процесс не найден"
🔥 В результате скрипт даёт простой и надёжный способ отслеживать изменения файлов и записывать события в лог.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥8❤4
Иногда нужно быстро понять, стал ли сервер жить тяжелее по сравнению со вчера или прошлой неделей, но поднимать
Prometheus лень. Достаточно логировать loadavg в файл и один раз написать скрипт сравнения.В этом посте:
• Логируем нагрузку системы в простой текстовый файл;
• Считаем среднюю нагрузку за выбранный день через awk;
• Функция, которая сравнивает два дня между собой;
• Как вывести среднюю нагрузку за вчера и сегодня.
Подойдёт тем, кто держит несколько
VPS и хочет видеть динамику нагрузки без тяжёлых систем мониторинга.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤6🔥5
Нужно узнать, какие файлы были удалены, кем, когда и из какого процесса?
Если удалили “не то”, или скрипт стёр лишнее — при включённом
Показать последние удалённые файлы:
Здесь будут: время, PID, пользователь и путь удалённого файла.
Хотите отслеживать удаления в режиме близком к реальному времени?
Это включает контроль изменений по всей системе (в проде лучше ставить watch на конкретные каталоги)
После этого смотрим события:
🔥 Пригодится при расследованиях, ошибочных deploy-скриптах и случайных
🚪 Linux Ready | #совет
Если удалили “не то”, или скрипт стёр лишнее — при включённом
auditd ядро фиксирует вызовы unlink/unlinkat.Показать последние удалённые файлы:
sudo ausearch -x rm -sc unlink
Здесь будут: время, PID, пользователь и путь удалённого файла.
Хотите отслеживать удаления в режиме близком к реальному времени?
sudo auditctl -w / -p wa
Это включает контроль изменений по всей системе (в проде лучше ставить watch на конкретные каталоги)
После этого смотрим события:
ausearch -sc unlink
rm.Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥8❤7🤝2
This media is not supported in your browser
VIEW IN TELEGRAM
Если хочешь учиться не по учебнику, а через практику, этот сайт идеальный старт. Каждый уровень — маленькая задача: работа с файлами, SSH, процессы, шифрование. Постепенно учишься использовать команды осознанно, а не просто запоминать их. А навыки остаются как после реальной работы на сервере.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍11❤7🤝1
Как диагностировать процессы, которые «висят» и не отвечают!
Когда приложение перестаёт реагировать, важно быстро определить, где оно застопорилось: в I/O, системном вызове, блокировке или в логике приложения.
Состояние процесса (R, S, D, Z, T):
Ключевые состояния:
Признаки I/O-зависания:
Открытые файлы, сокеты, дескрипторы:
Python: быстрый
Node.js: корректный способ получить диагностический отчёт: запуск:
Получение отчёта:
Системные вызовы, на которых процесс висит:
Частые паттерны ожидания:
Профиль нагрузки процесса (
🔥 Эти команды позволяют быстро и без даунтайма понять, завис ли процесс в
🚪 Linux Ready | #практика
Когда приложение перестаёт реагировать, важно быстро определить, где оно застопорилось: в I/O, системном вызове, блокировке или в логике приложения.
Состояние процесса (R, S, D, Z, T):
ps -o pid,ppid,state,cmd -p <PID>
Ключевые состояния:
D — ожидание I/O
T — остановлен
Z — зомби
Kernel stack зависшего процесса (если он залип в системном вызове):sudo cat /proc/<PID>/stack
Признаки I/O-зависания:
io_schedule, wait_on_page_bit.Открытые файлы, сокеты, дескрипторы:
sudo lsof -p <PID>
Python: быстрый
traceback без перезапуска:sudo py-spy dump --pid <PID>
Node.js: корректный способ получить диагностический отчёт: запуск:
node --report-on-signal --report-compact app.js
Получение отчёта:
kill -USR2 <PID>
Системные вызовы, на которых процесс висит:
sudo strace -p <PID>
Частые паттерны ожидания:
futex(...), read(...), poll(...), select(...).Профиль нагрузки процесса (
CPU, context switch, I/O):pidstat -p <PID> -w -d 1
I/O, блокировке, системных вызовах или в логике приложения.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍10🤝9
Linux-редиректы позволяют гибко управлять потоками stdin, stdout и stderr. С их помощью можно направлять вывод в файлы, разделять или объединять потоки, работать с here-documents и here-strings — всё для автоматизации и точного контроля над командами.
На картинке — основные варианты редиректов, включая базовые операции, комбинирование потоков и полезные приёмы.
Сохрани, чтобы не потерять!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤11🔥5🤝1
Как понять, что блокирует процесс — точная точка ожидания в ядре!
В Linux каждый процесс может “зависнуть” не в смысле ошибки, а потому что ждёт диск, сеть, mutex или ресурс ядра.
Но можно увидеть, на чём он сейчас стоит, без
Увидим функции ядра, в которых процесс находится.
Например:
Хотите короткий ответ, без стека?
🔥 Вернёт одну точку блокировки - идеально для быстрых проверок.
🚪 Linux Ready | #совет
В Linux каждый процесс может “зависнуть” не в смысле ошибки, а потому что ждёт диск, сеть, mutex или ресурс ядра.
Но можно увидеть, на чём он сейчас стоит, без
strace или ptrace. Посмотрим стек ядра процесса:sudo cat /proc/<PID>/stack
Увидим функции ядра, в которых процесс находится.
Например:
futex_wait_queue_me - блокировка / mutex, filemap_read - чтение с диска и т.д.Хотите короткий ответ, без стека?
sudo cat /proc/<PID>/wchan
/proc/<PID>/stack — это именно то, что видит ядро.Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤12🔥8🤝2
В этой статье:
• Пошагово разберёте, как собрать и пропатчить ядро под свои нужды;
• Настроите виртуальную машину + контейнерное окружение, чтобы безопасно экспериментировать;
• Освоите сборку ядра, конфигурацию, подготовку deb-пакета и установку патчей;
• Получите готовую базу, чтобы разбираться глубже в ядре и настраивать систему под себя.🔊 Продолжайте читать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥9❤7
Малейшее несовпадение библиотек может менять поведение приложения, поэтому важно быстро определить, какие .so оно действительно использует в конкретной системе.
В этом посте:
• Проверяем базовые зависимости через ldd;
• Извлекаем скрытые зависимости из ELF через readelf;
• Смотрим фактические загруженные библиотеки через /proc/<pid>/maps;
• Получаем полную картину, которая помогает решать проблемы несовместимых или “пропавших” .so.
Полный набор зависимостей сразу показывает, почему бинарь ведёт себя по-разному в разных средах.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍10🤝9❤1