Системный Администратор | Sysadmin Windows & Linux Server. Настройка Сети, ПК и Железа. IT Уроки для Сисадмина: Безопасность, Софт и Техподдержка (Helpdesk). Компьютерная помощь.


Гео и язык канала: Россия, Русский
Категория: Технологии


Купить рекламу: https://telega.in/m/i_odmin
Блог практикующего админа. Настройка Windows Server, Active Directory (AD), GPO и терминальных серверов (RDP). Работа с Linux: Ubuntu, CentOS, Debian. Сетевое оборудование: Cisco, MikroTik, VPN, DNS, DHCP. Виртуализация (Hyper-V, VMware, Proxmox) и резервное копирование (Backup). Скрипты PowerShell и Bash. Диагностика железа, сборка ПК, ремонт и монитор

Связанные каналы

Гео и язык канала
Россия, Русский
Категория
Технологии
Статистика

Как найти количество открытых файлов в Linux

Чтобы узнать количество открытых файлов в Linux, можно воспользоваться следующими командами:

1. Использовать lsof (List Open Files) для подсчета открытых файлов в системе:

lsof | wc -l

Эта команда покажет общее количество открытых файлов в системе, где wc -l подсчитывает количество строк, то есть количество открытых файлов.

2. Использовать `/proc/sys/fs/file-nr` для просмотра счетчика открытых файлов:

cat /proc/sys/fs/file-nr

Этот файл содержит три числа, разделенные табуляцией:
- Первое число — текущее количество открытых файлов.
- Второе число — количество файлов, которые находятся в ожидании.
- Третье число — максимальное количество файлов, которое система может открыть.

3. Подсчитать открытые файлы для определенного процесса:
Если нужно узнать количество открытых файлов конкретного процесса, можно использовать:

lsof -p PID | wc -l

Замените PID на идентификатор процесса, который вас интересует.

4. Использовать lsof для подсчета открытых файлов конкретным пользователем:

lsof -u username | wc -l

Замените username на имя пользователя, чтобы увидеть количество открытых файлов этим пользователем.

👉 @i_odmin



Как найти количество открытых файлов в Linux

Чтобы узнать количество открытых файлов в Linux, можно воспользоваться следующими командами:

1. Использовать lsof (List Open Files) для подсчета открытых файлов в системе:

lsof | wc -l

Эта команда покажет общее количество открытых файлов в системе, где wc -l подсчитывает количество строк, то есть количество открытых файлов.

2. Использовать `/proc/sys/fs/file-nr` для просмотра счетчика открытых файлов:

cat /proc/sys/fs/file-nr
Этот файл содержит три числа, разделенные табуляцией:
- Первое число — текущее количество открытых файлов.
- Второе число — количество файлов, которые находятся в ожидании.
- Третье число — максимальное количество файлов, которое система может открыть.

3. Подсчитать открытые файлы для определенного процесса:
Если нужно узнать количество открытых файлов конкретного процесса, можно использовать:

lsof -p PID | wc -l
Замените PID на идентификатор процесса, который вас интересует.

4. Использовать lsof для подсчета открытых файлов конкретным пользователем:

lsof -u username | wc -l
Замените username на имя пользователя, чтобы увидеть количество открытых файлов этим пользователем.

👉 @i_odmin


Видео недоступно для предпросмотра
Смотреть в Max
Linux-совет дня 💡

Запуск rm — рискованная операция.
Запуск rm с * — в 10 раз опаснее.

В некоторых случаях полезно заранее посмотреть, какую команду он выполнит после раскрытия шаблонов. Например:

