Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12😁5
Многие фоновые службы в Linux (nginx, sshd, docker и др.) управляются через
systemd
. Если какая-либо из них падает или перезапускается слишком часто — это повод для внимания. Этот скрипт проверяет логи на сбои systemd-сервисов и логирует их.#!/bin/bash
LOG_FILE="/var/log/systemd_failed_services.log"
echo "🧭 Проверка systemd-сервисов... $(date)" | tee -a "$LOG_FILE"
# Получаем список сервисов со статусом failed
FAILED=$(systemctl --failed --no-legend --plain)
if [ -n "$FAILED" ]; then
echo "❌ Обнаружены сбои в systemd-сервисах:" | tee -a "$LOG_FILE"
echo "$FAILED" | tee -a "$LOG_FILE"
else
echo "✅ Все сервисы в норме." | tee -a "$LOG_FILE"
fi
echo "🔚 Проверка завершена." | tee -a "$LOG_FILE"
systemctl --failed
показывает службы с ошибками*/30 * * * * /path/to/systemd_check.sh
🗣 Подходит для серверов, рабочих станций, CI-сред — чтобы быть в курсе, если что-то важное перестало работать (например, ssh, cron, nginx, docker, postgres и др.).
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Эта статья о том, как рождаются продукты из задач, которые никто не любит делать вручную.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥3🌚1
В этом видео я делаю обзор дистрибутива CachyOS — Arch-ориентированной системы, разработанной с упором на производительность и оптимизацию под современные ПК.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥4
Please open Telegram to view this post
VIEW IN TELEGRAM
😁20💯5
Cron — это мощный планировщик задач. Но отладка и правильная настройка crontab требует точности. Ниже — практичные команды для контроля, диагностики и логирования.
# Открыть crontab текущего пользователя
crontab -e
# Просмотреть текущие задания cron
crontab -l
# Просмотреть cron-доступность пользователя
cat /etc/cron.allow
cat /etc/cron.deny
# Проверить системные задания (cron root)
sudo cat /etc/crontab
# Проверить cron'ы в отдельных директориях
ls /etc/cron.hourly/
ls /etc/cron.daily/
ls /etc/cron.weekly/
ls /etc/cron.d/
# Проверка, исполняются ли задания cron
grep CRON /var/log/syslog # Debian/Ubuntu
grep CRON /var/log/cron # RHEL/CentOS
# Лог всех ошибок cron
grep -i error /var/log/syslog | grep CRON
# Протестировать команду как cron бы её выполнил
SHELL=/bin/bash PATH=/usr/bin:/bin /your/command.sh
# Проверить переменные окружения cron
crontab -l | grep -E '^(SHELL|PATH|MAILTO|HOME)'
# Подсказка: cron по умолчанию шлёт stdout/stderr на email (MAILTO)
crontab -e
редактирует задачи без sudogrep CRON
— полезно для логирования и дебага$PATH
особенно важна — cron запускается с минимальным окружениемPlease open Telegram to view this post
VIEW IN TELEGRAM
👍12💯1
Разбираюсь, как Synology ускоряет NAS: от кеша inode и фрагментации Docker до предсказаний IO и трюков с Btrfs. Это не просто коробка для бэкапов. Это инженерный тетрис.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
jaxtyping — это библиотека для декларативного описания размерностей и типов массивов (
numpy
, torch
, jax
) прямо в type hints. Она усиливает проверку типов при работе с тензорами, помогая ловить ошибки ещё до выполнения кода.Идеальна для научных вычислений, ML/AI, CV — когда важна строгая типизация массивов и предсказуемость размерностей.
from jaxtyping import Float, Int64
import torch
from typing import Callable
# Функция принимает Float32 тензор размером (batch, 3)
def normalize(x: Float[torch.Tensor, "batch 3"]) -> Float[torch.Tensor, "batch 3"]:
return x / x.norm(dim=1, keepdim=True)
# Пример с проверкой
x = torch.randn(32, 3)
normalize(x) # ✅
➕ Преимущества:
shape
и dtype
прямо в аннотацияхpip install jaxtyping
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣31😁3
Службы, которые часто перезапускаются, могут перегружать систему или указывать на скрытые проблемы (утечки памяти, падения, ошибки конфигурации). Этот скрипт ищет systemd-сервисы, перезапускавшиеся более X раз, и логирует их.
#!/bin/bash
LOG_FILE="/var/log/systemd_restart_watch.log"
RESTART_THRESHOLD=3
echo "🔄 Анализ перезапусков systemd-сервисов... $(date)" | tee -a "$LOG_FILE"
# Получаем список активных сервисов
for svc in $(systemctl list-units --type=service --no-pager --no-legend | awk '{print $1}'); do
# Извлекаем число рестартов
RESTARTS=$(journalctl -u "$svc" --since "1 hour ago" | grep -c "Starting")
if [ "$RESTARTS" -gt "$RESTART_THRESHOLD" ]; then
echo "⚠️ Сервис $svc перезапущен $RESTARTS раз(а) за последний час" | tee -a "$LOG_FILE"
fi
done
echo "✅ Проверка завершена." | tee -a "$LOG_FILE"
systemctl list-units
— список всех активных сервисовjournalctl
— журнал перезапусковRESTART_THRESHOLD
) можно адаптировать под систему*/20 * * * * /path/to/systemd_restart_watch.sh
🗣 Особенно полезно для DevOps-инженеров, системных админов, SRE-команд — когда важно не просто знать, что сервис упал, а выявить нестабильные процессы до сбоя
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Показываю, как прикрутить SonarQube к FastAPI, настроить анализ через Docker и CI, чтобы ловить баги до запуска. Автоматизируем проверку, избавляемся от «запахов».
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
30 минут отговариваю учить ненужные темы по Python.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Please open Telegram to view this post
VIEW IN TELEGRAM
😁18❤🔥1🔥1
Системные таймеры на основе systemd — современная альтернатива cron.
Они позволяют более гибко управлять задачами: запуск по времени, после загрузки, с условиями и логированием. Ниже — полезные команды для работы с таймерами.
# Показать все активные и неактивные таймеры
systemctl list-timers --all
# Показать только активные таймеры с временем запуска
systemctl list-timers
# Узнать подробности о конкретном таймере
systemctl status myjob.timer
# Посмотреть привязанный unit (например, сервис, который запускает таймер)
systemctl cat myjob.timer
# Немедленно запустить задачу вручную (для теста)
systemctl start myjob.service
# Проверить последние запуски и логи таймера
journalctl -u myjob.service
# Проверить системные таймеры и их состояние
systemctl list-timers | grep -v "0 loaded units listed"
# Пример создания таймера и сервиса:
# 1. /etc/systemd/system/myjob.service
[Unit]
Description=Custom job
[Service]
Type=oneshot
ExecStart=/usr/local/bin/myscript.sh
# 2. /etc/systemd/system/myjob.timer
[Unit]
Description=Run custom job every hour
[Timer]
OnCalendar=hourly
Persistent=true
[Install]
WantedBy=timers.target
# 3. Активировать таймер
sudo systemctl daemon-reexec
sudo systemctl enable --now myjob.timer
systemctl list-timers
— как crontab -l
, только лучшеPersistent=true
гарантирует запуск после пропуска (например, при выключенном ПК)journalctl
— удобно отлаживатьcron
, с логами и гибкостью systemd.Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥1
Погружаемся глубже в лайвпатчи Linux: как именно ядро перескакивает на новую функцию вместо старой, и что надо учесть, чтобы оно не рухнуло. Плюс вопросы на подумать в конце.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥7👍3
pyinstrument
— это минималистичный, но мощный профилировщик производительности. Он показывает, что именно замедляет выполнение Python-программы, и в каком участке кода тратится больше всего времени — в виде читаемого дерева вызовов.Идеален для быстрого анализа "узких мест" в скриптах, API, CLI и любом CPU-bound коде.
from pyinstrument import Profiler
profiler = Profiler()
profiler.start()
# код, который нужно проанализировать
total = 0
for i in range(1000000):
total += i ** 0.5
profiler.stop()
profiler.print()
Timer started at: 15:20:42
Total time: 0.42s
Program:
0.420s [self] your_script.py:7
└─ 0.420s your_script.py:10 total += i ** 0.5
➕ Преимущества:
main()
pip install pyinstrument
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚9🔥4😁1
lsof
— мощь, о которой все забываютlsof
— один из самых мощных инструментов в Linux для отладки, но его часто игнорируют. А зря: он показывает, какие файлы, сокеты, устройства открыты и кем.lsof -i :8000
Узнаешь, кто занял порт — особенно полезно, если
server already running
или address already in use
.lsof /var/log/syslog
Найдёт процессы, которые всё ещё используют файл — даже если ты его уже удалил (
deleted
).kill -9 $(lsof -t -i :8000)
Комбо для CI/CD: освобождай порт автоматически перед перезапуском.
lsof +L1
Покажет файлы, которые удалены, но всё ещё заняты процессами — часто причина переполнения диска.
lsof -p 1234
Прямой способ узнать, с чем работает любой процесс.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥9👍4
🧩 Мониторинг зависших процессов в Linux (на основе времени выполнения)
В Linux процессы могут "зависнуть" — не завершаться, занимать ресурсы, но ничего не делать. Этот скрипт помогает находить такие задачи, работающие дольше заданного времени (например, 1 час), и логировать их для анализа.
⚙️ Исходный код
🟢
🟢 Сравниваем с порогом (по умолчанию 60 минут)
🟢 Скрипт удобен для поиска подвисших cron-задач, rsync, python-скриптов и др.
🟢 Можно доработать: исключить сервисы, логин-сессии, добавить автоубийство (kill)
➡️ Добавьте в crontab:
😎 PyLinux | #scripts
В Linux процессы могут "зависнуть" — не завершаться, занимать ресурсы, но ничего не делать. Этот скрипт помогает находить такие задачи, работающие дольше заданного времени (например, 1 час), и логировать их для анализа.
#!/bin/bash
LOG_FILE="/var/log/stuck_processes.log"
MAX_RUNTIME_MINUTES=60
echo "⏱️ Поиск процессов старше $MAX_RUNTIME_MINUTES минут... $(date)" | tee -a "$LOG_FILE"
# Получаем текущий timestamp
NOW=$(date +%s)
# Получаем список всех процессов с временем запуска
ps -eo pid,etimes,comm --no-headers | while read -r pid etimes comm; do
if [ "$etimes" -gt $((MAX_RUNTIME_MINUTES * 60)) ]; then
echo "⚠️ PID: $pid | Время: $((etimes / 60)) мин | Команда: $comm" | tee -a "$LOG_FILE"
fi
done
echo "✅ Проверка завершена." | tee -a "$LOG_FILE"
ps -eo pid,etimes,comm
— показывает PID, время жизни процесса (в секундах) и его команду*/30 * * * * /path/to/stuck_process_monitor.sh
🗣 Полезно для CI/CD, серверов, рабочих станций и всех, где важна своевременная очистка висящих задач
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Разбираюсь, зачем Intel прикрыла Clear Linux, что мы теряем вместе с его фишками и как это отразится на остальных. Немного грусти, немного аналитики и пара идей, куда теперь мигрировать.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥8🤔4👍2