PyLinux - Всё о Linux, Python и IT
10.4K subscribers
1.4K photos
39 videos
2 files
1.28K links
У нас ты найдешь 👇

- библиотеки и скрипты python
- инструменты linux
- полезный софт
- важнейшие новости из мира IT

Связь с админом: @ghostifix

Купить рекламу: https://telega.in/c/pylinux0

РКН: 5999153523
Download Telegram
📁 Поиск и удаление пустых папок в Linux

Со временем в системе скапливаются пустые директории — после удаления пакетов, распаковки архивов или неудачных установок. Эти команды помогут находить и при необходимости удалять такие папки.

📌 Полезные команды

# Найти все пустые папки в системе (может занять время)
find / -type d -empty 2>/dev/null

# Найти пустые директории в домашнем каталоге
find ~/ -type d -empty

# Удалить все пустые директории в указанной папке
find /path/to/dir -type d -empty -delete

# Посчитать количество пустых папок в каталоге
find /path/to/dir -type d -empty | wc -l

# Найти только "глубоко пустые" каталоги (вложенные без файлов)
find /path/to/dir -depth -type d -empty


🟢 find -empty помогает быстро выявить пустые директории
🟢 -delete автоматически очищает мусор
🟢 Удобно применять для домашней папки, временных каталогов, старых проектов

🗣 Эти команды полезны для чистки системы, подготовки проекта к архивированию или уменьшения размеров Docker-образов.

😎 PyLinux | #linux
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤‍🔥1🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁48💯1
⚙️ Библиотека Python: sorcery

sorcery — это удобная отладочная библиотека, которая позволяет печатать переменные с их именами с помощью магического print(expr) — без необходимости вручную писать имена.

Полезна, когда нужно быстро выводить значения переменных для отладки, но лень писать f"{var=}" или использовать ic().

⚙️ Пример использования

from sorcery import spell

@spell
def test():
name = "Alice"
age = 30
print(name, age) # Автоматически напечатает: name='Alice', age=30

test()

name='Alice', age=30


Преимущества:


🟢 Не требует вручную писать имена переменных
🟢 Работает как print() — просто и быстро
🟢 Можно использовать как декоратор или контекстный менеджер

✔️ Установка

pip install sorcery


➡️ Ссылка на документацию

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
🔜 Дискретное преобразование Фурье в живых картинках для девятиклассников

Показываю, как работает дискретное преобразование Фурье, не через формулы, а через анимации, синусоиды и телефонные гудки. Всё — на уровне 9 класса и с Python.

🖥 Перейти к статье

😎 PyLinux | #articles
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥10👍6🔥1
🗂 Автоматическое сканирование и логирование новых файлов в каталоге

Если вы хотите отслеживать появление новых файлов в определённой директории (например, загрузки, обмен данными или бэкапы), этот скрипт поможет вести лог всех изменений.

⚙️ Исходный код

#!/bin/bash

WATCH_DIR="/home/user/incoming"
LOG_FILE="/var/log/new_files.log"
STATE_FILE="/var/tmp/last_files_state.txt"

echo "📁 Сканирование новых файлов в $WATCH_DIR..." | tee -a $LOG_FILE

# Получаем текущий список файлов
find "$WATCH_DIR" -type f > /tmp/current_files.txt

# Если это первый запуск — сохраняем текущий список и выходим
if [ ! -f "$STATE_FILE" ]; then
cp /tmp/current_files.txt "$STATE_FILE"
echo "⚠️ Первичный запуск — база создана." | tee -a $LOG_FILE
exit 0
fi

# Ищем новые файлы по сравнению с предыдущим состоянием
NEW_FILES=$(comm -13 "$STATE_FILE" /tmp/current_files.txt)

if [ -n "$NEW_FILES" ]; then
echo "🆕 Найдены новые файлы:"
echo "$NEW_FILES" | tee -a $LOG_FILE
else
echo "✔️ Новых файлов не обнаружено." | tee -a $LOG_FILE
fi

# Обновляем состояние
cp /tmp/current_files.txt "$STATE_FILE"


🟢 find быстро обходит все файлы в каталоге
🟢 comm сравнивает текущее и предыдущее состояния
🟢 Удобно использовать для мониторинга папок обмена, логов, загрузок и т.д.

➡️ Добавьте в crontab для регулярного сканирования:
*/15 * * * * /path/to/watch_new_files.sh


🗣 Подходит для систем, где важно знать, что и когда появилось — например, при интеграции с внешними источниками данных.


😎 PyLinux | #scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
Please open Telegram to view this post
VIEW IN TELEGRAM
😁33❤‍🔥2
➡️ Изучал Python через практику, и вот, что из этого вышло

В видео рассказываю, как с нуля на практике учил Python, собирая ботов под свои задачи. Без теории и учебников — только гайды, гугл и цель. Работает? Значит, учусь.

📱 Ссылка на источник

😎 PyLinux | #videos
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
🔜 Как обуздать хаос в распределенной и быстрорастущей ИТ-команде

Рассказал, как мы из хаоса с 11К серверов и 35 админов сделали предсказуемую систему: процессы, документы, порядок. Боль, рост и немного спасительной бюрократии.

🖥 Перейти к статье

😎 PyLinux | #articles
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🤔3❤‍🔥1
🔆 Управление яркостью и питанием экрана в Linux

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

📌 Полезные команды

# Показать текущий уровень яркости
cat /sys/class/backlight/*/brightness

# Показать максимальный уровень яркости
cat /sys/class/backlight/*/max_brightness

# Установить яркость вручную (например, 50%)
echo 50 | sudo tee /sys/class/backlight/*/brightness

# Установить экран в спящий режим после 5 минут бездействия
xset s 300

# Полностью отключить экран после 10 минут простоя
xset dpms 0 0 600

# Немедленно выключить экран вручную
xset dpms force off


🟢 /sys/class/backlight/ позволяет напрямую управлять уровнем подсветки
🟢 xset управляет экраном и таймерами энергосбережения

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

😎 PyLinux | #linux
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11❤‍🔥1
Можно просить повышение...🚬

😎 PyLinux | #memes
Please open Telegram to view this post
VIEW IN TELEGRAM
😁39👍4❤‍🔥2🔥2
⚙️ Библиотека Python: cloup

cloup — это расширение для Click, добавляющее поддержку группировки опций, взаимных зависимостей и контекстных ограничений.

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

⚙️ Пример использования

import cloup
from cloup import option_group

@cloup.command()
@option_group(
"Авторизация",
cloup.option("--user", help="Имя пользователя"),
cloup.option("--token", help="API токен")
)
@option_group(
"Настройки вывода",
cloup.option("--verbose", is_flag=True),
cloup.option("--json", is_flag=True)
)
def cli(user, token, verbose, json):
print(f"👤 User: {user}, Token: {token}")
print(f"🔧 Verbose: {verbose}, JSON: {json}")

if __name__ == "__main__":
cli()


Преимущества:


🟢 Группировка опций по смыслу прямо в --help
🟢 Валидация зависимых и исключающих опций
🟢 Поддержка ограничений и логических условий

✔️ Установка

pip install cloup


➡️ Ссылка на документацию

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤‍🔥2
🔜 Парсим YouTube на Python как для взрослых: отказоустойчивый скрипт с ротацией ключей

Путь парсинга YouTube — через хаки, боль и падения. Но всё равно всё заканчивается одним: официальным YouTube Data API v3. Там квоты, но хотя бы без боли..

🖥 Перейти к статье

😎 PyLinux | #articles
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥8
🔁 Автоматическая проверка и перезапуск зависших systemd-сервисов в Linux

Иногда systemd-службы зависают или перестают отвечать, оставаясь "активными". Этот скрипт помогает выявить неработающие сервисы по логике "нет активных сокетов / нет сетевого ответа" и перезапускает их.

⚙️ Исходный код

#!/bin/bash

# Список сервисов для проверки
SERVICES=("nginx" "postgresql" "my_custom_service")
LOG_FILE="/var/log/systemd_healthcheck.log"

echo "🔍 Проверка состояния сервисов... $(date)" | tee -a $LOG_FILE

for svc in "${SERVICES[@]}"; do
systemctl is-active --quiet "$svc"
STATUS=$?

if [ $STATUS -ne 0 ]; then
echo " Сервис $svc не работает. Перезапускаем..." | tee -a $LOG_FILE
systemctl restart "$svc"
sleep 1
systemctl is-active --quiet "$svc" && echo " $svc запущен повторно." | tee -a $LOG_FILE
else
echo "✔️ $svc работает исправно." | tee -a $LOG_FILE
fi
done


🟢 systemctl is-active проверяет, работает ли служба
🟢 Автоматический перезапуск помогает поддерживать непрерывность работы
🟢 Удобен для nginx, postgresql, celery, flask-сервисов и пр.

➡️ Добавьте в crontab для регулярного мониторинга (например, каждые 10 минут):
*/10 * * * * /path/to/service_healthcheck.sh


🗣 Особенно полезен на серверах без полноценного мониторинга (Prometheus, Zabbix) или в односерверных проектах.


😎 PyLinux | #scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤‍🔥4
Будешь и за тиму отрабатывать 🫠

😎 PyLinux | #memes
Please open Telegram to view this post
VIEW IN TELEGRAM
😁20❤‍🔥1🤣1
➡️ Необычные и ПОЛЕЗНЫЕ утилиты LINUX, о которых вы, скорее всего, не знали

В этом видео я покажу инструменты для повышения продуктивности и удобства при работе с Linux. Хотя упор я делаю именно на Linux, но большинство инструментов могут работать как и на Windows, так и на MacOS.

📱 Ссылка на источник

