Новое Распределяем каналы MAX по категориям и территориям. Читать новость
Открытый канал ID 68441013335455

RECURA | Программирование & IT

Практические советы, утилиты и обучающие материалы для разработчиков, DevOps-инженеров и системных администраторов. Всё о разработке, Linux и информационной безопасности.

Сотрудничество: info@recura.tech

Открыть в MAX

Публикации за период

По реакциям

Поиск и вся лента — после бесплатной регистрации. Свои даты — по подписке; владелец канала видит их бесплатно. Сортировка по реакциям — по подписке. Зарегистрироваться

Загрузка…

🐧 Linux может показать, какие процессы действительно тормозят диск, даже если iostat не объясняет задержки

👁 Высокая загрузка диска не всегда означает, что именно диск стал узким местом. Процессы могут надолго зависать в ожидании ввода-вывода, а средняя загрузка устройства не показывает, какие задачи испытывают задержки и как это отражается на системе. Для диагностики пригодятся PSI и трассировка блочного ввода-вывода.

📝 Проверяем давление из-за дисковых операций:

PSI показывает, сколько времени задачи теряют из-за ожидания ресурсов. Файл io позволяет быстро проверить, есть ли заметное давление ввода-вывода.



cat /proc/pressure/io
watch -n 1 cat /proc/pressure/io

📝 Находим процессы с накопленным временем ожидания I/O:

В /proc/PID/stat поле 42 — delayacct_blkio_ticks — содержит задержку процесса из-за блочного ввода-вывода в тактах ядра, если доступен соответствующий учёт задержек. Для быстрой диагностики можно посмотреть это значение у процессов с большим временем ожидания.



