NetworkAdmin.ru
Відкрити в Telegram
Авторский блог про сетевое и системное администрирование. Сайт: networkadmin.ru Реклама: @dad_admin Биржа: https://telega.in/c/networkadminru
Показати більше4 725
Підписники
Немає даних24 години
-47 днів
+230 день
Архів дописів
4 725
⚙️ Ограничение памяти процессов через systemd
Если нужно аккуратно ограничить потребление памяти процессом, systemd делает это буквально из коробки. Причем не грубо, а с понятной логикой: можно замедлять процесс, забирать у него память или в крайнем случае прибивать. Все параметры описаны в документации, но на практике используются лишь несколько ключевых. Разберу их на примере.
▪️ Основные параметры
▪️
MemoryAccounting=yes
Включает учет потребления памяти для юнита. Без этого остальные лимиты просто не работают.
▪️ MemoryHigh=2G
Мягкий лимит. Процесс может его превышать, но systemd начнет активно забирать память и тормозить выполнение. Основной и самый безопасный механизм.
▪️ MemoryMax=3G
Жёсткий предел. При достижении процесс будет убит OOM Killer’ом. Использовать стоит осторожно, скорее как страховку.
▪️ MemorySwapMax=512M
Ограничение на использование swap. Полезно, если не хотите, чтобы сервис утонул в свопе.
▪️ Restart=on-failure
Позволяет автоматически перезапустить сервис, если его убили по памяти.
▪️ OOMPolicy=kill
Определяет поведение при OOM: либо корректная остановка (stop), либо жесткое убийство (kill).
▪️ Пример systemd unit
[Unit]
Description=Node.js Worker
After=network.target
[Service]
ExecStart=/usr/bin/node /opt/app/worker.js
Restart=on-failure
MemoryAccounting=yes
MemoryHigh=2G
MemoryMax=3G
MemorySwapMax=512M
OOMPolicy=kill
[Install]
WantedBy=multi-user.target
▪️ Быстрое тестирование из консоли. Создадим процесс, который пытается съесть 1 ГБ памяти:
node -e 'let a = "x".repeat(1024*1024*1024); setTimeout(()=>{}, 600000)'
Теперь запустим его с лимитами через systemd:
systemd-run --scope \
-p MemoryHigh=300M \
-p MemoryMax=400M \
node -e 'let a = "x".repeat(1024*1024*1024); setTimeout(()=>{}, 600000)'
Процесс запросит гигабайт, но реально получит лишь разрешенный объем.
Проверяем:
ps -o pid,rss,cmd -C node
RSS будет в пределах лимита, даже если виртуальная память (VSZ) гораздо больше.
#linux #systemd
🧑💻 NetworkAdmin4 725
📊 Как уменьшить файловую систему ext4
Файловая система ext4 умеет уменьшаться штатно, при условии, что на разделе достаточно свободного места. В этом ее большое отличие от xfs, которая сжиматься не умеет вообще. Но есть важное ограничение: уменьшение ext4 возможно только в размонтированном виде. На живой системе это не работает.
Если нужно уменьшить корневой раздел, без перезагрузки не обойтись.
▪️ Классический способ. В идеальном мире вы загружаетесь с LiveCD, монтируете нужный раздел и выполняете:
/sbin/resize2fs /dev/sda1 40G
Файловая система на /dev/sda1 будет уменьшена до 40 ГБ, при условии, что данных там меньше этого объема. Перед и после операции настоятельно рекомендуется проверить файловую систему:
/sbin/e2fsck -yf /dev/sda1
Если раздел смонтирован, ничего не получится:
resize2fs: On-line shrinking not supported
e2fsck: Cannot continue, aborting.
▪️ А если LiveCD недоступен? Вот тут начинается самое интересное. resize2fs можно выполнить из initramfs, то есть еще до загрузки основной системы. По сути, мы превращаем initramfs в мини-LiveCD.
1️⃣ Добавляем утилиты в initramfs. Создаем исполняемый файл /etc/initramfs-tools/hooks/resizefs:
#!/bin/sh
set -e
. /usr/share/initramfs-tools/hook-functions
copy_exec /sbin/e2fsck
copy_exec /sbin/resize2fs
2️⃣ Добавляем скрипт выполнения. Создаем исполняемый файл /etc/initramfs-tools/scripts/local-premount/resizefs:
#!/bin/sh
set -e
/sbin/e2fsck -yf /dev/sda1
/sbin/resize2fs /dev/sda1 40G
/sbin/e2fsck -yf /dev/sda1
3️⃣ Пересобираем initramfs. Смотрим доступные ядра:
ls /boot | grep config
И пересобираем образ, например для последнего ядра:
update-initramfs -u -k 6.1.0-22-amd64
После этого перезагружаемся. Процесс будет выполнен до монтирования root, а значит безопасно с точки зрения блокировок. Если что-то пойдет не так, всегда можно загрузиться с другого ядра, где initramfs не трогали.
#ext4 #filesystems
🧑💻 NetworkAdmin4 725
🕓 Автоматизация работы с дисками и устройствами
В linux все железо - это события. Вставили диск, появился интерфейс, подключили USB - ядро сгенерировало событие, а udev решил, что с ним делать. Если нужно не просто чтобы работало, а чтобы работало как надо, в дело идут udev rules.
▶️ Что такое udev rules
udev rules - это правила, которые: переименовывают устройства задают права и владельцев создают симлинки запускают команды при подключении/отключенииРаботают на уровне событий, без cron, демонов и костылей. 👁 Где живут правила Свои правила кладут сюда:
/etc/udev/rules.d/
Файлы читаются в порядке номеров, например:
10-local.rules
99-usb.rules
▪️ Простой пример: стабильное имя для диска. Допустим, USB-диск каждый раз появляется как sdb, sdc, sdd. Это неудобно.
Смотрим атрибуты:
udevadm info --query=all --name=/dev/sdb
Пишем правило:
SUBSYSTEM=="block", ENV{ID_SERIAL}=="WD_Elements_25A1", SYMLINK+="backup_disk"
Теперь диск всегда доступен как:
/dev/backup_disk
▪️ Права и владелец для устройств. Например, для USB-UART адаптера:
SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE="0660", GROUP="dialout"
Больше не нужно chmod после каждой перезагрузки.
▪️ Автоматический запуск команды. Можно выполнить действие при подключении:
ACTION=="add", SUBSYSTEM=="block", ENV{ID_FS_LABEL}=="DATA", RUN+="/usr/local/bin/mount-data.sh"
▪️ После правок:
udevadm control --reload
udevadm trigger
Или просто переподключить устройство.
#linux #udev
🧑💻 NetworkAdmin4 725
Использование /31 префикса в IP-сетях
/31 в IPv4 — это не «странная маска», а рабочий стандарт для линков точка-точка, особенно при подключении к провайдерам. Но если вы не понимаете, почему это вообще стало возможно и как оно устроено, вы либо переплачиваете адресным пространством на /30, либо боитесь внедрять /31 без уверенности.
📅 На открытом уроке 10 марта в 20:00:
— Разберём, зачем появился /31, как именно работает линк с такой адресацией и чем подход отличается от классического /30.
— После урока вы сможете принимать взвешенное решение, когда /31 уместен, а когда лучше оставить /30.
Урок не для тех, кто хочет «просто запомнить настройку» без понимания механики и ограничений, или рассчитывает закрыть тему IPv4 адресации одной шпаргалкой.
👉 Записаться: https://otus.pw/96aY/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
4 725
🤩 DHCP Relay: как раздавать IP через маршрутизаторы
В простых сетях DHCP-сервер и клиенты обычно находятся в одном сегменте. Клиент шлет broadcast-запрос, сервер отвечает и все работает. Но как только появляется маршрутизатор, broadcast дальше не идет, и DHCP внезапно ломается.
Именно для таких случаев и нужен DHCP relay.
Идея простая: маршрутизатор принимает DHCP-broadcast от клиента и пересылает его unicast’ом на DHCP-сервер в другой сети. Ответ сервера он так же передает обратно клиенту.
▪️ Как это выглядит логически
Клиент: DHCPDISCOVER (broadcast)
Маршрутизатор (relay): ловит запрос и отправляет его на DHCP-сервер
DHCP-сервер: выдает адрес с учетом подсети клиента
Relay: возвращает ответ клиенту
Ключевой момент - relay добавляет в пакет поле giaddr, по которому сервер понимает, из какой сети пришел запрос.
▪️ Пример на Linux (isc-dhcp-relay)
1️⃣ Устанавливаем relay:
apt install isc-dhcp-relay
2️⃣ Указываем IP DHCP-сервера, например 10.50.0.10, и интерфейсы, где сидят клиенты:
INTERFACES="eth1 eth2"
SERVERS="10.50.0.10"
3️⃣ Перезапускаем:
systemctl restart isc-dhcp-relay
Готово. Клиенты из разных VLAN/подсетей будут получать IP от одного центрального DHCP-сервера.
▪️ Где это реально используется
Несколько VLAN, один DHCP-сервер
Офисы с централизованной сетевой инфраструктурой
Wi-Fi контроллеры и L3-коммутаторы
MikroTik / Cisco / Juniper - relay там настраивается аналогично
▪️ Важно помнить
На DHCP-сервере должны быть описаны все подсети
UDP порты 67/68 должны быть разрешены
Без relay DHCP через маршрутизатор не работает по определению
#networking #dhcp
🧑💻 NetworkAdmin4 725
⚡️ Быстрая настройка NFS для временного обмена файлами
Регулярно настраиваю NFS под разные прикладные задачи, чаще всего временные. Когда нужно быстро перекинуть большой объем данных между серверами, NFS почти всегда выигрывает по скорости у scp/ssh, SMB и HTTP. Особенно в локальной сети.
Решил оформить краткую инструкцию, чтобы можно было сохранить и использовать как готовый чеклист.
▪️ Сервер. Обычно все временные шары держу в /mnt:
mkdir /mnt/share
chown nobody:nogroup /mnt/share
Устанавливаем сервер NFS:
apt install nfs-kernel-server
Экспортируем каталог, например, только для клиента 172.16.10.25. Добавляем в /etc/exports:
/mnt/share 172.16.10.25(rw,all_squash,no_subtree_check,crossmnt)
Для всей подсети:
/mnt/share 172.16.10.0/24(rw,all_squash,no_subtree_check,crossmnt)
Для нескольких хостов будет удобнее отдельными строками:
/mnt/share 172.16.10.25(rw,all_squash,no_subtree_check,crossmnt)
/mnt/share 172.16.10.30(rw,all_squash,no_subtree_check,crossmnt)
Применяем конфигурацию:
systemctl restart nfs-server
systemctl status nfs-server
Для работы NFS должен быть доступен TCP порт 2049.
▪️ Клиент. Ставим клиентские утилиты:
apt install nfs-common
Проверяем, что сервер отдает экспорт:
showmount -e 172.16.10.10
Export list for 172.16.10.10:
/mnt/share 172.16.10.25
Монтируем ресурс:
mkdir /mnt/share
mount 172.16.10.10:/mnt/share /mnt/share
Проверяем:
df -h | grep nfs
172.16.10.10:/mnt/share 80G 5.1G 72G 7% /mnt/share
Желательно убедиться, что используется NFSv4:
mount -t nfs4
Тестируем запись:
echo "hello nfs" > /mnt/share/test.txt
При необходимости можно добавить в /etc/fstab:
172.16.10.10:/mnt/share /mnt/share nfs4 defaults 0 0
(и не забыть перевод строки в конце).
Для временных задач - это простой, быстрый и надежный вариант.
#linux #nfs
🧑💻 NetworkAdmin4 725
GRE и IPIP: простые туннели без VPN
Не всегда нужен полноценный VPN с TLS, сертификатами и клиентами. Иногда задача проще: соединить две сети, протянуть маршрут до подсети или завернуть трафик через удалённый узел. В таких случаях отлично подходят GRE и IPIP - легкие L3-туннели, встроенные прямо в ядро Linux.
▪️ IPIP - самый простой вариант
IPIP (IP-in-IP) - это инкапсуляция IP-пакета внутрь другого IP-пакета.
Работает только с IPv4 - IPv4.
Минимальный пример:
Сервер A (1.1.1.1):
ip tunnel add tun0 mode ipip local 1.1.1.1 remote 2.2.2.2
ip addr add 10.10.10.1/30 dev tun0
ip link set tun0 up
Сервер B (2.2.2.2):
ip tunnel add tun0 mode ipip local 2.2.2.2 remote 1.1.1.1
ip addr add 10.10.10.2/30 dev tun0
ip link set tun0 up
Добавляем маршруты - и сети начинают видеть друг друга.
🤩 Плюсы: минимальный overhead; простота; работает из коробки. 🤩 Минусы: только IPv4; нет multicast; нет шифрования; GRE - гибче и мощнее.▪️ GRE (Generic Routing Encapsulation) инкапсулирует практически любой L3-протокол. Поддерживает: IPv4 и IPv6, multicast и динамическую маршрутизацию (OSPF, BGP поверх туннеля) Пример:
ip tunnel add gre1 mode gre local 1.1.1.1 remote 2.2.2.2 ttl 255
ip addr add 10.20.20.1/30 dev gre1
ip link set gre1 up
На второй стороне - зеркальная конфигурация.
🤩 GRE удобен, если: нужно поднять OSPF между площадками; протянуть несколько подсетей; использовать FRR/Quagga; строить overlay-сеть.⚠️ Важный момент: это не VPN Ни IPIP, ни GRE не шифруют трафик. Это просто инкапсуляция. Если нужен encryption: поверх GRE можно поднять IPsec или использовать WireGuard вместо этого 🤩 Когда это удобно Связать два датацентра; Протянуть подсеть в облако; Обойти ограничения провайдера; Сделать статическую связку без сложной PKI. Если задача маршрутизация, а не безопасность, то GRE/IPIP часто проще любого VPN. #linux #networking 🧑💻 NetworkAdmin
4 725
На Stepik добавили курс «Linux с нуля»
Этот курс закрывает всю обязательную Linux-базу для работы в IT. Подойдёт для:
- разработчиков - девопсов и админов - специалистов по данным и ML - специалистов поддержки и сопровождения - тестировщиков и безопасниковВнутри 20+ модулей: от установки Linux и работы с файлами до сетей, прав, дисков, процессов, автоматизации на Bash и многого другого. Всё сразу закрепляется на практике (200+ заданий с автопроверкой) Материал подаётся понятным языком, шаг за шагом, на реальных примерах и с наглядными схемами После прохождения вы получите сертификат, который можно добавить в резюме. В ближайшие 48ч курс доступен со скидкой 30% по промокоду «
NETWORK30»: открыть курс на Stepik4 725
🔒 trusted и encrypted keys: защита секретов с помощью TPM
В linux есть малоизвестный, но крутой механизм хранения секретов прямо на уровне ядра -
trusted и encrypted keys. Это специальные типы ключей из подсистемы linux keyrings, которые позволяют защищать данные без хранения их в открытом виде на диске.
▪️ Encrypted keys. Используются для хранения секретов (паролей, ключей, токенов), которые шифруются мастер-ключом ядра. Сам ключ может храниться на диске, но без загруженной системы он бесполезен.
Пример создания:
keyctl add encrypted dbkey "new user:passphrase 32" @s
Ключ автоматически расшифровывается ядром при использовании, но в файловой системе его содержимое не светится.
▪️ Trusted keys. Более высокий уровень защиты. Такие ключи генерируются и хранятся внутри TPM (Trusted Platform Module) и никогда не покидают его в открытом виде. Ядро получает только дескриптор, а все криптооперации выполняет TPM.
Пример:
keyctl add trusted tpmkey "new 32" @s
Даже root не сможет извлечь значение ключа, только использовать его.
▪️ Где это применяется
защита LUKS (через systemd-cryptenroll);
хранение ключей для dm-crypt;
secrets для сервисов без plaintext-файлов;
привязка данных к конкретному железу.
#linux #security
🧑💻 NetworkAdmin4 725
🟣 pv - контроль скорости и прогресса
pv (Pipe Viewer) - небольшая, но крайне полезная утилита для работы с pipe в Linux/Unix. Она позволяет видеть скорость передачи данных, объем, время работы, а при необходимости ограничивать пропускную способность. Есть почти во всех дистрибутивах:
apt install pv
dnf install pv
▪️ Прогресс-бар там, где его обычно нет. Например, при копировании файла:
pv testfile > testfile_copy
Вы сразу видите скорость, объем и процент выполнения. Аналогично работает при сжатии:
pv testfile | gzip > testfile.gz
▪️ Ограничение скорости через -L. Это спасает SSD, хранилища и гипервизоры от перегрузки:
pv -L 50m testfile > testfile_copy
Тем же способом удобно душить дампы БД:
mysqldump db01 | pv -L 20m > db01.sql
Для каталогов можно передать размер вручную и получить корректный ETA:
tar -czf - /usr | pv -s $(du -sb /usr | grep -o '[0-9]*') > usr.tgz
▪️ Мониторинг файловых дескрипторов процесса:
pv -d <PID>
Показывает, какие файлы реально читаются/пишутся и с какой скоростью.
▪️ Использование через ssh - для лимита канала или замера пропускной способности:
pv /dev/zero | ssh user@host 'cat > /dev/null'
#linux #pv
🧑💻 NetworkAdmin4 725
🌐 Network Engineer - DevOps: один из самых быстрых карьерных переходов в IT. Сети, автоматизация, понимание инфраструктуры - всё уже есть.
Но резюме нужно переупаковать. "Настройка OSPF и BGP" ничего не скажет рекрутеру, который ищет DevOps-инженера. А ATS-фильтр просто не найдёт нужных ключевых слов.
🎯 26 февраля команда GigaDevOps проводит практикум "Собираем DevOps-резюме с AI".
Разберём:
• как переупаковать сетевой опыт под DevOps-вакансии
• как пройти ATS-фильтры
• как использовать AI, чтобы собрать резюме за час
👉 РЕГИСТРАЦИЯ
4 725
💚 Как быстро прибить процесс, который слушает порт
Иногда нужно срочно освободить порт: сервис завис, не перезапускается, новый экземпляр не стартует, а разбираться почему будем потом. Задача простая: найти процесс по порту и завершить его.
▪️ Классический способ. Смотрим, кто слушает порт, через ss, находим PID и убиваем процесс:
ss -tulnp | grep 8080
tcp LISTEN 0 5 0.0.0.0:8080 0.0.0.0:* users:(("python3",pid=5152,fd=3))
kill 5152
Рабочий вариант, но требует двух шагов.
▪️ Быстрее через lsof. Гораздо удобнее использовать lsof, который отлично работает не только с файлами, но и с сетевыми соединениями:
lsof -i:8080
Пример вывода:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
python3 5156 root 3u IPv4 41738 0t0 TCP *:http-alt (LISTEN)
И сразу завершаем процесс:
kill 5156
А если хочется вообще в одно действие:
lsof -i:8080 -t | xargs kill
▪️ Почему lsof? Со временем начинаешь использовать lsof всё чаще:
lsof -i
lsof -i TCP:25
lsof -i TCP@1.2.3.4
Очень наглядно показывает, кто, куда и по какому протоколу подключен.
▪️ Совсем ленивый вариант - killport. Есть утилита killport, которая делает все то же самое одной командой:
killport 8080
В стандартных репозиториях ее обычно нет, придется скачать готовый бинарник.
На Linux без нее легко обойтись, а вот на Windows такая утилита особенно полезна.
Можно сначала проверить, что именно будет завершено:
killport 445 --dry-run
Would kill process 'System' listening on port 445
Сначала смотрим, потом убиваем - все как надо.
#linux #network
🧑💻 NetworkAdmin4 725
Новые рекорды ирбиса PT NGFW
🐆❄️Наш ирбис — прирожденный спринтер-чемпион. Но чтобы сохранить титул быстрой кошки, нужно постоянно бить свои же рекорды.
Новый вызов поступил от ЦОД: покорить высоты производительности и обработать сотни миллионов микроскопических 📈
В гонку вступил новый чемпион — модель 3050. В зачете «пропускная способность с включенным IPS» он установил новый рекорд 🥇🚀
Мы приглашаем вас за кулисы рекорда — на вебинар 5 марта в 11:00. Это будет не скучная презентация, а технический разбор победы 🔧🎥
Программа:
🏁 Конструкция чемпиона: как спроектирована платформа, чтобы сохранять устойчивость на «марафонских дистанциях» (elephant flows) и не сбивать дыхание на «скоростном спринте» (UDP 64b).
🏁Гонка за эффективностью: 100 Гбит/с — экстремальная нагрузка. Покажем «боевую машину» 3050 и расскажем, зачем нам понадобился 3D-принтер.
🏁Новая дисциплина: remote access VPN.
🏁Обновление экипировки: возможности релизов 1.10 и 1.11 — инструменты для будущих побед.
👉Зарегистрироваться
4 725
🤩 tcpdump: фильтры, которые реально нужны
tcpdump знают все. Но часто его используют как
tcpdump -i any и тонут в потоке пакетов. Ниже будут написаны фильтры, которые действительно спасают.
▪️ Фильтрация по хосту и сети. Трафик к конкретному IP:
tcpdump -i eth0 host 10.10.10.5
Только исходящий:
tcpdump -i eth0 src 10.10.10.5
Подсеть:
tcpdump net 192.168.1.0/24
▪️ Порты и сервисы. HTTP:
tcpdump tcp port 80
Несколько портов:
tcpdump 'tcp port 80 or tcp port 443'
Исключить SSH:
tcpdump 'not port 22'
▪️ Поиск конкретных TCP-флагов. Только SYN (поиск сканирования):
tcpdump 'tcp[tcpflags] & tcp-syn != 0'
RST-пакеты (поиск проблем с соединением):
tcpdump 'tcp[tcpflags] & tcp-rst != 0'
▪️ Поиск по содержимому. Найти строку в HTTP:
tcpdump -A -s 0 'tcp port 80' | grep "POST"
Фильтр по размеру пакета:
tcpdump 'greater 1000'
▪️ Анализ проблем с соединением. Только неустановленные соединения:
tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn'
Повторные передачи:
tcpdump 'tcp[tcpflags] & tcp-ack != 0'
▪️ Захват в файл для анализа. Лучше всегда писать в pcap:
tcpdump -i eth0 -s 0 -w dump.pcap
Анализировать потом можно в Wireshark, так удобнее разбирать сложные кейсы.
#linux #tcpdump
🧑💻 NetworkAdmin4 725
IP-форвардинг в L2 и L3 сегментах
IP-пакеты «почему-то» не доходят, хотя линк поднят, VLAN настроен и маршруты вроде есть. В 90% случаев проблема в том, что вы путаете, что именно происходит на L2 и что на L3, и где сеть реально принимает решение «форвардить или нет».
📅 На открытом уроке 24 февраля в 20:00:
— Разберём, как передаются IP-пакеты внутри L2-сегмента и как меняется логика в L3-сегменте.
— Соберём L2 и L3 сегменты на практике и посмотрим, где именно возникают типовые ошибки в коммутации и маршрутизации.
Урок не для тех, кто ждёт «волшебные команды», не хочет разбираться в логике прохождения трафика и считает, что сети — это только «настроить VLAN и забыть».
👉 Записаться: https://otus.pw/H9Hp/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
4 725
😭 Когда на Linux внезапно закончилось место
В ext4 есть полезная особенность: при создании файловой системы резервируется 5% пространства. Обычно это место доступно только root и нужно, чтобы система не умерла, когда диск заполнен под завязку. В критических ситуациях этот резерв реально спасает, без него многие сервисы просто перестают работать (привет ZFS и lvm-thin).
1️⃣ При необходимости размер резерва можно уменьшить и быстро освободить место:
tune2fs -m 3 /dev/mapper/root
# или
tune2fs -m 3 /dev/sda3
Вместо 5% оставляем 3%, а разница становится доступной системе. На больших разделах это могут быть десятки гигабайт. Теоретически можно поставить и 0%:
tune2fs -m 0 /dev/sda3
Но так делать не советую. Минимум 1% лучше оставить, а оптимальный компромисс те же 3%.
2️⃣ полезный прием - swap в виде обычного файла, а не отдельного раздела. Потому что файл можно быстро увеличить или удалить, если внезапно закончилось место.
Создаем swap-файл на 1 ГБ:
dd if=/dev/zero of=/swap bs=1024 count=1000000
mkswap /swap
chmod 0600 /swap
swapon /swap
Отключить и удалить его так же просто:
swapoff -a
rm /swap
3️⃣ вариант страховки - заранее созданный пустой файл большого размера:
fallocate -l 10G /big_file
В экстренной ситуации его можно удалить и мгновенно получить несколько гигабайт свободного места, чтобы система ожила.
#linux #ext4
🧑💻 NetworkAdmin4 725
📱 Запись терминала
asciinema записывает не видео, а последовательность команд и вывода терминала с таймингами. В результате получается легкий файл, который можно:
воспроизводить в браузере;
встраивать в документацию;
использовать в обучающих материалах;
пересматривать прямо в терминале.
▪️ Установка. В большинстве дистрибутивов asciinema есть в репозиториях:
apt install asciinema
▪️ Запись сессии. Начать запись можно одной командой:
asciinema rec
▪️ Завершение - Ctrl+D или exit. По умолчанию создается файл формата .cast, в котором хранится вся запись.
▪️ Воспроизведение. Записанную сессию можно воспроизвести локально:
asciinema play demo.cast
Либо загрузить на сайт asciinema:
asciinema upload demo.cast
После загрузки вы получите ссылку и HTML-код для встраивания записи в сайт или wiki.
▪️ Почему это удобно
минимальный размер файлов;
идеальная читаемость текста;
можно копировать команды прямо из записи;
легко автоматизировать;
отлично подходит для документации.
#linux #terminal
🧑💻 NetworkAdmin
Вже доступно! Дослідження Telegram за 2025 — головні інсайти року 