$ echo rm -rf /*

Эта команда выведет в stdout уже развёрнутый результат — по сути, это «пробный запуск» (dry run) для rm -rf /*.

👉 @i_odmin


В чем разница между объявлением переменной export VAR="VALUE" и VAR="VALUE" в bash?

В bash (и других оболочках Unix) разница между командами export VAR="VALUE" и VAR="VALUE" связана с областью видимости переменной:

1. VAR="VALUE":
- Это обычное объявление переменной в текущей оболочке (сессии).
- Переменная VAR будет доступна только внутри текущей сессии, и не будет передаваться дочерним процессам, запущенным этой сессией.
- Например, если вы запустите новую команду или скрипт из текущей оболочки, VAR не будет доступна в этом дочернем процессе.

2. export VAR="VALUE":
- Команда export делает переменную VAR доступной для всех дочерних процессов текущей оболочки.
- То есть, VAR будет установлена и доступна не только в текущей сессии, но и во всех процессах, запущенных из этой сессии.
- Это полезно, когда необходимо передать значение переменной в другие программы или скрипты, запущенные из текущей оболочки.

Для примера

# Присвоение переменной без export
VAR="Hello"
bash -c 'echo $VAR' # Ничего не выведет, так как VAR не экспортирована

# Присвоение переменной с export
export VAR="Hello"
bash -c 'echo $VAR' # Выведет "Hello", так как VAR экспортирована
Таким образом, export используется для того, чтобы переменная была доступна в дочерних процессах, тогда как обычное присвоение без export ограничивает переменную только текущей сессией.

👉 @i_odmin


Подборка полезных скриптов для Mikrotik


Создание файла
невозможно создать файл напрямую, однако есть обходной путь:

/file print file=myFile
/file set myFile.txt contents=""
Проверка, изменился ли IP на интерфейсе
Иногда провайдер выдает динамические IP-адреса. Этот скрипт проверит, изменился ли динамический IP-адрес.

:global currentIP;

:local newIP [/ip address get [find interface="ether1"] address];

:if ($newIP != $currentIP) do={
:put "ip address $currentIP changed to $newIP";
:set currentIP $newIP;
}
Удаляем сетевую маску
Этот скрипт полезен, если вам нужен IP-адрес без сетевой маски (например, для использования в брандмауэре), но команда "/ip address get [id] address" возвращает IP-адрес вместе с маской.


:global ipaddress 10.1.101.1/24

:for i from=( [:len $ipaddress] - 1) to=0 do={
:if ( [:pick $ipaddress $i] = "/") do={
:put [:pick $ipaddress 0 $i]
}
}

Еще один, гораздо более простой способ:

:global ipaddress 10.1.101.1/24
:put [:pick $ipaddress 0 [:find $ipaddress "/"]]

Определяем имя хоста
Многие пользователи просят добавить возможность использовать DNS-имена вместо IP-адресов для RADIUS-серверов, правил брандмауэра и т.д.

Вот пример того, как определить IP-адрес RADIUS-сервера.
Предположим, что у нас настроен RADIUS-сервер:


/radius
add address=3.4.5.6 comment=myRad

А вот скрипт, который определит IP-адрес, сравнит полученный IP с настроенным и заменит его, если они не совпадают:

/system script add name="resolver" source= {

:local resolvedIP [:resolve "server.example.com"];
:local radiusID [/radius find comment="myRad"];
:local currentIP [/radius get $radiusID address];

:if ($resolvedIP != $currentIP) do={
/radius set $radiusID address=$resolvedIP;
/log info "radius ip updated";
}

}

Добавьте этот скрипт в планировщик, чтобы он выполнялся, например, каждые 5 минут.

/system scheduler add name=resolveRadiusIP on-event="resolver" interval=5m

Записать статистику очереди в несколько файлов
Рассмотрим, что названия очередей выглядят как "some text.1", чтобы мы могли искать очереди по последнему числу сразу после точки.

:local entriesPerFile 10;
:local currentQueue 0;
:local queuesInFile 0;
:local fileContent "";
#determine needed file count
:local numQueues [/queue simple print count-only] ;
:local fileCount ($numQueues / $entriesPerFile);
:if ( ($fileCount * $entriesPerFile) != $numQueues) do={
:set fileCount ($fileCount + 1);
}

#remove old files
/file remove [find name~"stats"];

:put "fileCount=$fileCount";

:for i from=1 to=$fileCount do={
#create file
/file print file="stats$i.txt";
#clear content
/file set [find name="stats$i.txt"] contents="";

:while ($queuesInFile < $entriesPerFile) do={
:if ($currentQueue < $numQueues) do={
:set currentQueue ($currentQueue +1);
:put $currentQueue ;
/queue simple
:local internalID [find name~"\\.$currentQueue\$"];
:put "internalID=$internalID";
:set fileContent ($fileContent . [get $internalID target-address] . \
" " . [get $internalID total-bytes] . "\r\n");
}
:set queuesInFile ($queuesInFile +1);

}
/file set "stats$i.txt" contents=$fileContent;
:set fileContent "";
:set queuesInFile 0;

}

👉 @i_odmin


Совет 💡

Как остановить выполнение скрипта в bash при возникновении ошибки в команде?

Команда set -e завершит скрипт с ошибкой, в случае, если в нижеследующем bash коде будет обнаружена ошибка. По-умолчанию bash скрипт продолжает работу, если в ходе выполнения возникла ошибка.

👉 @i_odmin


Шпаргалка по PowerShell

Основные команды
- Get-Help <команда> – получить справку по команде
- Get-Command – список доступных команд
- Get-Command -Module <модуль> – команды из конкретного модуля
- Get-Alias – список псевдонимов команд
- Get-Process – список запущенных процессов
- Get-Service – список служб

Навигация по файловой системе
- Get-Location – текущий путь
- Set-Location <путь> – перейти к каталогу
- Get-ChildItem или ls – просмотр содержимого каталога
- New-Item -Path <путь> -Name <имя> -ItemType <тип> – создать файл или папку

Работа с файлами и папками
- Copy-Item -Path <источник> -Destination <назначение> – копировать файл/папку
- Move-Item -Path <источник> -Destination <назначение> – переместить файл/папку
- Remove-Item -Path <путь> – удалить файл/папку
- Rename-Item -Path <путь> -NewName <новое имя> – переименовать файл/папку

Работа с текстом и выводом
- Write-Output "текст" – вывод текста
- Write-Host "текст" – вывод текста на экран
- Read-Host -Prompt "вопрос" – ввод данных от пользователя
- Get-Content <файл> – чтение содержимого файла
- Set-Content <файл> – запись в файл
- Add-Content <файл> – добавление текста в файл

Переменные
- $<имя_переменной> = значение – создание переменной
- $var += значение – добавление к значению переменной
- $null – пустое значение

Условия и циклы
- if (<условие>) { <действие> } – условие if
- foreach ($item in $array) { <действие> } – цикл foreach
- while (<условие>) { <действие> } – цикл while

Работа с процессами и службами
- Start-Process <программа> – запуск программы
- Stop-Process -Name <имя> – завершение процесса
- Start-Service <служба> – запуск службы
- Stop-Service <служба> – остановка службы

Фильтрация и сортировка
- Where-Object { <условие> } – фильтрация объектов
- Sort-Object <свойство> – сортировка объектов

Примеры:
1. Получение списка файлов:

Get-ChildItem -Path "C:\папка"

2. Копирование файла:

Copy-Item -Path "C:\путь\файл.txt" -Destination "D:\копия\файл.txt"

3. Вывод чисел от 1 до 10:

for ($i = 1; $i -le 10; $i++) { Write-Output $i }

4. Фильтрация процессов по имени:

Get-Process | Where-Object { $_.Name -eq "notepad" }

👉 @i_odmin


Сброс сетевых настроек из командной строки Windows

Сбросьте кэш DNS
ipconfig /flushdns

Сбросьте настройки WinSock
netsh winsock reset

Сброс настроек стека TCP/IP
netsh int ip reset

Для сброса настроек TCP/IPv6
netsh int ipv6 reset

Удалить все сетевые адаптеры
netcfg -d

Сброс всех правил Windows Defender Firewall
netsh advfirewall reset

👉 @i_odmin


Курс сетевых технологий. Cisco.

Тема 1. Сети с коммутацией пакетов.
Тема 2. История и классификация компьютерных сетей.
Тема 4. Стандарты и организации. Модель OSI. Где пригодится?
Тема 5. Устаревшие сетевые протоколы. Эволюция Ethernet.
Тема 6. Ethernet. Как работает и зачем знать сетевику.
Тема 7.1 Виды и категории кабелей Ethernet. cat3, cat5, cat6, UTP, FTP, SFTP.
Тема 7.2 Измерения физических параметров витой пары. NEXT, ACR, FEXT, ELFEXT, PS-NEXT, PS-FEXT.
Тема 7.3 Виды и категории кабелей витая пара cat 5-7 на практике.
Тема 7.4 Виды оптического кабеля и патчкордов LC SC ST на практике.
Тема 8. Обзор TCP/IP. Как работает ARP.

источник

👉 @i_odmin


Пробрасываем USB-устройство по сети в Линуксе

В Линуксе проброс USB устройств через сеть реализован на уровне ядра, то есть это не какая-то специальная программа, которая этим занимается, а драйвер в ядре.
И если этого драйвера в ядре нет (а его может и не быть — не вкомпилировал вендор, решил что не надо — имеет право) — то работать ничего, конечно, не будет.

Можно самостоятельно пересобрать ядро ручками, но это задача не для всех, поэтому таким мы заниматься не станем.
Будем считать, что ядро нормальное.

https://habr.com/ru/articles/969736/

👉 @i_odmin
Пробрасываем USB-устройство по сети в Линуксе
Автор вот этой статьи поднял вопрос, который наверное волнует тех, кто пользуется различными USB-токенами: как подключить USB-токен удаленно ? ИМХО, ничего сложного нет, я попробую это сделать, взяв...
Хабр


Шпаргалка по основным командам и настройкам MikroTik (RouterOS)

1. Основные команды работы с MikroTik:

Просмотр конфигурации
- /export — экспорт текущей конфигурации.
- /interface print — вывод списка интерфейсов.
- /ip address print — вывод списка IP-адресов.
- /ip route print — вывод таблицы маршрутизации.
- /ip firewall filter print — вывод правил файрвола.

Управление интерфейсами
- /interface enable [имя_интерфейса] — включить интерфейс.
- /interface disable [имя_интерфейса] — отключить интерфейс.
- /interface set [имя_интерфейса] mtu=1500 — изменение MTU на интерфейсе.

Управление IP-адресами
- /ip address add address=192.168.1.1/24 interface=[имя_интерфейса] — добавить IP-адрес на интерфейс.
- /ip address remove [номер] — удалить IP-адрес по номеру из списка.

Настройка маршрутизации
- /ip route add dst-address=0.0.0.0/0 gateway=[ip-шлюза] — добавить маршрут по умолчанию (интернет).
- /ip route remove [номер] — удалить маршрут.

2. Настройка DHCP:

Настройка DHCP-сервера
- /ip dhcp-server setup — пошаговая настройка DHCP-сервера.
- /ip dhcp-server print — просмотр текущих DHCP-серверов.
- /ip dhcp-server lease print — просмотр выданных IP-адресов (lease).
- /ip dhcp-server network add address=192.168.1.0/24 gateway=192.168.1.1 — добавить сеть для раздачи IP-адресов.

Настройка DHCP-клиента
- /ip dhcp-client add interface=[имя_интерфейса] — добавить DHCP-клиента на интерфейс.
- /ip dhcp-client print — просмотр DHCP-клиентов.

3. Настройка NAT (для интернета):

- /ip firewall nat add chain=srcnat action=masquerade out-interface=[интерфейс_WAN] — добавить правило NAT для выхода в интернет.

4. Настройка VLAN:

- /interface vlan add name=vlan10 vlan-id=10 interface=[имя_интерфейса] — создать VLAN с идентификатором 10 на интерфейсе.
- /interface bridge vlan add bridge=[имя_моста] tagged=[интерфейс] vlan-ids=10 — добавить VLAN в мост.

5. Настройка Firewall (Базовые правила):

- /ip firewall filter add chain=input action=accept connection-state=established,related — разрешить уже установленные соединения.
- /ip firewall filter add chain=input action=drop connection-state=invalid — отбросить невалидные пакеты.
- /ip firewall filter add chain=forward action=drop connection-state=invalid — запретить невалидные соединения в цепочке forward.

6. Настройка PPPoE (подключение к интернету через PPPoE):

- /interface pppoe-client add name=pppoe-out1 user=[логин] password=[пароль] interface=[WAN-интерфейс] — создать PPPoE-клиента.
- /ip route add gateway=pppoe-out1 — добавить маршрут через PPPoE.

7. Сохранение и восстановление конфигурации:

Сохранение:
- /system backup save name=[имя_файла] — сохранить полную конфигурацию.
- /export file=[имя_файла] — экспорт конфигурации в текстовый файл.

Восстановление:
- /system backup load name=[имя_файла] — загрузить сохраненную конфигурацию.
- /import file=[имя_файла] — импортировать текстовую конфигурацию.

8. Диагностика:

- /ping [ip-адрес] — пинг IP-адреса.
- /tool traceroute [ip-адрес] — трассировка до IP-адреса.
- /tool bandwidth-test address=[ip-адрес] direction=both — тест скорости соединения.

9. Работа с пользователями:

- /user add name=[имя_пользователя] group=full password=[пароль] — добавить пользователя с полными правами.
- /user remove [имя_пользователя] — удалить пользователя.
- /user print — показать список пользователей.

10. Операции с логами:

- /log print — просмотр последних логов.
- /log print where topics~"[firewall]" — просмотр логов по определенной теме, например, firewall.

👉 @i_odmin


Видео недоступно для предпросмотра
Смотреть в Max
👩‍💻 Знали ли вы, что можно открывать man-страницы из Vim?

- leader K - Нажмите курсором на любом слове, чтобы открыть man-страницу для этой команды.
- :Man command - Открыть man-страницу этой команды

👉 @i_odmin


⚡️5 фундаментальных курсов по ИБ по цене одного

Это предложение для тех, кто готов войти в новую профессию прямо сейчас!

🔥 Пакет курсов за 50 000 ₽ вместо 250 000 ₽:
▪️ Linux CyberPunk - обычная цена 49 500 ₽ (+ Курс идет с официальным дипломом системного администратора!)
▪️ SQL для хакера - обычная цена 15 000 ₽
▪️ HackerPoint - обычная цена ~70 000 ₽
▪️ HackerPoint (Blue vs Red Team) - обычная цена 43 500 ₽
▪️ AI-помощники на Python - обычная цена 71 500 ₽

Вы экономите 200 000 ₽ и получаете полную базу: от работы с терминалом и базами данных до разработки ИИ-агентов и взлома систем.

🔒 Квота: набор на программу ограничен по количеству мест.

🦔Закрепить за собой скидку и узнать подробности:
👉 https://max.ru/id667015044079_4_bot


Видео недоступно для предпросмотра
Смотреть в Max
Быстрая настройка маршрутизатора MIkroTik для офиса и дома

В данном видео приводится пример по настройке маршрутизатора под управление ОС MikroTik RouterOS для малого офиса или дома. Настройка производится с помощью функции Quick Set и не занимает много времени. Полученная конфигурация обеспечивает стабильную работу и приемлемый уровень безопасности.

источник

👉 @i_odmin


Шпаргалка Mikrotik Config

Я документирую процесс подключения и настройки общих сценариев здесь для всех, кто интересуется Mikrotik

https://codingpackets.com/blog/mikrotik-config-cheatsheet/

👉 @i_odmin


Видео недоступно для предпросмотра
Смотреть в Max
Траблшутинг сетевых сервисов.Инструменты и утилиты для диагностики

🔹Общий вид алгоритма поиска и устранения неисправностей и корреляция с моделью ISO/OSI
🔹Диагностика физического и канального уровней модели ISO/OSI и проверка связности
🔹Диагностика сетевого уровня, если сервис за пределами локальной сети
🔹Диагностика транспорта на уровне сокетов
🔹Диагностика верхних уровней модели ISO/OSI

источник

👉 @i_odmin


Видео недоступно для предпросмотра
Смотреть в Max
👩‍💻 Используйте ctrl-x ctrl-f для автозаполнения имен файлов в Vim

Vim может автоматически дополнять имена файлов и пути из режима вставки. Просто нажмите <ctrl-x> <ctrl-f>. Вам придется дополнять каждый сегмент пути к файлу поочередно, но вы можете быстро справиться с этим, повторяя данное сочетание клавиш несколько раз подряд, не выходя из режима вставки. После каждого сегмента нажимайте <ctrl-n> и <ctrl-p>, чтобы перемещаться вниз и вверх по списку совпадений.

<ctrl-x> <ctrl-f> – Автодополнение имен файлов и сегментов путей
<ctrl-n> – Переместиться вниз по списку совпадений
<ctrl-p> – Вернуться вверх по списку совпадений

👉 @i_odmin



Контейнеры в одном инструменте, виртуалки — в другом, частное облако — вообще отдельная история со своей командой и своим бюджетом.

На практике границы между ними давно стёрлись. Монолиты работают в виртуальных машинах, микросервисы — в контейнерах, часть инфраструктуры — на собственном железе, часть — в облаке. Каждый кусок требует своего набора инструментов и своих правил доступа.

Deckhouse Platform собирает всё это под одним управлением. Контейнеры, виртуальные машины, ML-нагрузки и управляемые сервисы работают на любой инфраструктуре, без привязки к одному провайдеру. Сейчас так работают 1300+ кластеров в 260+ компаниях.

На консультации с инженерами Deckhouse разберите, какие из ваших сценариев платформа закрывает уже сейчас 👈


Общие сетевые протоколы

👉 @i_odmin


🔥 Современный процесс загрузки Linux

Вот как выглядит современный boot-процесс - от нажатия кнопки питания до полностью работающей ОС:

1️⃣ Power On
Сигнал запуска подаётся на оборудование - начинается инициализация.

2️⃣ BIOS/UEFI
Загружается прошивка, выполняет POST-проверки и подготавливает железо.

3️⃣ Поиск оборудования
Определяются CPU, память, диски и остальные устройства.

4️⃣ Выбор загрузочного устройства
BIOS/UEFI ищет, откуда грузиться: HDD, SSD, USB, сеть и др.

5️⃣ Поиск EFI-раздела (в UEFI-системах)
Именно здесь располагаются загрузочные файлы ОС.

6️⃣ Запуск загрузчика (обычно GRUB2)
Загрузчик предоставляет меню систем или автоматически выбирает ядро.

7️⃣ Определение ядра для загрузки
GRUB читает конфигурацию и выбирает нужное Linux-ядро.

8️⃣ Загрузка ядра в память
Ядро — сердце Linux: инициализация памяти, драйверов, управления ресурсами.

9️⃣ Инициализация структур ядра
Подготовка окружения для запуска пользовательского пространства.

🔟 Запуск init/systemd (PID 1)
Запускается первый пользовательский процесс, управляющий службами.

1️⃣1️⃣ Выполнение стартовых скриптов
Настраивается сеть, монтируются файловые системы, поднимаются службы.

1️⃣2️⃣ Рабочая система
Linux полностью загружен - пользователь может логиниться и работать.

👉 @i_odmin

Показано 20 последних публикаций.