sudo bash -c '
for f in /proc/[0-9]*/stat; do
[ -r "$f" ] || continue
read -r line < "$f" || continue
rest=${line##*) }
set -- $rest
delay=${40}
pid=${f#/proc/}
pid=${pid%/stat}
printf "%12s %s\n" "$delay" "$pid"
done
' | sort -nr | head

📝 Записываем реальные задержки блочных запросов:

Если установлен bpftrace, можно посмотреть распределение времени выполнения операций на блочном уровне. Это помогает понять, возникают ли отдельные долгие запросы, которые теряются в средних показателях.



sudo bpftrace -e '
tracepoint:block:block_rq_issue {
@start[args->dev, args->sector] = nsecs;
}
tracepoint:block:block_rq_complete {
$key = (args->dev, args->sector);
if (@start[$key]) {
@latency_ms = hist((nsecs - @start[$key]) / 1000000);
delete(@start[$key]);
}
}'

❗️ Главное: PSI быстро показывает влияние I/O на задачи, а трассировка помогает исследовать задержки на уровне блочных запросов. Учитывайте, что доступность полей /proc зависит от конфигурации ядра, а привязка запросов по устройству и сектору в упрощённом BPF-примере не является надёжным способом сопоставления всех операций на нагруженном устройстве.

tags: #linux #производительность

🧭 @recura_tech
Просмотры: 80
Перейти в пост Открыть в MAX Сообщить о неточности
🌎 psad

👁️ Лёгкий демон обнаружения вторжений, анализирующий журналы iptables и ip6tables для выявления подозрительной сетевой активности.

Утилита обнаруживает сканирование портов TCP и UDP, распознаёт сигнатуры Snort, определяет потенциальные угрозы и присваивает им уровни опасности. Поддерживает IPv4 и IPv6, уведомления по электронной почте и syslog, анализ журналов и автоматическую блокировку подозрительных IP-адресов по заданным правилам.

❗ Подойдёт системным администраторам и специалистам по безопасности для мониторинга сетевых атак и дополнения существующих средств защиты, таких как Fail2ban и Snort.

GitHub

tags: #утилиты #сети #безопасность

🧭 @recura_tech
Просмотры: 138
Перейти в пост Открыть в MAX Сообщить о неточности
👨‍💻 Bash-Agent

👁️ Минималистичная среда выполнения для ИИ-агентов, работающих с кодом, без тяжёлых зависимостей и отдельных сред выполнения.

Проект поддерживает Bash, C, Go и Rust с общей семантикой сессий и инструментов, а также параллельное выполнение подзадач через SubAgent. Сессии можно сохранять, возобновлять и ветвить, а структурированный вывод событий, система Skills и компактизация контекста помогают управлять работой агентов.

❗ Подойдёт разработчикам, которые создают ИИ-агентов для работы с кодом и ищут минималистичную среду на базе Bash.

Проверить в деле

tags: #утилиты #ии #bash

🧭 @recura_tech
Просмотры: 199
Перейти в пост Открыть в MAX Сообщить о неточности
🐍 Python может автоматически останавливать зависшие процессы, не оставляя дочерние задачи работать в фоне

👁 При автоматизации через subprocess недостаточно установить тайм-аут: если команда запускает дочерние процессы, завершение родительского процесса не гарантирует остановку всей цепочки. В Linux можно запускать каждую задачу в отдельной группе процессов и при превышении лимита завершать всю группу.

📝 Запускаем команду с контролем времени и всей группы процессов:



import os
import signal
import subprocess

def run_task(command: list[str], timeout: int = 30) -> str:
proc = subprocess.Popen(
command,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
text=True,
start_new_session=True,
)

try:
output, _ = proc.communicate(timeout=timeout)
except subprocess.TimeoutExpired:
try:
os.killpg(proc.pid, signal.SIGTERM)
except ProcessLookupError:
pass

try:
output, _ = proc.communicate(timeout=3)
except subprocess.TimeoutExpired:
try:
os.killpg(proc.pid, signal.SIGKILL)
except ProcessLookupError:
pass
output, _ = proc.communicate()

raise TimeoutError(
f"Команда превысила лимит {timeout} с.\n{output}"
)

if proc.returncode != 0:
raise subprocess.CalledProcessError(
proc.returncode, command, output=output
)

return output

print(run_task(["python", "-c", "print('Задача выполнена')"]))

📌 Как это работает:

• start_new_session=True создаёт новую сессию, в которой процесс становится лидером своей группы.
• communicate(timeout=...) ограничивает время ожидания и одновременно считывает вывод, предотвращая переполнение каналов.
• При тайм-ауте сначала отправляется SIGTERM, а затем SIGKILL, если процесс не завершился за три секунды.

❗️ Важно: завершение группы охватывает процессы, которые остаются в ней. Если дочерний процесс самостоятельно создаст новую сессию или группу, этот способ не гарантирует его остановку. Для жёсткой изоляции недоверенных задач лучше использовать отдельный cgroup или системный менеджер служб.

tags: #python #автоматизация #linux

🧭 @recura_tech
Просмотры: 214
Перейти в пост Открыть в MAX Сообщить о неточности
🗳️ ProxSave

👁️ Утилита для резервного копирования и аварийного восстановления конфигураций Proxmox VE и Proxmox Backup Server (PBS).

Инструмент поддерживает резервное копирование без простоев, пошаговое восстановление, шифрование и облачные хранилища, а также автоматическое управление копиями и интеграцию с PBS. Уведомления можно получать через Telegram, электронную почту, Gotify и веб-хуки, а мониторинг подключать через Prometheus.

❗ Подойдёт системным администраторам, которые обслуживают инфраструктуру Proxmox и хотят упростить восстановление серверов после сбоев и при миграции.

GitHub

tags: #утилиты #proxmox #devops

🧭 @recura_tech
Просмотры: 206
Перейти в пост Открыть в MAX Сообщить о неточности
🤖 Pi

👁️ Инструментарий для создания и запуска ИИ-агентов с единым API для языковых моделей, собственным терминальным интерфейсом и средствами разработки.

Агенты могут работать с файлами, выполнять команды и редактировать код, используя модели более чем 15 провайдеров, включая OpenAI, Anthropic, Google и локальные модели через Ollama. История сессий поддерживает ветвление и продолжение работы, а система Skills позволяет подключать дополнительные инструкции и инструменты на лету.

❗ Подойдёт разработчикам, создающим ИИ-агентов и автоматизирующим задачи прямо в терминале.

Проверить в деле

tags: #утилиты #ии #разработка

🧭 @recura_tech
Просмотры: 230
Перейти в пост Открыть в MAX Сообщить о неточности
👨‍💻 Bash может передавать большие объёмы данных между процессами без временных файлов

👁 В автоматизации часто приходится связывать несколько утилит так, чтобы одна команда читала данные другой, а скрипт при этом сохранял возможность управлять обоими процессами. Для этого пригодится coproc — механизм Bash для запуска фонового процесса с двунаправленными каналами ввода-вывода.

📝 Запускаем долгоживущий обработчик:

coproc позволяет отправлять данные процессу через файловый дескриптор и читать его ответы отдельно. Это удобно, когда дорого запускать обработчик заново для каждой строки.



coproc WORKER {
while IFS= read -r line; do
printf 'Обработано: %s\n' "${line^^}"
done
}

printf '%s\n' "nginx" "bash" "linux" >&"${WORKER[1]}"

📝 Читаем ответы, не блокируя поток данных вручную:

У coproc есть дескрипторы для записи и чтения. Забирайте ответы по мере поступления, а не складывайте весь результат во временный файл.



while IFS= read -r -t 1 line <&"${WORKER[0]}"; do
printf 'Ответ: %s\n' "$line"
done

📝 Корректно завершаем фоновый процесс:

После передачи данных закройте канал записи, чтобы обработчик получил EOF и вышел из цикла. Затем дождитесь его завершения через wait.



exec {WORKER[1]}>&-
wait "$WORKER_PID"

❗️ Когда это полезно: для постоянных обработчиков, интерактивных утилит и конвейеров автоматизации, где нужно обмениваться данными без промежуточных файлов. Учитывайте, что чтение с -t может завершиться по тайм-ауту, а при закрытии дескрипторов важно не оставить процесс ожидающим ввода.

tags: #bash #автоматизация

🧭 @recura_tech
Просмотры: 225
Перейти в пост Открыть в MAX Сообщить о неточности
📁 M-Commander

👁️ Полноэкранный текстовый файловый менеджер на основе GNU Midnight Commander с поддержкой плагинов.

Две панели, встроенные редактор и терминал позволяют работать с файлами прямо в консоли, а плагины добавляют доступ к Docker, Kubernetes, Git, S3, FTP, SFTP и Samba. Также доступны просмотр структурированных данных JSON и YAML, работа с архивами и редактирование бинарных файлов с отображением полей и hex-дампа.

❗ Подойдёт системным администраторам и разработчикам, которые работают в Linux, tmux и удалённых SSH-сессиях.

GitHub

tags: #утилиты #файлы #полезно

🧭 @recura_tech
Просмотры: 237
Перейти в пост Открыть в MAX Сообщить о неточности
📊 Traceway

👁️ Платформа мониторинга приложений на базе OpenTelemetry, объединяющая телеметрию и диагностику в одном интерфейсе.

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

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

Проверить в деле

tags: #утилиты #мониторинг #ии

🧭 @recura_tech
Просмотры: 242
Перейти в пост Открыть в MAX Сообщить о неточности
ВКонтакте Телеграм Одноклассники
Избранное в datool.ru

Следите за каналом в личном кабинете

Зарегистрируйтесь в datool.ru, чтобы добавить канал «RECURA | Программирование & IT» в избранное и отслеживать его показатели.

Зарегистрироваться
Для владельцев каналов

Подтвердите свой канал

Войдите или зарегистрируйтесь в datool.ru, затем добавьте нашего бота в канал по инструкции в личном кабинете. После проверки владения замок исчезнет и вам станет доступно управление каналом.

Войти или зарегистрироваться

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти