Linux Academy
27.9K subscribers
585 photos
60 videos
5 files
532 links
Admin - @workakkk


РКН: clck.ru/3FmvFv
Download Telegram
👍37😁30💯14👾3👎1
Что такое /dev/null и почему туда направляют данные?

Если вы активно работаете в командной строке, то, вероятно, использовали файл /dev/null для следующих целей:

1️⃣ Убрать из вывода всю ненужную инфу (предупреждения, ошибки и т.д.):

$ find / -name "*.conf" 2>/dev/null


2️⃣ Передать утилите пустой ресурс в качестве аргумента. Делаться это может с целью исключения пользовательских и системных конфигов и применения дефолтных настроек на стороне программы:

$ picom --config /dev/null


3️⃣ Полностью очистить файл:

$ cat /dev/null > bigfile   


Окей, принято, а чем является этот самый /dev/null?

В сущности - это cимвольное псевдо-устройство, которое создается на этапе запуска системы и работает с потоками данных:
$ ls -l
crw-rw-rw- 1 root root 1, 3 Sep 6 08:37 null


О типе устройства говорит первый бит режима файла - c "character".

Ресурс удаляет все записанное в него и возвращает при чтении EOF (End of File). Когда мы взаимодействуем с /dev/null, неявно отрабатывает специальный драйвер ядра, в который и зашита логика.

Если интересно, можно порыться в исходниках с реализацией: drivers/char/mem.c. Код имеет отношение не только к /dev/null, но и к другим символьным устройствам.

Развернем более подробную информацию:

$ stat /dev/null

File: /dev/null
Size: 0 Blocks: 0 IO Block: 4096   character special file
Access: (0666/crw-rw-rw-)  Uid: (0/ root)   Gid: (0/ root)
Access: 2025-01-25 14:42:20.101000002 +0300
...


Этот вывод показывает, что файл имеет размер 0 байт, для него выделено 0 блоков на диске, дата создания = дата запуска системы:

$ who -b  
system boot  2025-01-25 14:42


Права доступа установлены таким образом, что любой может читать и записывать в него, но никто не может его выполнять:

$ echo hello | /dev/null
-bash2: /dev/null: Permission denied


Поскольку файл не исполняемый, мы не можем использовать конвейер |. Единственный способ — использовать перенаправление файлов >, >>.
Please open Telegram to view this post
VIEW IN TELEGRAM
23👌7👍5🔥2🤔1
😁53👍169🥱2
🕷️ Venom C2: Легкий C2 фреймворк для красной команды

Venom C2 — это беззависимый фреймворк на Python3 для управления и контроля, созданный для работы на системах без установки дополнительных пакетов. Он включает сервер на Flask, GUI на Electron и одностраничный агент, который использует AES-шифрование для безопасной передачи данных.

🚀 Основные моменты:
- Беззависимый Python3 агент для управления системами
- Поддержка нескольких операторов через Flask сервер
- AES-шифрование сообщений для безопасности
- GUI на Electron для удобного управления
- Автоматизированная обфускация для обхода EDR

📌 GitHub: https://github.com/boku7/venom

#python
🤷‍♀9👍85🔥4👎1🥴1
🖥 Собираем идеальный Linux-ПК по версии Линуса Торвальдса

В часовом видео Линус Торвальдс вместе с Линусом Себастьяном собрали «идеальную машину» под Linux и обсудили нюансы разработки ядра. Получился редкий взгляд на то, каким железом пользуется создатель Linux.

Выбор комплектующих:

- AMD Ryzen Threadripper 9960X
- Intel Arc B580
- материнская плата GIGABYTE TRX50 AERO D
- SSD Samsung 9100 PRO 2 TB
- кулер Noctua NH-U14S TR5-SP6
- монитор Asus ProArt PA32QCV (31.5", 6K HDR)

Из дистрибутивов Торвальдс по-прежнему отдаёт предпочтение Fedora.

Видео получилось живым и информативным — отличный вариант для просмотра вечером.

https://www.youtube.com/watch?v=mfv0V1SxbNA
Please open Telegram to view this post
VIEW IN TELEGRAM
42🥴10🔥3🙈3
Channel photo updated
Идеальная пытка 😁
Please open Telegram to view this post
VIEW IN TELEGRAM
41😁33🔥20👍6❤‍🔥1
🔥 Новый курс на Stepik: Linux - апгрейд твоих скиллов до уровня инженера

Хватит быть “кликавшим по GUI”. Пора понимать систему изнутри.

Что освоишь:
• Bash, grep, sed, awk - инструменты взрослых админов
• Процессы, сеть, права, логирование и починка поломок
• SSH, firewall, systemd, cron, автозапуск сервисов

После курса: Linux перестаёт быть загадкой - ты будешь работать с ним уверенно.

30% скидка на 48 часов

👉 Начни учиться на Stepik.
🤣106👍4🔥4🎉1
🎨 Если ты думал, как получать цветной вывод команд ping — использую grc (Generic Colourizer).

Он сразу работает с множеством утилит: df, lsblk, free, ps и другими - вывод становится нагляднее и читается быстрее.


📌 Установка (пример для dnf):

sudo dnf install grc

Если используешь Bash, добавь в ~/.bashrc:

GRC_ALIASES=true
[[ -s "/etc/profile.d/grc.sh" ]] && source /etc/profile.d/grc.sh

и перезагрузи оболочку:

source ~/.bashrc

Для Zsh добавь в ~/.zshrc:

[[ -s "/etc/grc.zsh" ]] && source /etc/grc.zsh

и обнови:

source ~/.zshrc


Для других оболочек просто посмотри их документацию - grc легко интегрируется и делает терминал гораздо удобнее.
8👍5🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
🐧 Linux совет дня 💡

Редактируйте файлы прямо из less - мощный трюк для продвинутых пользователей.

Когда вы просматриваете файл в less, просто нажмите клавишу v.
less откроет текущий файл в редакторе, указанном в переменной окружения EDITOR.

После сохранения и выхода из редактора вы автоматически вернётесь в less, где уже увидите обновлённое содержимое.

Удобно, быстро и без выхода из контекста 👌
🔥32👍138👻1
Список полезных команд для работы с telnet, которые могут помочь при подключении и отладке сетевых служб:

Основные команды telnet:
1. Подключение к удаленному хосту:

telnet <hostname> <port>

Пример:

telnet example.com 80

Подключается к хосту example.com на порту 80 (HTTP).

2. Закрытие соединения:
Чтобы завершить сессию, используйте сочетание клавиш:

Ctrl + ] (переход в режим команд)

Затем введите:

quit


3. Отправка текстового запроса после подключения:
Если подключились к порту, например, HTTP-сервера, можно отправить запрос вручную:

GET / HTTP/1.1
Host: example.com

Это выполняет запрос к домашней странице на порту 80.

Встроенные команды telnet (используйте в режиме команд после нажатия Ctrl + ]):

1. help
Показывает список доступных команд telnet:

telnet> help


2. open
Открывает новое соединение с указанным хостом:

telnet> open <hostname> <port>


3. close
Закрывает текущее соединение:

telnet> close


4. display
Показывает текущие параметры подключения:

telnet> display


5. mode
Переключает режим работы telnet (например, line или character):

telnet> mode line


6. send
Отправляет управляющие символы (например, send escape для отправки escape-секвенции):

telnet> send escape


7. status
Показывает статус текущего соединения:

telnet> status


8. set и unset
Настраивают параметры подключения (например, установка режима эхо):

telnet> set echo
telnet> unset echo


Примеры использования telnet:

1. Проверка доступности порта:
Чтобы проверить, открыт ли порт на удаленном сервере:

telnet <hostname> <port>


2. Проверка почтового сервера (SMTP):
Подключение к серверу SMTP:

telnet smtp.example.com 25

Затем можно вручную ввести SMTP-команды, такие как:

EHLO example.com


3. Проверка DNS сервера:
Можно подключиться к DNS-серверу и проверить его ответы:

telnet <dns-server> 53


Эти команды помогут вам для отладки, диагностики и проверки сетевых служб.
12👍10❤‍🔥5🔥4
📌 Linux Namespaces: PID-пространства — часть 2

В первой части мы разобрались, что такое Linux-namespaces и почему они лежат в основе контейнеров.

Теперь — погружаемся в один из самых важных типов: PID-namespace.

Каждый процесс в Linux имеет свой PID (Process ID).
Обычно, если выполнить ps aux, мы увидим все процессы в системе — глобальное пространство PID. Это удобно, но даёт процессам (при наличии прав) возможность наблюдать и взаимодействовать с другими.

Что делает PID-namespace

PID-namespace создаёт изолированное пространство идентификаторов процессов:

- внутри него процессы видят только себя
- нумерация PID начинается снова с 1
- процесс с PID 1 в namespace играет роль локального init
- процессы в разных PID-namespace могут иметь одинаковые PID — без конфликта
- родительский namespace может видеть детей, но не наоборот

Именно поэтому контейнеры выглядят как отдельные системы — хотя ядро у всех общее.

Docker, Podman и другие контейнерные среды активно используют PID-namespaces для изоляции процессов.

Что будем делать

В этой части — создадим свой PID-namespace вручную через unshare, разберём, как работают родительские и дочерние namespaces и почему модель «init внутри контейнера» так важна для корректного завершения процессов.

Это фундамент Linux-изоляции, без которой современная контейнеризация просто невозможна.

Источник: blog.sysxplore.com/p/part-2-linux-namespaces-pid-namespaces
🔥94
Forwarded from Machinelearning
📌Как превратить систему Grace-Hopper в настольный компьютер.

Занимательная история Дэвида Ноэля о том, как он купил ИИ-оборудование корпоративного класса, разработанное для серверных стоек с жидкостным охлаждением, которое затем переоборудовал под воздушное охлаждение, потом снова переоборудовал под водяное, пережил множество ситуаций, близких к катастрофе, и, в итоге получил настольный компьютер, способный запускать модели с 235 миллиардами параметров дома.

Это рассказ о сомнительных решениях и нестандартном подходе к решению проблем. И немного о том, что происходит, когда пытаешься превратить оборудование для ЦОДа в домашний сетап.

Если вы когда-либо задавались вопросом, что нужно для запуска действительно крупных моделей локально, или если вы просто хотите посмотреть, как кто-то разбирает оборудование стоимостью 80 000 долларов, полагаясь лишь на надежду и изопропанол, то эта статья не оставит вас равнодушным.

🔜 Читать рассказ полностью

@ai_machinelearning_big_data
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥125👍5
This media is not supported in your browser
VIEW IN TELEGRAM
🎬 gitlogue - кинематографический инструмент воспроизведения коммитов Git для терминала.

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

🤯 Следите за кодом вашего репо.

🦀 Написано на Rust и собрано с помощью

GitHub: https://github.com/unhappychoice/gitlogue

#rustlang #ratatui #tui #git #commits #replay #terminal #screensavert
🔥95👍2
⚡️ Как AWS реально управляет VPC

AWS VPC - это твоя собственная изолированная сеть в облаке.

Она работает как мини-датацентр, только без физического железа: AWS сам занимается маршрутизацией, безопасностью и масштабированием.

Изоляция VPC
→ Каждый VPC полностью отделён от других.
→ Ты задаёшь свой CIDR-диапазон.
→ Доступ извне возможен только если ты сам его откроешь.

Подсети: публичные и приватные
→ VPC разбивается на субсети в разных зонах (AZ).
→ Публичные субсети выходят в интернет через Internet Gateway.
→ Приватные — через NAT Gateway (только исходящий трафик, без входящего).
→ AWS следит за отказоустойчивостью между зонами.

Как двигается трафик
→ За маршруты отвечают Route Tables.
→ Ты прописываешь правила: интернет, peering, Transit Gateway, VPN и т.д.
→ AWS управляет всей реальной сетевой инфраструктурой — ты только настраиваешь логику.

Защита сети
→ AWS использует две прослойки:
Security Groups — правила на уровне конкретного ресурса (EC2, RDS и т.д.).
Network ACLs — фильтрация пакетов на уровне подсети.
→ Все правила строго применяются через виртуализованную сеть AWS.

Внешние подключения
→ Для доступа наружу AWS предлагает:
— Internet Gateway (двусторонний интернет)
— NAT Gateway (доступ из приватных подсетей)
— Egress-Only IGW (только исходящий IPv6)
→ Всё автоматически масштабируется под нагрузку.

Гибридные сети
→ Можно связать VPC с офисом/датацентром:
— Site-to-Site VPN (через интернет)
— Direct Connect (частная линия до 100 Gbps)
→ AWS обеспечивает резервирование каналов для отказоустойчивости.

Общение между сетями
VPC Peering — приватный канал между двумя VPC.
Transit Gateway — центральный хаб для десятков сетей (VPC + on-prem).
→ AWS управляет маршрутизацией и пропускной способностью автоматически.

Мониторинг
VPC Flow Logs — кто куда ходил.
CloudWatch — метрики.
CloudTrail — кто менял сетевые настройки.
→ Полная прозрачность для аудита, безопасности и диагностики.

AWS делает сложную сетевую архитектуру «невидимой».
Ты управляешь логикой, правилами и доступами — AWS берёт на себя всё остальное.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥74
Аппаратные брейкпойнты: что это и когда они нужны в Linux

В блоге YADRO на Хабре вышло весьма подробное исследование аппаратных брейкпойнтов в Linux. Сначала с точки зрения отладчика раскрывается смысл аппаратных триггеров. Далее автор рассматривает реализацию с их помощью не только брейкпойнтов, но и вотчпойнтов, выделяет кейсы, когда такая реализация уместней софтверной. В завершение следует небольшой гайд по работе с аппаратными брейкпойнтами с помощью Perf Events — фреймворка для профилирования и трассировки в ядре.ㅤㅤ

Интересно, что начинается статья с намеренной поломки GDB. И этому найдется свое объяснение.

Прочитать →
8🔥1🐳1
This media is not supported in your browser
VIEW IN TELEGRAM
Линукс очень удобный.

Тем временем Линукс, когда нужно установить программу:
🔥62💅13🤣11👍7🗿73👎3👏1
Бесплатный вебинар: «GitOps + Flux — ваш путь к автоматизированному деплою в Kubernetes»!

Вы хотите развернуть приложение в Kubernetes без тонны ручных команд и нервов? Мечтаете о системе, где код сам «доставляется» в прод по принципу «закоммитил — заработало»?

Приглашаем вас на открытый урок в рамках курса «Инфраструктурная платформа на основе Kubernetes , где разберём»:
• как перестать вручную деплоить приложения;
• как добиться стабильного состояния кластера;
• как сделать процессы прозрачными и контролируемыми.

🗓 Когда: 23.12, в 20-00
Для кого: DevOps‑инженеры, разработчики, администраторы Kubernetes, все, кто хочет автоматизировать деплой.

На уроке вы узнаете как:
- внедрить GitOps в Kubernetes;
- настроить Flux для автоматической синхронизации;
- избежать ошибок при переходе на «конфигурацию как код».

➡️ Регистрирация: https://tglink.io/c974785d3d45?erid=2W5zFG7muh2

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
3🔥2
🖥️🔌 PortKiller: Убийца процессов на открытых портах для macOS