😎 PyLinux | #videos
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤‍🔥3
🔜 Полиморфизм, мета-программирование и космическая баллистика: 4 доклада о C++ и Linux Kernel

Отобрали 4 лучших доклада с System Level Meetup: для C++ — мета-программирование и девиртуализация, для Linux — kernel bypass и Direct Memory Access на Zynq.

🖥 Перейти к статье

😎 PyLinux | #articles
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
🔃 Сравнение содержимого директорий в Linux

Когда вы синхронизируете резервные копии, разворачиваете новые версии проекта или проверяете содержимое внешнего диска, важно быстро и точно сравнить две папки. Эти команды помогут выявить отличия.

📌 Полезные команды

# Сравнить два каталога побайтово (без рекурсии)
cmp -s dir1/file dir2/file && echo "✔️ Совпадают" || echo " Различия"

# Рекурсивное сравнение двух директорий
diff -qr /path/to/dir1 /path/to/dir2

# Сравнить содержимое директорий с учётом структуры и размеров
rsync -avn /dir1/ /dir2/

# Найти файлы, которых нет во второй папке
comm -23 <(ls dir1 | sort) <(ls dir2 | sort)

# Использовать fdupes для поиска одинаковых файлов в двух местах
fdupes -r /dir1 /dir2

# Визуальное сравнение в терминале (если установлен dirdiff)
sudo apt install dirdiff
dirdiff /path/to/dir1 /path/to/dir2


🟢 diff -qr показывает все отличия файлов и поддиректорий
🟢 rsync -avn безопасно симулирует копирование и выявляет отличия
🟢 comm, cmp, fdupes — удобны для более точечного анализа

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

😎 PyLinux | #linux
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
Тимлидам на заметку

😎 PyLinux | #memes
Please open Telegram to view this post
VIEW IN TELEGRAM
😁41
⚙️ Библиотека Python: PyFunctional

PyFunctional — это мощная библиотека для декларативной обработки коллекций в стиле функционального программирования. Позволяет применять map, filter, reduce и другие операции к потокам данных с лаконичным синтаксисом.

Идеально подходит, если ты хочешь работать с данными в цепочках и писать код, близкий к Scala или LINQ.

⚙️ Пример использования

from functional import seq

# Работа с коллекцией: фильтрация, преобразование, агрегация
data = seq([1, 2, 3, 4, 5]) \
.filter(lambda x: x % 2 == 0) \
.map(lambda x: x * 10) \
.reduce(lambda x, y: x + y)

print(data) # 60

# Обработка строк и списков словарей
names = seq(["Alice", "Bob", "Charlie"]).map(str.upper).to_list()
print(names) # ['ALICE', 'BOB', 'CHARLIE']

users = [
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 20},
{"name": "Charlie", "age": 25}
]

youngest = seq(users).min_by(lambda u: u["age"])
print(youngest) # {'name': 'Bob', 'age': 20}


Преимущества:


🟢 Цепочки обработки данных без промежуточных переменных
🟢 Поддержка генераторов, списков, JSON и CSV
🟢 Функции как в Scala: filter, map, group_by, sum, reduce, flatten

✔️ Установка

pip install PyFunctional


➡️ Ссылка на документацию

😎 PyLinux | #python_libs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥4
🔜 Почему при аутентификации в Linux пароль хуже ключа

Что на самом деле делает Linux, когда ты вводишь пароль? В статье — про механизмы аутентификации, SSH vs пароли и настройки для безопасного входа. Без магии — только сисадминская практика.

🖥 Перейти к статье

😎 PyLinux | #articles
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥5👍5
🧪 Проверка целостности бинарников и конфигураций в Linux

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

⚙️ Исходный код

#!/bin/bash

LOG_FILE="/var/log/integrity_check.log"
echo "🔎 Проверка целостности установленных пакетов... $(date)" | tee -a "$LOG_FILE"

# Устанавливаем debsums, если не установлен
if ! command -v debsums &> /dev/null; then
echo "📦 Установка debsums..." | tee -a "$LOG_FILE"
sudo apt update && sudo apt install -y debsums
fi

# Выполняем проверку всех пакетов
debsums -s | tee -a "$LOG_FILE"

# Проверка только конфигурационных файлов
echo "⚙️ Проверка конфигураций:"
debsums -cs | tee -a "$LOG_FILE"

echo " Проверка завершена." | tee -a "$LOG_FILE"


🟢 debsums проверяет контрольные суммы всех файлов, установленных через APT
🟢 Может обнаружить взломы, ошибки обновлений или случайные изменения
🟢 -cs ограничивает проверку только конфигурационными файлами.

➡️ Добавьте в crontab для регулярной проверки:
@daily /path/to/integrity_check.sh


🗣 Подходит для серверов, критичных к стабильности и безопасности — например, bastion-хостов, шлюзов или CI/CD-инфраструктуры.


😎 PyLinux | #scripts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10