На GitHub зарегистрировали миллиардный репозиторий — и он называется просто shit (https://github.com/AasishPokhrel/shit/issues/1) 😁
Внутри нет никакого кода, только README с одной строчкой: “shit”.
Зато у репозитория уже больше 1900 звёзд, сотни форков и целая армия комментаторов в issues
Некоторые даже предлагают (https://github.com/AasishPokhrel/shit/issues/242) спонсировать проект — мол, “использую всякое г на работе регулярно”.
Вот тебе и пример идеального пет-проекта. А мог бы быть твоим!
@linux_education
Внутри нет никакого кода, только README с одной строчкой: “shit”.
Зато у репозитория уже больше 1900 звёзд, сотни форков и целая армия комментаторов в issues
Некоторые даже предлагают (https://github.com/AasishPokhrel/shit/issues/242) спонсировать проект — мол, “использую всякое г на работе регулярно”.
Вот тебе и пример идеального пет-проекта. А мог бы быть твоим!
@linux_education
❤11👍1
🐍 PyLeak — найди утечку памяти в своём Python-коде
PyLeak — простой и мощный инструмент для отладки утечек памяти в Python-приложениях.
🔍 Возможности:
• Показывает объекты, которые не удаляет сборщик мусора
• Строит граф зависимостей между объектами
• Выявляет циклические ссылки и "висящие" объекты
• Поддерживает визуализацию через Graphviz
📦 Установка:
pip install pyleak
🧰 Идеален для отладки сервисов, где память утекает незаметно.
🔗 GitHub (https://github.com/deepankarm/pyleak)
@linux_education
PyLeak — простой и мощный инструмент для отладки утечек памяти в Python-приложениях.
🔍 Возможности:
• Показывает объекты, которые не удаляет сборщик мусора
• Строит граф зависимостей между объектами
• Выявляет циклические ссылки и "висящие" объекты
• Поддерживает визуализацию через Graphviz
📦 Установка:
pip install pyleak
🧰 Идеален для отладки сервисов, где память утекает незаметно.
🔗 GitHub (https://github.com/deepankarm/pyleak)
@linux_education
❤3
This media is not supported in your browser
VIEW IN TELEGRAM
🐧 Быстрый трюк для Linux: `tree`
Хочешь быстро увидеть структуру директорий?
Просто используй:
tree -L 2 /etc
📁 Это покажет содержимое папки /etc на 2 уровня вглубь в виде наглядного дерева.
👍 Подходит для:
• Разбора конфигурационных файлов
• Исследования вложенных каталогов
• Быстрого визуального обзора структуры
> Убедись, что утилита tree установлена: sudo apt install tree (или brew install tree для macOS)
@linux_education
Хочешь быстро увидеть структуру директорий?
Просто используй:
tree -L 2 /etc
📁 Это покажет содержимое папки /etc на 2 уровня вглубь в виде наглядного дерева.
👍 Подходит для:
• Разбора конфигурационных файлов
• Исследования вложенных каталогов
• Быстрого визуального обзора структуры
> Убедись, что утилита tree установлена: sudo apt install tree (или brew install tree для macOS)
@linux_education
❤5
🆕 FreeBSD 14.3: новый релиз с улучшенной аппаратной поддержкой.
После полугода разработки вышло обновление популярной серверной ОС. В новой версии появилась полноценная поддержка Wi-Fi 5 (802.11ac) через Linux-совместимый слой, что особенно важно для пользователей ноутбуков с чипами Intel и Realtek.
В новом обновлении разработчики продолжили интеграцию с Linux-экосистемой — теперь в репозиториях доступны OCI-контейнеры. Также стоит отметить улучшения в работе с jail-окружениями и виртуальными сетевыми стеками, что делает FreeBSD ещё привлекательнее для облачных развёртываний.
🔗 Ссылка - *клик* (https://www.freebsd.org/)
@linux_education
После полугода разработки вышло обновление популярной серверной ОС. В новой версии появилась полноценная поддержка Wi-Fi 5 (802.11ac) через Linux-совместимый слой, что особенно важно для пользователей ноутбуков с чипами Intel и Realtek.
В новом обновлении разработчики продолжили интеграцию с Linux-экосистемой — теперь в репозиториях доступны OCI-контейнеры. Также стоит отметить улучшения в работе с jail-окружениями и виртуальными сетевыми стеками, что делает FreeBSD ещё привлекательнее для облачных развёртываний.
🔗 Ссылка - *клик* (https://www.freebsd.org/)
@linux_education
👍6
🖥 Быстрый совет Linux: удаление пустых папок
Хотите быстро очистить систему от пустых директорий?
Используйте find:
$ find . -type d -empty -exec rmdir -v {} +
🔸 -type d — ищем директории
🔸 -empty — выбираем только пустые
🔸 -exec rmdir -v {} — удаляем через rmdir, который сам проверяет, пуста ли папка
📌 Альтернатива — короче и так же эффективно:
$ find . -type d -empty -delete
Простой способ держать ваш проект в порядке!
@linux_education
Хотите быстро очистить систему от пустых директорий?
Используйте find:
$ find . -type d -empty -exec rmdir -v {} +
🔸 -type d — ищем директории
🔸 -empty — выбираем только пустые
🔸 -exec rmdir -v {} — удаляем через rmdir, который сам проверяет, пуста ли папка
📌 Альтернатива — короче и так же эффективно:
$ find . -type d -empty -delete
Простой способ держать ваш проект в порядке!
@linux_education
👍8
🐧 Запусти полноценный Linux прямо в браузере — без сервера, без установки
WebVM от Leaning Technologies — браузерная виртуальная Linux‑машина, полностью клиентская (HTML5/WebAssembly)!
🚀 Возможности
• 🗄️ Запускает неизменённые x86‑бинарники (например, Debian‑дистрибутив) прямо в браузере
• Все выполняется локально — без серверной поддержки
• WebAssembly‑виртуализация через CheerpX: JIT‑компиляция x86 в Wasm + syscalls‑эмулятор
📦 Что включено
• Поддержка полноценного Debian с GCC, Python, Node.js и другими dev‑инструментами
• UI‑окружение с Xorg и i3 (с версии 2.0 появилось графическое рабочее место)
• Постоянное хранилище через IndexedDB + on‑demand загрузка диск‑блоков через CloudFlare Worker
• Сетевая интеграция через Tailscale VPN поверх WebSocket
🔧 Как запустить
1. Форкнуть репозиторий и активировать GitHub Pages
2. CI‑workflow автоматически развернёт вашу VM
3. Также можно локально: скачать ext2‑образ Debian, склонировать репо и запустить dev‑режим
🎯 Для кого это
• Разработчики, которым нужно быстрое тестовое окружение на любой машине
• Образовательные платформы, желающие дать студентам доступ к Linux‑инструментарию
• Исследователи WebAssembly/виртуализации
• Все, кто хочет запускать настоящий Linux без установки или докеров
💡 Почему это круто
• 🧩 Нет backend‑а — всё работает прямо в браузере и безопасно (браузерный sandbox)
• ✅ Подходит даже для мобильных устройств и сложных GUI‑приложений
• ⚡ Быстрая загрузка и нулевой хостинг‑cost
⚙️ Как начать
git clone https://github.com/leaningtech/webvm.git
cd webvm
# (опционально) скачайте Debian‑образ из релизов
# настройте GitHub Pages
▪ Github (https://github.com/leaningtech/webvm)
@linux_education
WebVM от Leaning Technologies — браузерная виртуальная Linux‑машина, полностью клиентская (HTML5/WebAssembly)!
🚀 Возможности
• 🗄️ Запускает неизменённые x86‑бинарники (например, Debian‑дистрибутив) прямо в браузере
• Все выполняется локально — без серверной поддержки
• WebAssembly‑виртуализация через CheerpX: JIT‑компиляция x86 в Wasm + syscalls‑эмулятор
📦 Что включено
• Поддержка полноценного Debian с GCC, Python, Node.js и другими dev‑инструментами
• UI‑окружение с Xorg и i3 (с версии 2.0 появилось графическое рабочее место)
• Постоянное хранилище через IndexedDB + on‑demand загрузка диск‑блоков через CloudFlare Worker
• Сетевая интеграция через Tailscale VPN поверх WebSocket
🔧 Как запустить
1. Форкнуть репозиторий и активировать GitHub Pages
2. CI‑workflow автоматически развернёт вашу VM
3. Также можно локально: скачать ext2‑образ Debian, склонировать репо и запустить dev‑режим
🎯 Для кого это
• Разработчики, которым нужно быстрое тестовое окружение на любой машине
• Образовательные платформы, желающие дать студентам доступ к Linux‑инструментарию
• Исследователи WebAssembly/виртуализации
• Все, кто хочет запускать настоящий Linux без установки или докеров
💡 Почему это круто
• 🧩 Нет backend‑а — всё работает прямо в браузере и безопасно (браузерный sandbox)
• ✅ Подходит даже для мобильных устройств и сложных GUI‑приложений
• ⚡ Быстрая загрузка и нулевой хостинг‑cost
⚙️ Как начать
git clone https://github.com/leaningtech/webvm.git
cd webvm
# (опционально) скачайте Debian‑образ из релизов
# настройте GitHub Pages
▪ Github (https://github.com/leaningtech/webvm)
@linux_education
❤2
🐧 Microsoft выпустила WSL 2.6.0 — важное обновление подсистемы для запуска Linux в Windows. Впервые основные компоненты (включая утилиты командной строки и сервисы виртуальной машины) стали открытыми под лицензией MIT, делая их более прозрачным для сообщества.
Новая версия основана на ядре Linux 6.6 с оптимизациями для Windows: ускоренный запуск, экономия памяти и кастомизированный набор драйверов. WSL по-прежнему работает в изолированном окружении с ext4 и виртуальным сетевым адаптером, предлагая почти нативный Linux-опыт внутри Windows.
🔗 Ссылка - *клик* (https://github.com/microsoft/WSL/releases/tag/2.6.0)
@linux_education
Новая версия основана на ядре Linux 6.6 с оптимизациями для Windows: ускоренный запуск, экономия памяти и кастомизированный набор драйверов. WSL по-прежнему работает в изолированном окружении с ext4 и виртуальным сетевым адаптером, предлагая почти нативный Linux-опыт внутри Windows.
🔗 Ссылка - *клик* (https://github.com/microsoft/WSL/releases/tag/2.6.0)
@linux_education
❤1
🧹 Быстрый совет по Linux: удаление пустых директорий
Если нужно быстро очистить проект или систему от пустых папок — вот простая команда:
find . -type d -empty -exec rmdir -v {} +
🔍 Разбор:
• -type d — ищет только директории
• -empty — отбирает пустые
• -exec rmdir -v {} + — удаляет их с подробным выводом
✅ Безопасно: rmdir не удалит непустые папки.
📦 Альтернатива — короче и так же эффективно:
find . -type d -empty -delete
Здесь -delete автоматически удаляет все найденные пустые каталоги.
Выбирайте вариант под свои задачи — оба работают надёжно.
@linux_education
Если нужно быстро очистить проект или систему от пустых папок — вот простая команда:
find . -type d -empty -exec rmdir -v {} +
🔍 Разбор:
• -type d — ищет только директории
• -empty — отбирает пустые
• -exec rmdir -v {} + — удаляет их с подробным выводом
✅ Безопасно: rmdir не удалит непустые папки.
📦 Альтернатива — короче и так же эффективно:
find . -type d -empty -delete
Здесь -delete автоматически удаляет все найденные пустые каталоги.
Выбирайте вариант под свои задачи — оба работают надёжно.
@linux_education
👍3❤2
🖥 1Panel (https://github.com/1Panel-dev/1Panel) — открытый веб-интерфейс для управления Linux-серверами!
🌟 Он интегрирует функции мониторинга серверов, управления контейнерами, базами данных и веб-сайтами, а также систему резервного копирования и восстановления. Платформа поддерживает развертывание сайтов (включая WordPress) с одной кнопки, автоматическое обновление приложений и безопасность через контейнеризацию.
🔐 Лицензия: GPL-3.0
🖥 Github (https://github.com/1Panel-dev/1Panel)
@golang_google
@linux_education
🌟 Он интегрирует функции мониторинга серверов, управления контейнерами, базами данных и веб-сайтами, а также систему резервного копирования и восстановления. Платформа поддерживает развертывание сайтов (включая WordPress) с одной кнопки, автоматическое обновление приложений и безопасность через контейнеризацию.
🔐 Лицензия: GPL-3.0
🖥 Github (https://github.com/1Panel-dev/1Panel)
@golang_google
@linux_education
👍1
🔐 Критическая уязвимость в Gogs: удалённое выполнение кода через симлинки. В популярной платформе для хостинга git-репозиториев обнаружена опасная брешь, получившая максимальный балл (10/10) по шкале уязвимостей. Проблема кроется в неполной проверке операций с файлами в каталоге .git — злоумышленник может манипулировать символическими ссылками для изменения чужого кода или выполнения произвольных команд на сервере.
Уязвимость стала следствием частичного исправления прошлогодней проблемы CVE-2024-39931. Разработчики закрыли возможность загрузки файлов в .git, но упустили сценарий с удалением через симлинки. Уже выпущено исправление в версии 0.13.3, которое настоятельно рекомендуется установить всем пользователям Gogs.
🔗 Ссылка - *клик* (https://github.com/gogs/gogs/security/advisories/GHSA-wj44-9vcg-wjq7)
@linux_education
Уязвимость стала следствием частичного исправления прошлогодней проблемы CVE-2024-39931. Разработчики закрыли возможность загрузки файлов в .git, но упустили сценарий с удалением через симлинки. Уже выпущено исправление в версии 0.13.3, которое настоятельно рекомендуется установить всем пользователям Gogs.
🔗 Ссылка - *клик* (https://github.com/gogs/gogs/security/advisories/GHSA-wj44-9vcg-wjq7)
@linux_education
🧠 Задача для продвинутых Linux-админов: "Сломанный сервис, который живет вне systemd"
📌 Условие:
У вас есть продакшн‑сервер (Debian/Ubuntu), на котором внезапно начала "умирать" часть бэкенда. Логи в /var/log ничего не показывают, systemctl уверяет, что все сервисы активны. Но один внутренний микросервис processord исчезает каждые 5–10 минут и появляется снова. Пользователи жалуются на случайные 502.
🔎 Что известно:
• В ps aux вы иногда видите processord, а иногда нет
• В journalctl — тишина
• В systemctl list-units — такого юнита нет
• При netstat -tulpen видно, что processord слушает порт 9090, но ненадолго
• Cron выглядит чисто (`crontab -l`, `/etc/cron.*`)
• sshd_config, .bashrc, .profile не тронуты
• /etc/init.d/, /etc/rc.local не содержат вызовов processord
• В /tmp появляется временный скрипт с нечитаемым именем
🧩 Вопросы:
1. Где может прятаться запуск processord, если systemd его не знает?
2. Как отследить, кто запускает процесс?
3. Почему процесс "исчезает" и кто его убивает?
4. Как бы вы автоматизировали его отслеживание без полной остановки сервера?
✅ Разбор и подход к решению:
Шаг 1: Кто его запускает?
Возможные подозреваемые:
- atd — отложенные задачи (проверь `atq`)
- watch, while true, tmux, screen, nohup, disown
- systemd --user (запуск в user-сессии, а не через root)
- ~/.config/systemd/user/ или ~/.config/autostart/
- Unit мог быть удалён, но процесс остался под другим shell'ом
📌 Используй:
auditctl -a exit,always -F arch=b64 -S execve
ausearch -x /usr/bin/processord
inotifywait -mr /tmp /etc /home -e create,open,exec
Шаг 2: Кто его убивает?
Варианты:
OOM-killer (dmesg | grep -i 'killed process')
Сторонняя логика (скрипт мониторинга или autorestart в user‑cron)
ulimit, timeout, или trap внутри родительского скрипта
Нечестный cronjob: проверь /etc/cron.d/, run-parts, anacron и т.д.
📌 Используй:
strace -ff -p $(pidof processord) -o trace.log
или
ps -o ppid= -p $(pidof processord) | xargs pstree -s
Шаг 3: Автоматизация расследования
• Поставь auditd, логируй все execve вызовы
• Используй systemtap или bpftrace для live-трассировки
• Пример:
bpftrace -e 'tracepoint:syscalls:sys_enter_execve { printf("%s %s\n", comm, str(args->argv[0])); }'
💡 Бонус:
Спроси себя — что если процесс стартует... внутри контейнера или chroot? Или через сторонний бинарник типа supervisord, установленный в /opt?
🧩 Вывод:
Это задача не просто про systemd, а про целостное понимание всей экосистемы процессов в Linux. Уверен, вы найдёте processord. Но вот как вы его найдёте — и покажет ваш уровень.
@linux_education
📌 Условие:
У вас есть продакшн‑сервер (Debian/Ubuntu), на котором внезапно начала "умирать" часть бэкенда. Логи в /var/log ничего не показывают, systemctl уверяет, что все сервисы активны. Но один внутренний микросервис processord исчезает каждые 5–10 минут и появляется снова. Пользователи жалуются на случайные 502.
🔎 Что известно:
• В ps aux вы иногда видите processord, а иногда нет
• В journalctl — тишина
• В systemctl list-units — такого юнита нет
• При netstat -tulpen видно, что processord слушает порт 9090, но ненадолго
• Cron выглядит чисто (`crontab -l`, `/etc/cron.*`)
• sshd_config, .bashrc, .profile не тронуты
• /etc/init.d/, /etc/rc.local не содержат вызовов processord
• В /tmp появляется временный скрипт с нечитаемым именем
🧩 Вопросы:
1. Где может прятаться запуск processord, если systemd его не знает?
2. Как отследить, кто запускает процесс?
3. Почему процесс "исчезает" и кто его убивает?
4. Как бы вы автоматизировали его отслеживание без полной остановки сервера?
✅ Разбор и подход к решению:
Шаг 1: Кто его запускает?
Возможные подозреваемые:
- atd — отложенные задачи (проверь `atq`)
- watch, while true, tmux, screen, nohup, disown
- systemd --user (запуск в user-сессии, а не через root)
- ~/.config/systemd/user/ или ~/.config/autostart/
- Unit мог быть удалён, но процесс остался под другим shell'ом
📌 Используй:
auditctl -a exit,always -F arch=b64 -S execve
ausearch -x /usr/bin/processord
inotifywait -mr /tmp /etc /home -e create,open,exec
Шаг 2: Кто его убивает?
Варианты:
OOM-killer (dmesg | grep -i 'killed process')
Сторонняя логика (скрипт мониторинга или autorestart в user‑cron)
ulimit, timeout, или trap внутри родительского скрипта
Нечестный cronjob: проверь /etc/cron.d/, run-parts, anacron и т.д.
📌 Используй:
strace -ff -p $(pidof processord) -o trace.log
или
ps -o ppid= -p $(pidof processord) | xargs pstree -s
Шаг 3: Автоматизация расследования
• Поставь auditd, логируй все execve вызовы
• Используй systemtap или bpftrace для live-трассировки
• Пример:
bpftrace -e 'tracepoint:syscalls:sys_enter_execve { printf("%s %s\n", comm, str(args->argv[0])); }'
💡 Бонус:
Спроси себя — что если процесс стартует... внутри контейнера или chroot? Или через сторонний бинарник типа supervisord, установленный в /opt?
🧩 Вывод:
Это задача не просто про systemd, а про целостное понимание всей экосистемы процессов в Linux. Уверен, вы найдёте processord. Но вот как вы его найдёте — и покажет ваш уровень.
@linux_education
👍6❤2
🛠️ Как реализовать AI-инспектора активности Linux-системы — пошагово
Хочешь построить умный CLI-инструмент, который следит за процессами, сетью и файлами, а потом объясняет их поведение с помощью ИИ? Вот краткий MVP-проект, который ты можешь собрать за выходные.
🔧 1. Сканируем активные процессы
import psutil
def scan_processes():
suspicious = []
for proc in psutil.process_iter(['pid', 'name', 'exe', 'cmdline']):
try:
path = proc.info['exe'] or ''
if '/tmp' in path or 'sh' in proc.info['name']:
suspicious.append(proc.info)
except psutil.AccessDenied:
continue
return suspicious
📡 2. Смотрим, кто слушает порты
import socket
def get_open_ports():
return [conn.laddr.port for conn in psutil.net_connections() if conn.status == 'LISTEN']
🗂 3. Следим за странными изменениями в /tmp
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class TmpWatcher(FileSystemEventHandler):
def on_created(self, event):
print(f"[!] Создан файл в /tmp: {event.src_path}")
🧠 4. Спрашиваем у ИИ — что это значит
import openai
def explain_event(event_text):
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": f"Объясни, может ли это быть вредоносным:\n{event_text}"}],
temperature=0.2,
)
return response['choices'][0]['message']['content']
🎨 5. Красивый вывод через rich
from rich.console import Console
console = Console()
def report(process):
text = f"Подозрительный процесс: {process['name']} — {process['exe']}"
console.print(f"[bold red]⚠️ {text}[/bold red]")
explanation = explain_event(text)
console.print(f"[green]→ {explanation}[/green]")
🏁 Как собрать всё вместе:
Запускаем scan_processes() в цикле каждые 10 секунд
Параллельно запускаем Observer на /tmp
Все события — в очередь, LLM отвечает, rich выводит
📦 Расширения для продвинутых:
• Telegram-уведомления при критических событиях
• Локальный режим с LLM через Ollama или LM Studio
• Export в JSON/CSV/Prometheus
💡 Итог: у тебя будет терминальное приложение, которое в реальном времени отслеживает поведение Linux-системы и объясняет его как человек, но при этом всё на Python.
#python #linux #sysadmin #ai #infosec #terminaltools #weekendbuild
@linux_education
Хочешь построить умный CLI-инструмент, который следит за процессами, сетью и файлами, а потом объясняет их поведение с помощью ИИ? Вот краткий MVP-проект, который ты можешь собрать за выходные.
🔧 1. Сканируем активные процессы
import psutil
def scan_processes():
suspicious = []
for proc in psutil.process_iter(['pid', 'name', 'exe', 'cmdline']):
try:
path = proc.info['exe'] or ''
if '/tmp' in path or 'sh' in proc.info['name']:
suspicious.append(proc.info)
except psutil.AccessDenied:
continue
return suspicious
📡 2. Смотрим, кто слушает порты
import socket
def get_open_ports():
return [conn.laddr.port for conn in psutil.net_connections() if conn.status == 'LISTEN']
🗂 3. Следим за странными изменениями в /tmp
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class TmpWatcher(FileSystemEventHandler):
def on_created(self, event):
print(f"[!] Создан файл в /tmp: {event.src_path}")
🧠 4. Спрашиваем у ИИ — что это значит
import openai
def explain_event(event_text):
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": f"Объясни, может ли это быть вредоносным:\n{event_text}"}],
temperature=0.2,
)
return response['choices'][0]['message']['content']
🎨 5. Красивый вывод через rich
from rich.console import Console
console = Console()
def report(process):
text = f"Подозрительный процесс: {process['name']} — {process['exe']}"
console.print(f"[bold red]⚠️ {text}[/bold red]")
explanation = explain_event(text)
console.print(f"[green]→ {explanation}[/green]")
🏁 Как собрать всё вместе:
Запускаем scan_processes() в цикле каждые 10 секунд
Параллельно запускаем Observer на /tmp
Все события — в очередь, LLM отвечает, rich выводит
📦 Расширения для продвинутых:
• Telegram-уведомления при критических событиях
• Локальный режим с LLM через Ollama или LM Studio
• Export в JSON/CSV/Prometheus
💡 Итог: у тебя будет терминальное приложение, которое в реальном времени отслеживает поведение Linux-системы и объясняет его как человек, но при этом всё на Python.
#python #linux #sysadmin #ai #infosec #terminaltools #weekendbuild
@linux_education
👍4❤2
🧠 Linux: заморозка процесса без SIGSTOP
Обычно чтобы «заморозить» процесс, мы шлём ему SIGSTOP, но есть способ *поставить его на паузу без сигнала* и без потери контроля:
# Приостановить выполнение команды, удерживая её в foreground через SIGTSTP
sleep 9999
^Z # (Ctrl+Z) — ставит в фон и останавливает
# А теперь хитрость: "fg" + "Ctrl+Z" снова — это цикл управления процессом вручную
# Но можно сделать изолированную паузу через cgroups:
cgcreate -g freezer:/pause
cgclassify -g freezer:/pause
echo FROZEN > /sys/fs/cgroup/freezer/pause/freezer.state
🔥 Процесс «замораживается» полностью: 0% CPU, не отвечает на запросы, но не убивается, не выгружается из памяти и можно *в любой момент разморозить*:
echo THAWED > /sys/fs/cgroup/freezer/pause/freezer.state
📦 Используется в Kubernetes, Docker и systemd — а теперь можешь и ты 😉
@linux_education
Обычно чтобы «заморозить» процесс, мы шлём ему SIGSTOP, но есть способ *поставить его на паузу без сигнала* и без потери контроля:
# Приостановить выполнение команды, удерживая её в foreground через SIGTSTP
sleep 9999
^Z # (Ctrl+Z) — ставит в фон и останавливает
# А теперь хитрость: "fg" + "Ctrl+Z" снова — это цикл управления процессом вручную
# Но можно сделать изолированную паузу через cgroups:
cgcreate -g freezer:/pause
cgclassify -g freezer:/pause
echo FROZEN > /sys/fs/cgroup/freezer/pause/freezer.state
🔥 Процесс «замораживается» полностью: 0% CPU, не отвечает на запросы, но не убивается, не выгружается из памяти и можно *в любой момент разморозить*:
echo THAWED > /sys/fs/cgroup/freezer/pause/freezer.state
📦 Используется в Kubernetes, Docker и systemd — а теперь можешь и ты 😉
@linux_education
❤2
⚙️ Продвинутый трюк в Linux: извлечение пароля из закрытого `sudo`
Один раз ввёл sudo — и хочешь достать пароль из кеша? Не получится. Но можно сделать почти невозможное — выполнить команду от имени `sudo`, не вводя пароль заново, *используя сокет `sudo`*:
sudo -v # обновим кеш
SUDO_ASKPASS=/bin/false sudo -A ls 2>/dev/null # 💡 обманем sudo, не вводя пароль
А теперь жёстче:
sudo -n true || echo "🔐 Sudo истек, пароль нужен"
🔍 А что делает `-n`?
Флаг -n означает "non-interactive" — sudo не будет спрашивать пароль. Вместо этого просто выйдет с ошибкой. Это удобно в CI/CD, cron-скриптах и других автоматизациях.
👾 Бонус: хочешь узнать, сколько осталось до истечения `sudo`-сессии?
sudo -n true && echo "Осталось $(($(stat -c %Y ~/.sudo_as_admin_successful)+15*60 - $(date +%s))) секунд"
⏳ Кеш по умолчанию живёт 15 минут. Зная это — ты можешь грамотно автоматизировать действия с правами суперпользователя без риска застрять на вводе пароля.
📌
@linux_education
Один раз ввёл sudo — и хочешь достать пароль из кеша? Не получится. Но можно сделать почти невозможное — выполнить команду от имени `sudo`, не вводя пароль заново, *используя сокет `sudo`*:
sudo -v # обновим кеш
SUDO_ASKPASS=/bin/false sudo -A ls 2>/dev/null # 💡 обманем sudo, не вводя пароль
А теперь жёстче:
sudo -n true || echo "🔐 Sudo истек, пароль нужен"
🔍 А что делает `-n`?
Флаг -n означает "non-interactive" — sudo не будет спрашивать пароль. Вместо этого просто выйдет с ошибкой. Это удобно в CI/CD, cron-скриптах и других автоматизациях.
👾 Бонус: хочешь узнать, сколько осталось до истечения `sudo`-сессии?
sudo -n true && echo "Осталось $(($(stat -c %Y ~/.sudo_as_admin_successful)+15*60 - $(date +%s))) секунд"
⏳ Кеш по умолчанию живёт 15 минут. Зная это — ты можешь грамотно автоматизировать действия с правами суперпользователя без риска застрять на вводе пароля.
📌
@linux_education
❤7
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Полезная команда: `fuser` — кто занял порт или файл?
Хочешь узнать, какой процесс держит порт или блокирует файл? Не нужен lsof, просто:
fuser -vn tcp 8000
→ покажет PID, кто занял порт 8000.
Проверка файла:
fuser /var/log/syslog
Убить все процессы, использующие /mnt/usb:
fuser -km /mnt/usb
🚀 Быстро. Просто. Работает там, где lsof молчит.
@linux_education
Хочешь узнать, какой процесс держит порт или блокирует файл? Не нужен lsof, просто:
fuser -vn tcp 8000
→ покажет PID, кто занял порт 8000.
Проверка файла:
fuser /var/log/syslog
Убить все процессы, использующие /mnt/usb:
fuser -km /mnt/usb
🚀 Быстро. Просто. Работает там, где lsof молчит.
@linux_education
❤6👍5
🐚 Bash 5.3 — большое обновление любимой оболочки
Спустя 3 года после релиза Bash 5.2 представлена новая версия — GNU Bash 5.3, и в ней много интересного:
🔧 Новая командная подстановка
Теперь можно выполнить команду *внутри текущей оболочки*, сохранив результат в переменную REPLY:
${| echo hello; } # REPLY=hello
🧠 Поддержка стандарта C23
Код обновлён под новый стандарт C23. Это означает отказ от старых K&R-компиляторов.
🔍 Поиск без учёта регистра в Readline 8.3
Теперь можно включить опцию set completion-ignore-case on для автозаполнения и поиска в истории.
📁 GLOBSORT: управление сортировкой автодополнения
Новая переменная окружения GLOBSORT позволяет настраивать сортировку файлов при завершении (по имени, размеру, дате и др).
📜 Новые опции:
read -E — подключение Readline при вводе.
compgen -V myvar — сохранить список завершений в переменную.
source -p ./scripts — задать путь для поиска скриптов.
🐛 Исправления и улучшения
- Улучшены сообщения об ошибках и подсказки.
- Поддержка нескольких сопроцессов (MULTIPLE_COPROCS).
- Улучшена обработка сигналов, trap, wait, bind и др.
- Расширенные POSIX-совместимые возможности.
📥 Как установить
Скачать можно с официального gnu.org (https://ftp.gnu.org/gnu/bash/)или в репозиториях большинства дистрибутивов.
🔥 Это крупнейшее обновление Bash за последние годы — особенно для тех, кто пишет сложные shell-скрипты.
📌 Подробнее (https://www.phoronix.com/news/GNU-Bash-5.3)
📌
@linux_education
Спустя 3 года после релиза Bash 5.2 представлена новая версия — GNU Bash 5.3, и в ней много интересного:
🔧 Новая командная подстановка
Теперь можно выполнить команду *внутри текущей оболочки*, сохранив результат в переменную REPLY:
${| echo hello; } # REPLY=hello
🧠 Поддержка стандарта C23
Код обновлён под новый стандарт C23. Это означает отказ от старых K&R-компиляторов.
🔍 Поиск без учёта регистра в Readline 8.3
Теперь можно включить опцию set completion-ignore-case on для автозаполнения и поиска в истории.
📁 GLOBSORT: управление сортировкой автодополнения
Новая переменная окружения GLOBSORT позволяет настраивать сортировку файлов при завершении (по имени, размеру, дате и др).
📜 Новые опции:
read -E — подключение Readline при вводе.
compgen -V myvar — сохранить список завершений в переменную.
source -p ./scripts — задать путь для поиска скриптов.
🐛 Исправления и улучшения
- Улучшены сообщения об ошибках и подсказки.
- Поддержка нескольких сопроцессов (MULTIPLE_COPROCS).
- Улучшена обработка сигналов, trap, wait, bind и др.
- Расширенные POSIX-совместимые возможности.
📥 Как установить
Скачать можно с официального gnu.org (https://ftp.gnu.org/gnu/bash/)или в репозиториях большинства дистрибутивов.
🔥 Это крупнейшее обновление Bash за последние годы — особенно для тех, кто пишет сложные shell-скрипты.
📌 Подробнее (https://www.phoronix.com/news/GNU-Bash-5.3)
📌
@linux_education
👍4❤2
🔓 ИИ-бот для найма в McDonald’s взломан — админы использовали пароль "123456"
Хакеры получили доступ к рекрутинговому боту Olivia от Paradox AI, который используется в системе McHire для проведения первичных интервью. Причина? Тривиальный пароль администратора — 123456.
🧾 В результате утекли данные 64 миллионов соискателей: имена, email, телефоны и даже ответы на собеседования.
🤖 Olivia — это AI-рекрутер, который общается с кандидатами и помогает автоматизировать найм в McDonald’s. Теперь же он стал примером, как не надо защищать корпоративные ИИ-системы.
📉 Урок: неважно, насколько умён ваш ИИ — если безопасность на уровне "123456", долго он не проживёт.
К — кибербезопасность. И к здравому смыслу.
@linux_education
Хакеры получили доступ к рекрутинговому боту Olivia от Paradox AI, который используется в системе McHire для проведения первичных интервью. Причина? Тривиальный пароль администратора — 123456.
🧾 В результате утекли данные 64 миллионов соискателей: имена, email, телефоны и даже ответы на собеседования.
🤖 Olivia — это AI-рекрутер, который общается с кандидатами и помогает автоматизировать найм в McDonald’s. Теперь же он стал примером, как не надо защищать корпоративные ИИ-системы.
📉 Урок: неважно, насколько умён ваш ИИ — если безопасность на уровне "123456", долго он не проживёт.
К — кибербезопасность. И к здравому смыслу.
@linux_education
👍7❤3
🦅 MongoDB представила Kingfisher — инструмент для оценки производительности AI-запросов к базам данных
Kingfisher — это open-source фреймворк, который помогает разработчикам анализировать, как AI-модели взаимодействуют с MongoDB или другими источниками данных.
🔍 Что умеет:
- Генерировать и запускать естественно-языковые запросы к базе через LLM
- Сравнивать разные подходы к генерации и верификации запросов
- Измерять точность, скорость и релевантность выдачи
- Поддерживает разные схемы данных и шаблоны диалогов
📦 Используется:
- Для оценки качества AI-агентов, которые обращаются к базам
- Для настройки моделей, работающих с реальными данными
🛠 Под капотом:
- Поддержка собственного DSL
- Интеграции с OpenAI, Azure, Anthropic
- Расширяемая архитектура: можно подключать свои модели и пайплайны
🔗 Репозиторий: https://github.com/mongodb/kingfisher
Если вы строите LLM-агентов, которые работают с базами — Kingfisher сэкономит вам недели на тестах и экспериментах.
@linux_education
Kingfisher — это open-source фреймворк, который помогает разработчикам анализировать, как AI-модели взаимодействуют с MongoDB или другими источниками данных.
🔍 Что умеет:
- Генерировать и запускать естественно-языковые запросы к базе через LLM
- Сравнивать разные подходы к генерации и верификации запросов
- Измерять точность, скорость и релевантность выдачи
- Поддерживает разные схемы данных и шаблоны диалогов
📦 Используется:
- Для оценки качества AI-агентов, которые обращаются к базам
- Для настройки моделей, работающих с реальными данными
🛠 Под капотом:
- Поддержка собственного DSL
- Интеграции с OpenAI, Azure, Anthropic
- Расширяемая архитектура: можно подключать свои модели и пайплайны
🔗 Репозиторий: https://github.com/mongodb/kingfisher
Если вы строите LLM-агентов, которые работают с базами — Kingfisher сэкономит вам недели на тестах и экспериментах.
@linux_education
❤3
⚡️ Шпаргалка по скобкам в Bash — для тех, кто путается между `[]`, `{}`, `$( )` и остальными
На одной картинке — все популярные скобки и окружения в Bash:
$(), {}, [], $(( )), ${}, () и [[ ]].
Когда и зачем использовать:
- условия и проверки
- подстановки значений
- арифметика
- группировка команд
- модификация переменных
Минимум теории — максимум пользы, чтобы больше не гадать, какие скобки ставить.
@linux_education
На одной картинке — все популярные скобки и окружения в Bash:
$(), {}, [], $(( )), ${}, () и [[ ]].
Когда и зачем использовать:
- условия и проверки
- подстановки значений
- арифметика
- группировка команд
- модификация переменных
Минимум теории — максимум пользы, чтобы больше не гадать, какие скобки ставить.
@linux_education
👍5❤1
🧠 Продвинутый совет по Linux: динамический контроль лимитов ulimit на лету
Когда запускаешь ресурсоёмкие процессы (например, компиляцию, docker-контейнеры или нагрузочное тестирование), может внезапно ударить лимит ulimit на число открытых файлов.
🔧 Вместо перезапуска сессию, можно *временно изменить лимит* прямо из shell-скрипта или командной строки, не трогая глобальные настройки:
ulimit -n 1048576
Или так — для конкретного процесса:
bash -c 'ulimit -n 1048576; exec your_command'
🎯 А теперь магия — чтобы повысить лимит до системного предела, проверь сначала максимальное значение:
cat /proc/sys/fs/file-max
А затем отредактируй:
sudo sysctl -w fs.file-max=2097152
🛡️ Важно: чтобы всё это сохранялось после перезагрузки — пропиши в /etc/security/limits.conf и /etc/sysctl.conf.
@linux_education
Когда запускаешь ресурсоёмкие процессы (например, компиляцию, docker-контейнеры или нагрузочное тестирование), может внезапно ударить лимит ulimit на число открытых файлов.
🔧 Вместо перезапуска сессию, можно *временно изменить лимит* прямо из shell-скрипта или командной строки, не трогая глобальные настройки:
ulimit -n 1048576
Или так — для конкретного процесса:
bash -c 'ulimit -n 1048576; exec your_command'
🎯 А теперь магия — чтобы повысить лимит до системного предела, проверь сначала максимальное значение:
cat /proc/sys/fs/file-max
А затем отредактируй:
sudo sysctl -w fs.file-max=2097152
🛡️ Важно: чтобы всё это сохранялось после перезагрузки — пропиши в /etc/security/limits.conf и /etc/sysctl.conf.
@linux_education
❤2