PortKiller — это удобное приложение для меню на macOS, позволяющее быстро находить и завершать процессы, использующие открытые порты. Идеально подходит для разработчиков, которым нужно освободить порты, такие как 3000, 8080 и другие.

🚀Основные моменты:
- Интеграция в меню — без загромождения Dock
- Автоматическое обнаружение всех прослушивающих TCP портов
- Быстрое завершение процессов одним кликом
- Фильтрация по номеру порта или имени процесса
- Автообновление списка каждые 5 секунд

📌 GitHub: https://github.com/productdevbook/port-killer

#swift
4👍2🔥1
⚡️ Linux Commands / Cheatsheet

Basic Navigation
pwd - показать текущий каталог
ls - список файлов и директорий
ls -l - подробный формат
ls -a - показать скрытые файлы
cd dirname - перейти в директорию
cd .. - вверх на уровень
cd / - корень
cd ~ - домашняя директория
clear - очистить терминал
history - история команд

File & Directory Management
touch file - создать файл
mkdir dir - создать директорию
rmdir dir - удалить пустую директорию
rm file - удалить файл
rm -r dir - удалить директорию рекурсивно
cp src dest - копировать файл
cp -r src dest - копировать директорию
mv src dest - переместить/переименовать
cat file - вывести содержимое
less file - просмотр с пагинацией
head file - первые 10 строк
tail file - последние 10 строк
tail -f file - потоковый вывод

Permissions & Ownership
chmod 755 file - права доступа
chmod u+x file - сделать исполняемым
chown user:group file - владелец
ls -l - просмотр прав

System Info
uname -a - вся системная инфа
hostname - имя хоста
uptime - аптайм
top - процессы
htop - интерактивный монитор
df -h - дисковое пространство
du -sh * - размеры директорий
free -h - память
lscpu - процессор
lsblk - блочные устройства

Process Management
ps - процессы
ps aux - подробный список
kill PID - завершить процесс
killall name - завершить по имени
bg - в фоне
fg - на передний план
jobs - задания

Networking
ifconfig - сеть
ip a - IP адреса
ping host - проверить связь
ss -tuln - открытые порты
curl url - получить данные
wget url - скачать файл
ssh user@host - удалённый вход
scp file user@host:/path - копирование по SSH

Package Management (Ubuntu/Debian)
sudo apt update - обновить индексы
sudo apt upgrade - обновить пакеты
sudo apt install pkg - установить
sudo apt remove pkg - удалить
sudo apt autoremove - очистка

Package Management (RHEL/CentOS)
sudo yum update
sudo yum install pkg
sudo yum remove pkg
sudo dnf install pkg

Archiving & Compression
tar -cvf file.tar dir - создать tar
tar -xvf file.tar - распаковать
gzip file - сжать
gunzip file.gz - распаковать
zip file.zip files - zip
unzip file.zip - unzip

User Management
whoami - текущий пользователь
who - кто в системе
id - инфо о пользователе
sudo adduser user - добавить
sudo passwd user - пароль
sudo deluser user - удалить
su user - переключиться
logout - выйти

Shutdown & Reboot
sudo shutdown now - выключить
sudo shutdown -r now - ребут
reboot - перезапуск
poweroff - выключение

Searching
find /path -name file - поиск по имени
grep 'text' file - поиск текста
grep -r 'text' dir - рекурсивно
locate file - быстрый поиск
updatedb - обновить базу

Disks & Filesystems
fdisk -l - список разделов
mkfs.ext4 /dev/sdX - форматирование
mount /dev/sdX /mnt - монтировать
umount /mnt - размонтировать

Environment & Variables
echo $PATH - переменная PATH
export VAR=value - установить переменную
env - список переменных

Useful Commands
man cmd - документация
alias ll='ls -la' - алиас
date - дата
cal - календарь
exit - выйти
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3013🐳3👎2💅1
🐳32🤣17🎉6😁52😱1