Исходный код Linux превысил 40 миллионов строк
В январе 2025 года размер исходного кода ядра Linux превысил 40 миллионов строк, удвоившись с 2015 года.
За последние два месяца код увеличился на 400 тысяч строк, включая комментарии и документацию.
Например, из 4,5 млн строк для всех процессоров архитектура x86 использует менее 500 тысяч. Драйверы AMD Radeon, включая документацию, занимают около 5 млн строк.
Активность разработчиков в 2024 году
В 2024 году ядро получило 3,69 млн новых строк, при этом было удалено 1,49 млн. Общее число коммитов составило 1 324 647 от 4807 разработчиков, что меньше прошлых лет.
В январе 2025 года размер исходного кода ядра Linux превысил 40 миллионов строк, удвоившись с 2015 года.
За последние два месяца код увеличился на 400 тысяч строк, включая комментарии и документацию.
Большая часть кода может быть неактуальна для конкретной системы.
Например, из 4,5 млн строк для всех процессоров архитектура x86 использует менее 500 тысяч. Драйверы AMD Radeon, включая документацию, занимают около 5 млн строк.
Активность разработчиков в 2024 году
В 2024 году ядро получило 3,69 млн новых строк, при этом было удалено 1,49 млн. Общее число коммитов составило 1 324 647 от 4807 разработчиков, что меньше прошлых лет.
Линус Торвальдс внёс 2877 коммитов, в основном за счёт слияний. Среди активных участников — Кшиштоф Козловски (Linaro), Якуб Кичински (Meta*) и другие.
👍7❤1👀1
Три варианта инициализации ОС в Linux
После загрузки ядра Linux система переходит к инициализации.
⏺ SysVinit — классическая Unix-инициализация
SysVinit — самый старый вариант, основанный на уровнях загрузки (runlevel). Всего их семь, от 0 (выключение системы) до 6 (перезагрузка).
При старте системы выполняются скрипты из /etc/rc.d/, которые запускают или останавливают службы. Например:
• service ssh start — запуск SSH
• service rsync stop — остановка Rsync
• telinit 1 — переход в однопользовательский режим
Этот метод инициализации устарел и в современных дистрибутивах заменён на systemd.
⏺ Systemd — современный стандарт
Systemd использует юниты (unit) для управления службами, устройствами и точками монтирования. Юниты хранятся в /usr/lib/systemd и /etc/systemd.
Основные команды для работы:
• systemctl list-units — просмотр запущенных юнитов
• systemctl start crond — запуск службы
• systemctl set-default multi-user.target — установка загрузочного уровня по умолчанию
Systemd заменил старый /etc/inittab, добавил поддержку параллельного запуска процессов и систему логирования journald.
⏺ Upstart — переходный вариант
Upstart использовался в Ubuntu как замена SysVinit. Главная особенность — события (event-driven model). Службы запускаются и останавливаются в зависимости от событий системы.
Файлы конфигурации хранятся в /etc/init/ и управляются командой initctl:
• initctl start ufw — запуск UFW
• initctl stop ufw — остановка
• cat /etc/init/rc-sysinit.conf — просмотр конфигурации
Upstart применялся в Ubuntu, но был вытеснен systemd.
В следующем посте продолжим…
После загрузки ядра Linux система переходит к инициализации.
В зависимости от дистрибутива и версии могут использоваться три основные системы инициализации: SysVinit, systemd и Upstart.
SysVinit — самый старый вариант, основанный на уровнях загрузки (runlevel). Всего их семь, от 0 (выключение системы) до 6 (перезагрузка).
При старте системы выполняются скрипты из /etc/rc.d/, которые запускают или останавливают службы. Например:
• service ssh start — запуск SSH
• service rsync stop — остановка Rsync
• telinit 1 — переход в однопользовательский режим
Этот метод инициализации устарел и в современных дистрибутивах заменён на systemd.
Systemd использует юниты (unit) для управления службами, устройствами и точками монтирования. Юниты хранятся в /usr/lib/systemd и /etc/systemd.
Основные команды для работы:
• systemctl list-units — просмотр запущенных юнитов
• systemctl start crond — запуск службы
• systemctl set-default multi-user.target — установка загрузочного уровня по умолчанию
Systemd заменил старый /etc/inittab, добавил поддержку параллельного запуска процессов и систему логирования journald.
Upstart использовался в Ubuntu как замена SysVinit. Главная особенность — события (event-driven model). Службы запускаются и останавливаются в зависимости от событий системы.
Файлы конфигурации хранятся в /etc/init/ и управляются командой initctl:
• initctl start ufw — запуск UFW
• initctl stop ufw — остановка
• cat /etc/init/rc-sysinit.conf — просмотр конфигурации
Upstart применялся в Ubuntu, но был вытеснен systemd.
В следующем посте продолжим…
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥8❤1👎1
Исследователь Wiz Research нашёл открытую базу данных DeepSeek
Сначала исследователи собрали информацию о поддоменах deepseek[.]com, просканировали порты (Masscan, Naabu) и проверили веб-сервисы (httpx).
Они нашли несколько доступных ресурсов, включая
Анализ через Nuclei показал, что база ClickHouse не требовала аутентификации. В ней хранилось более миллиона строк логов, включая историю чатов, ключи API и внутренние данные DeepSeek.
Эксперт из Wiz Research с ником Nagli провёл пентест DeepSeek и обнаружил открытую базу данных ClickHouse.
Сначала исследователи собрали информацию о поддоменах deepseek[.]com, просканировали порты (Masscan, Naabu) и проверили веб-сервисы (httpx).
Они нашли несколько доступных ресурсов, включая
oauth2callback.deepseek.com
и dev.deepseek.com.
Анализ через Nuclei показал, что база ClickHouse не требовала аутентификации. В ней хранилось более миллиона строк логов, включая историю чатов, ключи API и внутренние данные DeepSeek.
Исследователи сообщили о проблеме, и компания быстро закрыла доступ.
👍10👎3🤯3❤1
Как работает Systemd в Linux?
Продолжаем говорить о системах инициализации Linux
Systemd — это современная система инициализации в Linux, пришедшая на смену SysVinit и Upstart. Она управляет процессами через юниты (units), которые могут быть:
• .service — службы
• .mount — точки монтирования
• .device — устройства
• .socket — сокеты
Где хранятся юниты?
⏺ /usr/lib/systemd — системные юниты, устанавливаемые с ПО
⏺ /etc/systemd — юниты, редактируемые администратором
Основные команды Systemd
• systemctl list-units — список запущенных юнитов
• systemctl status crond — статус службы
• systemctl start|stop|restart crond — управление сервисами
• systemctl set-default multi-user.target — смена режима загрузки
Runlevel в Systemd
Systemd заменил традиционные runlevel на target. Например:
• runlevel 3 → multi-user.target
• runlevel 5 → graphical.target
Список активных target можно посмотреть командой:
Для перехода в другой режим:
Журналирование в Systemd
Systemd включает мощную систему логирования journald. Основные команды:
⏺ journalctl -f — просмотр событий в реальном времени
⏺ journalctl -n 10 — последние 10 записей
Продолжаем говорить о системах инициализации Linux
Systemd — это современная система инициализации в Linux, пришедшая на смену SysVinit и Upstart. Она управляет процессами через юниты (units), которые могут быть:
• .service — службы
• .mount — точки монтирования
• .device — устройства
• .socket — сокеты
Где хранятся юниты?
Основные команды Systemd
• systemctl list-units — список запущенных юнитов
• systemctl status crond — статус службы
• systemctl start|stop|restart crond — управление сервисами
• systemctl set-default multi-user.target — смена режима загрузки
Runlevel в Systemd
Systemd заменил традиционные runlevel на target. Например:
• runlevel 3 → multi-user.target
• runlevel 5 → graphical.target
Список активных target можно посмотреть командой:
systemctl list-units --type=target
Для перехода в другой режим:
systemctl isolate rescue.target
Журналирование в Systemd
Systemd включает мощную систему логирования journald. Основные команды:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤1
Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.
LVM (Logical Volume Manager) — это система управления логическими томами, которая даёт гибкость в управлении дисковым пространством. В отличие от традиционного разбиения диска, LVM позволяет динамически изменять размер разделов без потери данных.
Основные компоненты:
Physical Volume (PV) — физические устройства, такие как жесткие диски или их разделы. Они объединяются в Volume Group (VG), которая представляет собой пул свободного места. Из VG создаются Logical Volumes (LV), которые работают как обычные разделы, но могут изменяться в размере на лету.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤1
Как архивировать и распаковывать файлы с помощью PowerShell
Формат ZIP позволяет уменьшить размер файлов, экономить дисковое пространство, шифровать данные и упрощать их передачу.
PowerShell предоставляет удобные инструменты для работы с архивами, позволяя быстро сжимать и разархивировать файлы без стороннего ПО.
Архивирование файлов в ZIP
В PowerShell для создания архивов используется командлет Compress-Archive. Он позволяет сжимать как отдельные файлы, так и целые папки, создавая ZIP-архив.
⏺ Пример 1: архивирование нескольких файлов
Чтобы заархивировать один или несколько файлов, используйте следующую команду:
Эта команда создаст ZIP-архив Archive.zip, содержащий указанные файлы. Если архив с таким именем уже существует, PowerShell выдаст ошибку.
⏺ Пример 2: архивирование всей папки
Чтобы создать архив из содержимого папки вместе с её подпапками, используйте команду:
В этом случае PowerShell включит в архив всё содержимое указанной папки, включая файлы и вложенные каталоги.
⏺ Пример 3: создание архива только из файлов определённого типа
Если вам нужно добавить в архив только файлы определённого типа (например, изображения .jpg), используйте символ подстановки *:
Эта команда создаст ZIP-архив, содержащий только файлы .jpg из указанной папки. Подкаталоги при этом не включаются.
⏺ Пример 4: добавление новых файлов в уже существующий архив
PowerShell позволяет обновлять архивы без их пересоздания с нуля. Если вам нужно добавить файлы или заменить старые версии, используйте флаг -Update:
При этом новые файлы будут добавлены, а существующие файлы в архиве заменятся на более свежие версии.
Распаковка ZIP-архива
PowerShell также позволяет быстро разархивировать файлы с помощью командлета Expand-Archive.
⏺ Пример 1: извлечение архива в указанную папку
Для распаковки архива используйте команду:
Если указанной папки не существует, PowerShell автоматически создаст её перед распаковкой.
⏺ Пример 2: принудительная распаковка с перезаписью файлов
Если в папке назначения уже есть файлы с такими же именами, PowerShell выдаст ошибку. Чтобы избежать этого, можно использовать флаг -Force, который перезапишет существующие файлы:
Формат ZIP позволяет уменьшить размер файлов, экономить дисковое пространство, шифровать данные и упрощать их передачу.
PowerShell предоставляет удобные инструменты для работы с архивами, позволяя быстро сжимать и разархивировать файлы без стороннего ПО.
Архивирование файлов в ZIP
В PowerShell для создания архивов используется командлет Compress-Archive. Он позволяет сжимать как отдельные файлы, так и целые папки, создавая ZIP-архив.
Чтобы заархивировать один или несколько файлов, используйте следующую команду:
Compress-Archive -LiteralPath "C:\Path\To\File1.txt", "C:\Path\To\File2.txt" -DestinationPath "C:\Path\To\Archive.zip"
Эта команда создаст ZIP-архив Archive.zip, содержащий указанные файлы. Если архив с таким именем уже существует, PowerShell выдаст ошибку.
Чтобы создать архив из содержимого папки вместе с её подпапками, используйте команду:
Compress-Archive -LiteralPath "C:\Path\To\Folder" -DestinationPath "C:\Path\To\Archive.zip"
В этом случае PowerShell включит в архив всё содержимое указанной папки, включая файлы и вложенные каталоги.
Если вам нужно добавить в архив только файлы определённого типа (например, изображения .jpg), используйте символ подстановки *:
Compress-Archive -Path "C:\Path\To\Files\*.jpg" -DestinationPath "C:\Path\To\Archive.zip"
Эта команда создаст ZIP-архив, содержащий только файлы .jpg из указанной папки. Подкаталоги при этом не включаются.
PowerShell позволяет обновлять архивы без их пересоздания с нуля. Если вам нужно добавить файлы или заменить старые версии, используйте флаг -Update:
Compress-Archive -Path "C:\Path\To\Files" -Update -DestinationPath "C:\Path\To\Archive.zip"
При этом новые файлы будут добавлены, а существующие файлы в архиве заменятся на более свежие версии.
Распаковка ZIP-архива
PowerShell также позволяет быстро разархивировать файлы с помощью командлета Expand-Archive.
Для распаковки архива используйте команду:
Expand-Archive -LiteralPath "C:\Path\To\Archive.zip" -DestinationPath "C:\Path\To\Extracted"
Если указанной папки не существует, PowerShell автоматически создаст её перед распаковкой.
Если в папке назначения уже есть файлы с такими же именами, PowerShell выдаст ошибку. Чтобы избежать этого, можно использовать флаг -Force, который перезапишет существующие файлы:
Expand-Archive -LiteralPath "C:\Path\To\Archive.zip" -DestinationPath "C:\Path\To\Extracted" -Force
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥5
Какой командой можно настроить лимит на максимальное количество подключений к определенному порту в Linux с использованием iptables?
Anonymous Quiz
46%
iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/m -j ACCEPT
36%
iptables -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j DROP
11%
iptables -A OUTPUT -p tcp --dport 22 -m hashlimit --hashlimit 3 --hashlimit-mode srcip -j ACCEPT
7%
iptables -A INPUT -p tcp --dport 22 -j REJECT
👍7🔥2🤔2
Управление модулями ядра в Linux
Модуль ядра (Kernel Module, ko-файл) — это исполняемый файл, который расширяет функциональность ядра, например, добавляя поддержку файловых систем, сетевых интерфейсов или драйверов оборудования.
Модули ядра загружаются автоматически при необходимости, но также могут управляться вручную.
Загрузка модулей ядра
Если Linux не загрузил нужный модуль автоматически, его можно загрузить вручную с помощью modprobe:
Например, для загрузки модуля vfat (драйвер FAT32):
Если modprobe не находит модуль, можно попробовать загрузить его напрямую:
Но insmod не управляет зависимостями, поэтому предпочтительнее modprobe.
Удаление модулей ядра
Иногда нужно выгрузить модуль, например, при отладке или обновлении.
Удаление модуля выполняется командой:
Если модуль используется, его можно принудительно выгрузить:
Чтобы найти процессы, использующие модуль:
Добавление модуля в автозагрузку
Чтобы загружать модуль при старте системы, добавьте его в файл /etc/modules:
Отключение автозагрузки модуля
Если модуль загружается автоматически, но его нужно отключить, можно занести его в чёрный список (blacklist):
Затем обновляем конфигурацию и перезагружаем систему:
Зачем управлять модулями ядра?
• Отладка и тестирование (например, при замене драйвера)
• Оптимизация системы (исключение ненужных драйверов)
• Безопасность (запрет загрузки уязвимых или нежелательных модулей)
Если нужно полностью удалить модуль из системы, его можно найти и удалить:
Модуль ядра (Kernel Module, ko-файл) — это исполняемый файл, который расширяет функциональность ядра, например, добавляя поддержку файловых систем, сетевых интерфейсов или драйверов оборудования.
Модули ядра загружаются автоматически при необходимости, но также могут управляться вручную.
Загрузка модулей ядра
Если Linux не загрузил нужный модуль автоматически, его можно загрузить вручную с помощью modprobe:
modprobe <имя_модуля>
Например, для загрузки модуля vfat (драйвер FAT32):
modprobe vfat
Если modprobe не находит модуль, можно попробовать загрузить его напрямую:
insmod /lib/modules/$(uname -r)/kernel/drivers/net/<module>.ko
Но insmod не управляет зависимостями, поэтому предпочтительнее modprobe.
Удаление модулей ядра
Иногда нужно выгрузить модуль, например, при отладке или обновлении.
Удаление модуля выполняется командой:
modprobe -r <имя_модуля>
Если модуль используется, его можно принудительно выгрузить:
rmmod <имя_модуля>
Чтобы найти процессы, использующие модуль:
lsmod | grep <имя_модуля>
lsof | grep <имя_модуля>
Добавление модуля в автозагрузку
Чтобы загружать модуль при старте системы, добавьте его в файл /etc/modules:
echo "<имя_модуля>" | sudo tee -a /etc/modules
Отключение автозагрузки модуля
Если модуль загружается автоматически, но его нужно отключить, можно занести его в чёрный список (blacklist):
echo "blacklist <имя_модуля>" | sudo tee -a /etc/modprobe.d/blacklist.conf
Затем обновляем конфигурацию и перезагружаем систему:
sudo update-initramfs -u
reboot
Зачем управлять модулями ядра?
• Отладка и тестирование (например, при замене драйвера)
• Оптимизация системы (исключение ненужных драйверов)
• Безопасность (запрет загрузки уязвимых или нежелательных модулей)
Если нужно полностью удалить модуль из системы, его можно найти и удалить:
find /lib/modules/$(uname -r) -name "<модуль>.ko" -delete
👍15🔥2
Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.
Проверка режима seccomp у процесса:
cat /proc/<PID>/status | grep Seccomp
Применение seccomp в Docker:
docker run --security-opt seccomp=restricted.json alpine
Seccomp повышает безопасность контейнеров и песочниц, блокируя нежелательные syscalls.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤3
rdiff-backup: Инкрементальное резервное копирование в Linux
rdiff-backup — мощный инструмент для создания инкрементных резервных копий, который объединяет простоту работы с эффективным использованием дискового пространства.
Он позволяет копировать данные как на локальные, так и на удалённые серверы, сохраняя историю изменений.
Ключевые особенности rdiff-backup
⏺ Простота использования – создание резервной копии выполняется одной командой.
⏺ Инкрементное хранение – сохраняются только изменения, что экономит место.
⏺ Функция зеркалирования – позволяет быстро восстановить актуальное состояние.
⏺ Эффективное использование пространства – старые резервные копии хранятся в компактном виде.
⏺ Поддержка расширенных атрибутов (ACL, xattrs) – сохраняются все метаданные файлов.
⏺ Кроссплатформенность – работает на Linux, Windows, BSD и macOS.
Как установить rdiff-backup в Linux
Ubuntu и Debian
Для современных версий Ubuntu (20.04+) и Debian:
Для старых версий:
CentOS и RHEL 7
Fedora
Установка через PyPi (для всех дистрибутивов)
Debian/Ubuntu:
Fedora:
Создание резервной копии с rdiff-backup
Простейший способ сделать резервную копию:
Здесь /home/user/documents – исходные данные, а /mnt/backup – папка, где будет храниться резервная копия.
Для копирования на удалённый сервер:
Восстановление данных
Восстановить последнюю резервную копию можно так:
Чтобы откатиться к резервной копии, созданной 7 дней назад:
Очистка старых резервных копий
Удаление данных старше 30 дней:
rdiff-backup — мощный инструмент для создания инкрементных резервных копий, который объединяет простоту работы с эффективным использованием дискового пространства.
Он позволяет копировать данные как на локальные, так и на удалённые серверы, сохраняя историю изменений.
Ключевые особенности rdiff-backup
Как установить rdiff-backup в Linux
Ubuntu и Debian
Для современных версий Ubuntu (20.04+) и Debian:
sudo apt install rdiff-backup
Для старых версий:
sudo add-apt-repository ppa:rdiff-backup/rdiff-backup-backports
sudo apt update
sudo apt install rdiff-backup
CentOS и RHEL 7
sudo yum install yum-plugin-copr epel-release
sudo yum copr enable frankcrawford/rdiff-backup
sudo yum install rdiff-backup
Fedora
sudo dnf install rdiff-backup
Установка через PyPi (для всех дистрибутивов)
Debian/Ubuntu:
sudo apt install python3-pip python3-setuptools python3-pylibacl python3-pyxattr
sudo pip3 install rdiff-backup
Fedora:
sudo dnf install python3-pip python3-setuptools py3libacl python3-pyxattr
sudo pip3 install rdiff-backup
Создание резервной копии с rdiff-backup
Простейший способ сделать резервную копию:
rdiff-backup /home/user/documents /mnt/backup
Здесь /home/user/documents – исходные данные, а /mnt/backup – папка, где будет храниться резервная копия.
Для копирования на удалённый сервер:
rdiff-backup /home/user/documents user@remote-server::/backup
Восстановление данных
Восстановить последнюю резервную копию можно так:
rdiff-backup -r now /mnt/backup /home/user/documents
Чтобы откатиться к резервной копии, созданной 7 дней назад:
rdiff-backup -r 7D /mnt/backup /home/user/documents
Очистка старых резервных копий
Удаление данных старше 30 дней:
rdiff-backup --remove-older-than 30D /mnt/backup
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤2
Как использовать winget: менеджер пакетов Windows 10
winget – это официальный менеджер пакетов для Windows, который упрощает установку программ одним командой.
Вместо того чтобы искать установочный файл в интернете, загружать его и проходить мастер установки, теперь можно просто ввести команду, и Windows сделает все за вас.
Что такое Windows Package Manager?
Менеджеры пакетов давно популярны в Linux. Они позволяют устанавливать и обновлять программы из командной строки, исключая ручной поиск и загрузку.
Microsoft внедрила аналогичный подход в Windows с помощью winget.
Пример установки Microsoft PowerToys:
Windows Package Manager — проект с открытым исходным кодом, доступный на GitHub.
Как установить winget
На новых версиях Windows 10 и 11 winget предустановлен. Если у вас более старая система или winget отсутствует, его можно установить вручную:
Через GitHub
1. Перейдите на страницу релизов winget
2. Скачайте .appxbundle
3. Установите, дважды кликнув по файлу
После установки откройте командную строку и выполните:
Если установка прошла успешно, отобразится версия winget.
Основные команды winget
Вы можете использовать winget в PowerShell, Windows Terminal или классической cmd.
1. Поиск приложений
Чтобы найти программу, замените name на ключевое слово:
Пример поиска Google Chrome:
2. Установка приложений
Для установки программы используйте:
Пример установки Zoom:
3. Просмотр информации о программе
Чтобы узнать подробности о приложении:
Пример:
4. Просмотр доступных программ
Список всех приложений в репозитории Microsoft:
5. Управление источниками
Чтобы посмотреть список доступных репозиториев:
В первой версии winget использует только официальный репозиторий Microsoft, но в будущем появится поддержка сторонних источников.
6. Получение справки
Чтобы узнать больше о командах, добавьте -?:
winget – это официальный менеджер пакетов для Windows, который упрощает установку программ одним командой.
Вместо того чтобы искать установочный файл в интернете, загружать его и проходить мастер установки, теперь можно просто ввести команду, и Windows сделает все за вас.
Что такое Windows Package Manager?
Менеджеры пакетов давно популярны в Linux. Они позволяют устанавливать и обновлять программы из командной строки, исключая ручной поиск и загрузку.
Microsoft внедрила аналогичный подход в Windows с помощью winget.
Пример установки Microsoft PowerToys:
winget install powertoys
Windows Package Manager — проект с открытым исходным кодом, доступный на GitHub.
Как установить winget
На новых версиях Windows 10 и 11 winget предустановлен. Если у вас более старая система или winget отсутствует, его можно установить вручную:
Через GitHub
1. Перейдите на страницу релизов winget
2. Скачайте .appxbundle
3. Установите, дважды кликнув по файлу
После установки откройте командную строку и выполните:
winget --version
Если установка прошла успешно, отобразится версия winget.
Основные команды winget
Вы можете использовать winget в PowerShell, Windows Terminal или классической cmd.
1. Поиск приложений
Чтобы найти программу, замените name на ключевое слово:
winget search name
Пример поиска Google Chrome:
winget search chrome
2. Установка приложений
Для установки программы используйте:
winget install name
Пример установки Zoom:
winget install zoom
3. Просмотр информации о программе
Чтобы узнать подробности о приложении:
winget show name
Пример:
winget show vscode
4. Просмотр доступных программ
Список всех приложений в репозитории Microsoft:
winget list
5. Управление источниками
Чтобы посмотреть список доступных репозиториев:
winget source list
В первой версии winget использует только официальный репозиторий Microsoft, но в будущем появится поддержка сторонних источников.
6. Получение справки
Чтобы узнать больше о командах, добавьте -?:
winget search -?
👍19❤4
Какая команда используется для отображения активных TCP-соединений на сервере в Linux, включая их состояние?
Anonymous Quiz
42%
netstat -tuln
22%
ss -tuln
10%
lsof -i
26%
netstat -an
🤬21👏4🗿4❤1😁1
Блокировка файлов виртуальной машины на ESXi: причины и решение
Если при запуске виртуальной машины в VMware ESXi возникают ошибки вроде Unable to access a file since it is locked или Failed to power on, это может быть связано с блокировкой файлов.
Причины блокировки
VMware использует блокировки для защиты важных файлов ВМ:
• VMNAME.vswp – файл подкачки
• DISKNAME-flat.vmdk – основной диск
• VMNAME.vmx – конфигурация ВМ
• vmware.log – системные логи
Файлы могут оставаться заблокированными даже после выключения ВМ, если блокировка не снята из-за сбоя хоста, ошибки хранилища или параллельного доступа нескольких ESXi.
Как найти хост, заблокировавший файлы?
1️⃣ Попробуйте включить ВМ на другом хосте кластера.
2️⃣ Если ошибка повторяется, выполните команду:
Она покажет IP-адрес ESXi, удерживающего блокировку.
3️⃣ На найденном хосте запустите:
Это отобразит ID процесса, заблокировавшего файл.
4️⃣ Определите ВМ, удерживающую блокировку:
Если при запуске виртуальной машины в VMware ESXi возникают ошибки вроде Unable to access a file since it is locked или Failed to power on, это может быть связано с блокировкой файлов.
Разберем, почему это происходит и как устранить проблему.
Причины блокировки
VMware использует блокировки для защиты важных файлов ВМ:
• VMNAME.vswp – файл подкачки
• DISKNAME-flat.vmdk – основной диск
• VMNAME.vmx – конфигурация ВМ
• vmware.log – системные логи
Файлы могут оставаться заблокированными даже после выключения ВМ, если блокировка не снята из-за сбоя хоста, ошибки хранилища или параллельного доступа нескольких ESXi.
Как найти хост, заблокировавший файлы?
vmfsfilelockinfo -p /vmfs/volumes/datastore/VM1/VM1.vmdk
Она покажет IP-адрес ESXi, удерживающего блокировку.
lsof | egrep 'Cartel|VM1.vmdk'
Это отобразит ID процесса, заблокировавшего файл.
esxcli vm process list
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
pydf — улучшенная альтернатива df на Python
pydf — это улучшенная версия команды df, написанная на Python.
Она отображает информацию о файловых системах и их использовании, но делает это в цвете, что упрощает восприятие.
Установка pydf
Если команда pydf не исполняется, ее необходимо установить.
Для CentOS:
Для Debian/Ubuntu:
Использование
Просто выполните команду:
Вы увидите список файловых систем, объем доступного и использованного пространства, а также процент заполнения — и все это в наглядном цветном формате.
Полезные опции
Некоторые популярные опции для pydf:
• -h — вывод в удобном для чтения формате (размеры в KB, MB, GB):
• -n — отображение только локальных файловых систем:
• -a — показать все, включая псевдо-, дубль- и временные файловые системы:
• -B — указание единиц измерения (например, MB):
pydf — это улучшенная версия команды df, написанная на Python.
Она отображает информацию о файловых системах и их использовании, но делает это в цвете, что упрощает восприятие.
Установка pydf
Если команда pydf не исполняется, ее необходимо установить.
Для CentOS:
sudo yum install pydf
Для Debian/Ubuntu:
sudo apt install pydf
Использование
Просто выполните команду:
pydf
Вы увидите список файловых систем, объем доступного и использованного пространства, а также процент заполнения — и все это в наглядном цветном формате.
Полезные опции
Некоторые популярные опции для pydf:
• -h — вывод в удобном для чтения формате (размеры в KB, MB, GB):
pydf -h
• -n — отображение только локальных файловых систем:
pydf -n
• -a — показать все, включая псевдо-, дубль- и временные файловые системы:
pydf -a
• -B — указание единиц измерения (например, MB):
pydf -B MB
👍15🤷♂1❤1🔥1
Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.
Device Mapper — это слой ядра Linux, который позволяет создавать виртуальные блочные устройства, применяя к ним различные преобразования, такие как шифрование, RAID, снапшоты и управление логическими томами.
Разница с LVM: LVM использует Device Mapper как основу, но добавляет удобные утилиты для управления томами. Device Mapper более гибкий и применяется не только в LVM, но и в dm-crypt, RAID (mdadm), overlayfs и других технологиях.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥4👎1
Настройка брандмауэра Windows через PowerShell (Часть 1)
Windows включает встроенный брандмауэр, который можно удобно настраивать через PowerShell 7.
В этой статье разберем основные команды для работы с межсетевым экраном Windows.
Подключение модуля NetSecurity
PowerShell использует модуль NetSecurity для работы с брандмауэром. Он предустановлен в системе, и его можно подключить командой:
Просмотр списка правил
Чтобы отобразить список существующих правил брандмауэра, используется командлет:
По умолчанию команда выводит все параметры правил, но можно выбрать только нужные, как в примере выше. Полный список параметров можно посмотреть так:
Создание нового правила
Для добавления нового правила используется New-NetFirewallRule. Например, чтобы заблокировать входящие соединения с определенного источника:
Если не указать параметр Name, система автоматически сгенерирует случайный GUID.
⏺ Во второй части разберем изменение, удаление и дополнительные возможности команд для работы с брандмауэром.
Windows включает встроенный брандмауэр, который можно удобно настраивать через PowerShell 7.
Это мощный инструмент для управления правилами фильтрации трафика без использования графического интерфейса.
В этой статье разберем основные команды для работы с межсетевым экраном Windows.
Подключение модуля NetSecurity
PowerShell использует модуль NetSecurity для работы с брандмауэром. Он предустановлен в системе, и его можно подключить командой:
Import-Module -Name 'NetSecurity'
Просмотр списка правил
Чтобы отобразить список существующих правил брандмауэра, используется командлет:
Get-NetFirewallRule | Select-Object DisplayName, Enabled, Direction, Action -First 10
По умолчанию команда выводит все параметры правил, но можно выбрать только нужные, как в примере выше. Полный список параметров можно посмотреть так:
Get-NetFirewallRule | Select-Object * -First 1
Создание нового правила
Для добавления нового правила используется New-NetFirewallRule. Например, чтобы заблокировать входящие соединения с определенного источника:
$Params = @{
"DisplayName" = 'Block WINS'
"Direction" = 'Inbound'
"Action" = 'Block'
"RemoteAddress" = 'WINS'
}
New-NetFirewallRule @Params
Если не указать параметр Name, система автоматически сгенерирует случайный GUID.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥4
MikroTik выпустил стабильную версию RouterOS 7.17.2
На официальном сайте MikroTik появилась новость о выпуске стабильной версии RouterOS 7.17.2 в канале “v7 stable”. Обновление доступно для загрузки с 6 февраля 2025 года.
Перед установкой обновления рекомендуется
Сделать резервную копию и экспортировать файлы на другое устройство хранения.
Убедиться, что устройство не потеряет питание во время обновления.
Проверить свободное место, чтобы загрузка всех пакетов прошла без ошибок.
Основные изменения в RouterOS 7.17.2
⏺ В device-mode теперь запрещено изменять частоту процессора, если режим устройства routerboard этого не позволяет.
⏺ В disk исправлено отображение свободного места на tmpfs, улучшена стабильность SMB.
⏺ В dns убраны лишние предупреждения для статических записей.
⏺ В hotspot устранена ошибка с лишним каталогом flash/ на устройствах с папками flash.
⏺ В sfp улучшена совместимость с GPON-модулями для CCR2004 и CCR2116.
⏺ В smb исправлены проблемы подключения клиентов со старыми версиями SMB.
⏺ В switch устранены ошибки в динамических правилах dot1x.
⏺ В system исправлена потенциальная утечка памяти при сбросе состояний после ошибки.
Как обновиться
Если устройство MikroTik по умолчанию предлагает только версию 6.49.18, обновление до RouterOS 7.17.2 можно выполнить вручную, следуя официальной инструкции: Upgrading to v7.
На официальном сайте MikroTik появилась новость о выпуске стабильной версии RouterOS 7.17.2 в канале “v7 stable”. Обновление доступно для загрузки с 6 февраля 2025 года.
Перед установкой обновления рекомендуется
Сделать резервную копию и экспортировать файлы на другое устройство хранения.
Убедиться, что устройство не потеряет питание во время обновления.
Проверить свободное место, чтобы загрузка всех пакетов прошла без ошибок.
Основные изменения в RouterOS 7.17.2
Как обновиться
Если устройство MikroTik по умолчанию предлагает только версию 6.49.18, обновление до RouterOS 7.17.2 можно выполнить вручную, следуя официальной инструкции: Upgrading to v7.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Настройка брандмауэра Windows через PowerShell (Часть 2)
В первой части мы рассмотрели вывод списка правил и создание нового правила в межсетевом экране Windows.
Теперь поговорим об изменении, удалении и дополнительных возможностях PowerShell.
Изменение существующего правила
Чтобы изменить параметры уже созданного правила (например, разрешить ранее заблокированные соединения), используйте:
Можно изменить несколько правил сразу, передав их через Name, DisplayName или DisplayGroup.
Удаление правила
Если правило больше не нужно, его можно удалить:
Перед удалением рекомендуется проверить команду с параметром WhatIf:
Это покажет, что именно будет удалено, без выполнения команды.
Дополнительные возможности
⏺ Копирование правил:
⏺ Отключение правила:
⏺ Включение отключенного правила:
⏺ Просмотр настроек профиля брандмауэра:
В первой части мы рассмотрели вывод списка правил и создание нового правила в межсетевом экране Windows.
Теперь поговорим об изменении, удалении и дополнительных возможностях PowerShell.
Изменение существующего правила
Чтобы изменить параметры уже созданного правила (например, разрешить ранее заблокированные соединения), используйте:
$Params = @{
"DisplayName" = 'Block WINS'
"Action" = 'Allow'
}
Set-NetFirewallRule @Params
Можно изменить несколько правил сразу, передав их через Name, DisplayName или DisplayGroup.
Удаление правила
Если правило больше не нужно, его можно удалить:
Remove-NetFirewallRule -DisplayName "Block WINS"
Перед удалением рекомендуется проверить команду с параметром WhatIf:
Remove-NetFirewallRule -DisplayName "Block WINS" -WhatIf
Это покажет, что именно будет удалено, без выполнения команды.
Дополнительные возможности
Copy-NetFirewallRule -DisplayName "Block WINS" -NewDisplayName "New Rule"
Disable-NetFirewallRule -DisplayName "Block WINS"
Enable-NetFirewallRule -DisplayName "Block WINS"
Get-NetFirewallProfile
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8