Логотип

Системный администратор

Все для системного администратора.

Реклама: https://t.me/evgenycarter
Подписчики
1388
За 24 часа
+242
Закреплено
▶️ Общайтесь в чате Системного администратора Коллеги, создали чат для общения и обсуждения текщих вопросов, которые возникают в процессе нашей любимой работы. Вступайте, общайтесь, решайте вопросы, помогайте другим. https://max.ru/join/NyZzVvpXnAmqD8HNszZ_1JhOWW5IpMfquDqxCEHbG_c
11:44 22-02-2026
📌 ТОП-5 инструментов для безопасности сети! 🔐💻

👨‍💻 В мире кибербезопасности важно иметь в своем арсенале мощные инструменты для анализа, тестирования и защиты сети. Список ТОП-5 лучших инструментов, которые используют эксперты по безопасности:

🚀 1. Wireshark
🟢 Мощный анализатор пакетов, который позволяет изучать сетевой трафик в режиме реального времени.

🚀 2. Nmap
🟣 Универсальный инструмент сканирования сети и аудита безопасности. Позволяет находить открытые порты и уязвимости.

🚀 3. Snort
🟠 Открытая система обнаружения и предотвращения вторжений (IDS/IPS), которая анализирует сетевой трафик и блокирует угрозы.

🚀 4. Metasploit
🔵 Фреймворк для тестирования на проникновение, который помогает выявлять и использовать уязвимости систем.

🚀 5. Netcat
🟡 "Швейцарский нож" сетевого взаимодействия – позволяет чтение и запись данных через TCP и UDP.

⚡ Эти инструменты помогают анализировать и защищать сети, а также проверять их на уязвимости!

👉 @i_odmin
10:58 21-02-2026
Лента-липучка - стильно, практично

👉 @i_odmin
21:13 20-02-2026
Как устроен tcp/ip?

00:00 Модель OSI
02:15 Модель TCP/IP
04:20 Яндекс Практикум
06:00 TCP
16:48 UDP
18:19 System design
19:24 IPv4
23:48 ICMP
25:20 IPv6
26:26 Ethernet
29:00 Физический уровень

источник

👉 @i_odmin
14:26 20-02-2026
🚀 Шпаргалка по управлению логами с помощью Logrotate

Logrotate это мощный инструмент для управления лог-файлами в Linux. Он помогает автоматизировать ротацию, сжатие, удаление и отправку логов, чтобы они не занимали всё свободное место на диске.


Основные команды Logrotate
1. Запуск вручную:

logrotate /etc/logrotate.conf

Можно указать конкретный конфиг:

logrotate /etc/logrotate.d/myapp

2. Принудительная ротация:

logrotate -f /etc/logrotate.conf


3. Тестирование конфигурации:

logrotate -d /etc/logrotate.conf

(ключ -d включает режим отладки, изменения не применяются).



Структура конфигурационного файла
Конфигурация Logrotate обычно находится в /etc/logrotate.conf или в отдельных файлах в /etc/logrotate.d/.

Пример конфига для ротации логов приложения:
/var/log/myapp/*.log {
daily # Ротация ежедневно
missingok # Пропустить, если файл отсутствует
rotate 7 # Хранить 7 архивов
compress # Сжимать архивы (gzip)
delaycompress # Сжимать не сразу, а на следующий цикл
notifempty # Не ротировать пустые файлы
create 0644 root root # Создать новый файл с указанными правами
sharedscripts # Запускать скрипты один раз для всех логов
postrotate
/usr/bin/systemctl restart myapp > /dev/null
endscript
}


Ключевые директивы
- daily/weekly/monthly/yearly: Частота ротации.
- rotate N: Хранить N архивов.
- compress: Сжимать логи (по умолчанию gzip).
- delaycompress: Сжимать не сразу, а на следующий цикл.
- missingok: Пропустить, если файл отсутствует.
- notifempty: Не ротировать пустые файлы.
- size: Ротация по размеру (например, size 100M или `size 1G`).
- create MODE USER GROUP: Создать новый файл с указанными правами.
- postrotate/endscript: Выполнить команды после ротации.
- prerotate/endscript: Выполнить команды перед ротацией.
- sharedscripts: Запускать скрипты один раз для всех логов.
- dateext: Добавлять дату к имени архива (вместо номера).
- olddir DIR: Перемещать архивы в указанную директорию.



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

1. Ротация по размеру:

/var/log/nginx/*.log {
size 100M
rotate 5
compress
missingok
notifempty
create 0644 www-data www-data
}


2. Ротация с отправкой логов на удалённый сервер:

/var/log/myapp/*.log {
daily
rotate 7
compress
postrotate
scp /var/log/myapp/*.gz user@remote:/backup/logs/
endscript
}


3. Ротация с удалением старых логов:

/var/log/oldlogs/*.log {
weekly
rotate 2
compress
missingok
notifempty
olddir /var/log/archived
}



Полезные советы
- Проверяйте конфигурацию перед применением с помощью logrotate -d.
- Используйте cron для автоматизации запуска Logrotate.
- Не забывайте про postrotate, если нужно перезапускать сервисы после ротации.

👉 @i_odmin
08:08 20-02-2026
🖨 Печать из командной строки Linux

В этом руководстве мы настроим принтер, который будет печатать вывод в /dev/null. Мы также покажем, как отправить документ на принтер и управлять очередью печати.

Настройка демонстрационного принтера
Для настройки демонстрационного принтера мы будем использовать CUPS (Common UNIX Printing System). Это свободно распространяемый модуль печати, который большинство дистрибутивов Linux используют в качестве стандарта для управления принтерами.

🔹Установка CUPS

Сначала установите CUPS с помощью APT:
sudo apt install cups

Далее включите и запустите службу CUPS:
sudo systemctl enable --now cups


🔹Создание тестового принтера

Теперь создайте фиктивный принтер, печатающий на /dev/null:
sudo lpadmin -p demo-printer -E -v file:///dev/null

Если действие выполнено успешно, то он появится в списке принтеров:
sudo lpstat -s

Опционально мы можем отметить наш новый принтер как принтер по умолчанию:
sudo lpoptions -d demo-printer


🔹Печать из командной строки

Базовое использование

Чтобы распечатать документ, используйте команду "lp":
lp [файл_к_печати]

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

🔹Печать нескольких копий

Чтобы распечатать несколько копий документа, выполните следующую команду:
lp -n [количество_копий] [файл_к_печати]

🔹Очередь печати

При работе с реальными принтерами обычно требуется некоторое время для завершения печати одной копии. Однако у вас может быть несколько документов, которые вы хотите распечатать. Что делать в такой ситуации?

Благодаря функции очереди печати вы можете отправить на печать сразу все документы. Сервер CUPS хранит дополнительные документы в буфере. Как только текущее задание печати завершается, он автоматически отправляет на печать новый документ.

Для просмотра списка отпечатков, которые в данный момент находятся в очереди, используйте следующую команду:
lpq

🔹Отмена задания печати

Что делать, если вы случайно отправили на печать не тот документ? Пока документ еще не отправлен на принтер, мы можем удалить его из очереди печати:
cancel [номер_задания_печати]

Однако делать это следует быстро. Иначе документ будет уже напечатан.


🔹Двусторонняя печать

По умолчанию большинство принтеров настроены на одностороннюю печать. Однако мы можем указать CUPS на двухстороннюю печать:
lp -o sides=two-sided-long-edge [файл_к_печати]

Если вы хотите сделать двухстороннюю печать конфигурацией по умолчанию, используйте следующую команду:
lpoptions -o sides=two-sided-short-edge

Если необходимо вернуться к односторонней печати, выполните следующую команду:
lpoptions -o sides=one-sided


🔹Альбомная печать

Мы также можем указать печать в альбомном режиме. Для этого выполните следующую команду:
lp -o landscape [файл_к_печати]

🔹Вывод списка подключенных принтеров

Чтобы получить список всех принтеров, подключенных к системе, выполните следующую команду:
lpstat -a


🔹Установка принтера по умолчанию

При печати из командной строки без указания принтера команда "lp" отправляет документ на принтер по умолчанию.

Существует несколько способов задать принтер по умолчанию. Как было показано в начале данного руководства, для задания принтера по умолчанию можно использовать команду "lpoptions":
sudo lpoptions -d [имя_принтера]

В качестве альтернативы можно использовать переменную окружения PRINTER для указания принтера по умолчанию:
export PRINTER=[имя_принтера]

Если вы хотите сделать это изменение постоянным, добавьте эту строку в файл "bashrc":
tail ~/.bashrc
echo "export PRINTER=<имя_принтера>" >> ~/.bashrc

👉 @i_odmin
15:40 19-02-2026
Команда crontab: опции, ключи и примеры использования

Планировщик cron для запуска задач с заданными интервалом времени от имени текущего пользователя. Формат планирования задачи: "(минута) (час) (день_месяца) (месяц) (день_недели) команда".

Редактирует файл crontab для текущего пользователя:
crontab -e

Выводит список существующих задая для текущего пользоваетеля:
crontab -l

Удаляет все задачи cron для текущего пользователя:
crontab -r

Пример задачи, которая запускается ежедневно в 10:00. * означает любое значение:
0 10 * * * {{path/to/script.sh}}

Пример задачи, которая запускается каждую минуту 3-го апреля:
* * 3 Apr * {{path/to/script.sh}}

Пример задачи, которая запускается каждую пятницу в 02:30:
30 2 * * Fri {{path/to/script.sh}}

👉 @i_odmin
09:35 19-02-2026
Сети Cisco и Linux у Вас дома

Хорошим инженером можно стать так же, как хорошим спортсменом — нужно постоянно тренироваться, находить на это время и мотивацию. На нашем мастер-классе вы узнаете, как организовать «спортзал» дома и, занимаясь в формате «свободное обучение», повышать свою квалификацию в любое свободное время. А еще вы узнаете про использование геймификации — игрового подхода к образованию в наших методических материалах. Это точно оторвет вас от любимого сериала!

источник

👉 @i_odmin
10:54 18-02-2026
Bash. Проверки файлов
Kоманды позволяют проверять различные условия, касающиеся файлов

-d file # Проверяет, существует ли файл, и является ли он директорией.
-e file # Проверяет, существует ли файл.
-f file # Проверяет, существует ли файл, и является ли он файлом.
-r file # Проверяет, существует ли файл, и доступен ли он для чтения.
-s file # Проверяет, существует ли файл, и не является ли он пустым.
-w file # Проверяет, существует ли файл, и доступен ли он для записи.
-x file # Проверяет, существует ли файл, и является ли он исполняемым.
file1 -nt file2 # Проверяет, новее ли file1, чем file2.
file1 -ot file2 # Проверяет, старше ли file1, чем file2.
-O file # Проверяет, существует ли файл, и является ли его владельцем текущий пользователь.
-G file # Проверяет, существует ли файл, и соответствует ли его идентификатор группы идентификатору группы текущего пользователя.

#!/bin/bash
mydir=/home/likegeeks

if [ -d $mydir ] # если файл сущетсвует и он является директорией
then
echo "The $mydir directory exists" # выводим сообщение
cd $mydir # переходим в него
ls # отображаем содержимое
else # ИНАЧЕ
echo "The $mydir directory does not exist"
fi

👉 @i_odmin
16:06 17-02-2026
Восстановление данных со сломанного USB-накопителя

👉 @i_odmin
14:56 17-02-2026
Структура каталогов в Linux

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

https://i-odmin.ru/struktura-katalogov-v-linux/

👉 @i_odmin
10:04 17-02-2026
Копируем структуру директорий в Linux

В этой статье мы расскажем как в две команды скопировать структуру директорий без файлов через командрую строку Linux.

Сначала необходимо перейти в директорию, где находятся нужная структура
# cd /dir1

Затем выполняем команду, которая находит директории и сохраняет пути к ни в файл
# find . -type d > dirs.txt

Теперь необходимо перенести этот файл в директорию, где мы хотим воссоздать структуру
# mv ./dirs.txt /dir2

Переходим туда
# cd /dir2

И используя xargs читаем из файла пути и создаем по ним структуру директорий
# xargs mkdir -p < dirs.txt

👉 @i_odmin
18:48 16-02-2026
Atop или htop?

Что лучше использовать для мониторинга системы? 🖥️📊

Если вы работаете с Linux, то наверняка сталкивались с необходимостью мониторинга системы. Две популярные утилиты для этого - atop и htop. Но что выбрать?


🔹Htop - простота и удобство 🚀

Что это?
Улучшенная версия классического top. Показывает процессы в виде интерактивной таблицы с цветовым выделением.

- Плюсы:
• Простой и интуитивно понятный интерфейс.
• Поддержка мыши (можно кликать по процессам).
• Удобная сортировка процессов (по CPU, памяти и т.д.).
• Возможность "убивать" процессы прямо из интерфейса.

- Минусы:
• Нет истории данных (только текущее состояние).
• Меньше деталей о дисковых и сетевых операциях.

- Кому подойдет?
Если вам нужно быстро посмотреть, что нагружает систему, и удобно управлять процессами, htop - ваш выбор.


🔹Atop - мощь и детализация 🔍

Что это?
Продвинутая утилита для мониторинга, которая показывает не только текущее состояние системы, но и сохраняет историю данных.

- Плюсы:
• Детальная информация о CPU, памяти, дисках и сети.
• Возможность анализировать исторические данные (например, что происходило час назад).
• Поддержка мониторинга завершенных процессов.
• Гибкость: можно сортировать процессы по разным параметрам.

- Минусы:
• Более сложный интерфейс (новичкам может быть непривычно).
• Нет поддержки мыши.

🔹Кому подойдет?
Если вам нужен глубокий анализ производительности системы или диагностика проблем, atop - идеальный инструмент.


- htop - для быстрого мониторинга и управления процессами.
- atop - для детального анализа и работы с историческими данными.

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

👉 @i_odmin
15:44 16-02-2026
📶 Сети для несетевиков // OSI/ISO, IP и MAC, NAT, TCP и UDP, DNS

В этом видео я рассказываю про базовые сетевые технологии, чтобы ты мог применять эти знания в работе, на собеседованиях, в пет-проектах и обучении. Здесь и про OSI/ISO, TCP/IP, порты, ip-адреса, mac-адреса и NAT. Конечно же, шутка про TCP и UDP.

0:00 Вступление
0:38 Зачем знать сети?
1:48 OSI/ISO - TCP/IP
8:19 MAC-адрес
9:35 IP-адрес
10:48 Порты
11:50 Маски и подсети
13:34 Белые и серые подсети
14:41 NAT network address translation
15:54 Ч ем отличается TCP и UDP?
18:03 Как работает DNS?
19:09 Траблшутинг
20:34 О чем не поговорили, но тоже очень важно

источник

👉 @i_odmin
10:05 16-02-2026
Курс Системного Администратора Linux для новичков. Часть 2

- Работа с ACL. Урок 10.
- Установка и управление пакетами в CentOS. Урок 11.
- Стандартные потоки ввода/вывода в Linux. Урок 12.
- Установка веб-сервера Apache. Урок 13.
- Стадии инициализации системы в Linux

источник

👉 @i_odmin
09:12 16-02-2026
Как найти и удалить старые файлы в Linux? 🗑️

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

🔍 Поиск файлов старше 30 дней:
find /path/to/directory -type f -mtime +30
- -type f — ищем только файлы;
- -mtime +30 — файлы старше 30 дней.

🗑️ Удаление этих файлов:
find /path/to/directory -type f -mtime +30 -delete
⚠ Осторожно! Удаление без подтверждения.

✅ Безопасный вариант с подтверждением:
find /path/to/directory -type f -mtime +30 -exec rm -i {} \;
Будет запрашиваться подтверждение перед удалением.

🔥 Автоматизация через cron:
Добавляем в crontab -e:
0 3 * * * find /var/log -type f -mtime +30 -delete
Очистка логов каждую ночь в 03:00.

👉 @i_odmin
11:06 15-02-2026
Замаскированные службы Linux

Как замаскировать службу в Linux.
Первое, что мы сделаем, это научимся маскировать службу в Linux. Возьмем к примеру службу MySQL. Откройте окно терминала и замаскируйте службу MySQL с помощью команды:
$ sudo systemctl mask mysql

Если вы не маскировали службу MySQL, она будет отображаться в выводе команды systemctl list-unit-files | grep masked. После маскировки служба MySQL не сможет запускаться ни автоматически, ни вручную. Попробуйте запустить службу командой:
$ sudo systemctl start mysql

Вы должны будете увидеть следующую ошибку:
Failed to start mysql.service: Unit mysql.service is masked.


Как размаскировать службу в Linux.

Теперь, когда вы замаскировали службу, разберем как все вернуть обратно. Команда будет такой:
$ sudo systemctl unmask mysql

Теперь, когда вы запустите MySQL, он будет работать, как обычно.

👉 @i_odmin
14:54 14-02-2026
Курс Системного Администратора Linux для новичков. Часть 1

- Вступление в курс по Системному Администрированию Линукс.
- Как установить Линукс/Linux. Урок 1 Установка.
- Базовые навыки и знакомство с консолью Линукс. Урок 2. Базовые навыки и команды
- Краткий обзор стандартных директорий Линукс. Урок 3. Базовое знакомство со структурой директорий.
- Базовые команды Линукс, часть 1. Урок 4.
- Базовые команды Линукс, часть 2, текстовый редактор vi. Урок 5
- Настройка ssh соединения к серверу, понятие айпи адреса. Урок 6.
- Пользователи и группы в Линукс. Урок 7.
- Права доступа в Линукс. Урок 8.
- Расширенные права доступа - SUID, SGID, Sticky bit. Урок 9.
- Работа с ACL. Урок 10.
- Установка и управление пакетами в CentOS. Урок 11.
- Стандартные потоки ввода/вывода в Linux. Урок 12.
- Установка веб-сервера Apache. Урок 13.
- Стадии инициализации системы в Linux

источник

👉 @i_odmin
11:50 14-02-2026
🚀 Подборка полезных IT каналов в Max


Системное администрирование, DevOps 📌

https://max.ru/i_odmin Все для системного администратора
https://max.ru/bash_srv Bash Советы
https://max.ru/sysadminof Книги для админов, полезные материалы
https://max.ru/i_odmin_book Библиотека Системного Администратора
https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др.

1C разработка 📌
https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌
https://max.ru/cpp_lib Библиотека C/C++ разработчика

Программирование Python 📌
https://max.ru/python_of Python академия.
https://max.ru/BookPython Библиотека Python разработчика

Java разработка 📌
https://max.ru/bookjava Библиотека Java разработчика

GitHub Сообщество 📌
https://max.ru/githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://max.ru/database_info Все про базы данных

Фронтенд разработка 📌
https://max.ru/frontend_1 Подборки для frontend разработчиков

Библиотеки 📌
https://max.ru/programmist_of Книги по программированию
https://max.ru/proglb Библиотека программиста
https://max.ru/bfbook Книги для программистов

Программирование 📌
https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций
https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT
https://max.ru/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻

Шутки программистов 📌
https://max.ru/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://max.ru/thehaking Канал о кибербезопасности
https://max.ru/xakkep_1 Хакер Free

Книги, статьи для дизайнеров 📌
https://max.ru/odesigners Статьи, книги для дизайнеров

Математика 📌
https://max.ru/Pomatematike Канал по математике
https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике

Вакансии 📌
https://max.ru/progjob Вакансии в IT

Мир технологий 📌
https://max.ru/mir_teh Канал для любознательных


Бонус 📌
https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга
15:42 09-02-2026
📌Как защитить сервер Linux?

🔹1. Обновление системы
- Регулярно обновляйте систему и программное обеспечение:
- Включите автоматические обновления безопасности.

sudo apt update && sudo apt upgrade -y # Для Debian/Ubuntu
sudo yum update -y # Для CentOS/RHEL

🔹2. Настройка брандмауэра
- Используйте ufw (Uncomplicated Firewall) или firewalld для управления входящими и исходящими соединениями:
- Запретите все неиспользуемые порты.

sudo ufw enable
sudo ufw allow ssh # Разрешить SSH
sudo ufw allow http # Разрешить HTTP
sudo ufw allow https # Разрешить HTTPS


🔹3. Защита SSH
- Измените порт SSH по умолчанию (22):
sudo nano /etc/ssh/sshd_config

Измените строку Port 22 на другой порт.
- Отключите вход под root:

PermitRootLogin no
- Используйте аутентификацию по ключу вместо пароля:

PasswordAuthentication no
- Ограничьте доступ по IP:

AllowUsers user@your_ip

🔹4. Управление пользователями и правами
- Создавайте отдельных пользователей с ограниченными правами для выполнения задач.
- Используйте sudo вместо входа под root.
- Регулярно проверяйте список пользователей и удаляйте ненужные учетные записи:

sudo deluser username

🔹5. Установка и настройка Fail2Ban
- Fail2Ban блокирует IP-адреса после нескольких неудачных попыток входа:

sudo apt install fail2ban # Для Debian/Ubuntu
sudo yum install fail2ban # Для CentOS/RHEL

- Настройте конфигурацию для SSH и других сервисов.

🔹6. Отключение ненужных сервисов
- Удалите или остановите неиспользуемые сервисы:

sudo systemctl stop service_name
sudo systemctl disable service_name

🔹7. Использование SELinux/AppArmor
- Включите SELinux (для CentOS/RHEL) или AppArmor (для Debian/Ubuntu) для усиления безопасности:

sudo setenforce 1 # Для SELinux
sudo systemctl enable apparmor # Для AppArmor

🔹8. Регулярное резервное копирование
- Настройте автоматическое резервное копирование важных данных.
- Храните резервные копии на отдельном сервере или в облаке.

🔹9. Мониторинг и логирование
- Используйте инструменты мониторинга, такие как htop, nmon или Prometheus.
- Регулярно проверяйте логи:

sudo tail -f /var/log/auth.log # Логи аутентификации
sudo tail -f /var/log/syslog # Системные логи

🔹10. Шифрование данных
- Используйте шифрование дисков (LUKS) для защиты данных.
- Настройте SSL/TLS для всех сервисов, работающих с данными.

🔹11. Аудит безопасности
- Используйте инструменты для сканирования уязвимостей, такие как Lynis или OpenSCAP:

sudo lynis audit system


👉 @i_odmin
09:27 09-02-2026
lnav (Log File Navigator) — это мощный инструмент для анализа логов, который создан для удобной работы с текстовыми файлами, содержащими журналы. Он объединяет функции текстового редактора и анализатора логов в одном интерфейсе.

🔑 Основные возможности:
1. Автоматическое объединение логов:
- lnav может объединять несколько лог-файлов с различными временными метками в хронологическом порядке, упрощая анализ событий из разных источников.

2. Подсветка синтаксиса:
- Он автоматически распознает форматы логов (например, JSON, syslog, Apache, MySQL) и подсвечивает ключевые элементы, такие как даты, уровни логов (INFO, ERROR), чтобы вы могли быстро находить нужную информацию.

3. Запросы на основе SQL:
- Позволяет выполнять запросы к логам с использованием встроенной поддержки SQLite. Это дает возможность фильтровать, сортировать и анализировать данные, как если бы это была база данных.

4. Обнаружение ошибок и предупреждений:
- lnav автоматически выделяет строки, содержащие ошибки (например, ERROR, WARN), чтобы привлечь внимание к потенциальным проблемам.

5. Просмотр в реальном времени:
- Поддерживает live-режим, в котором можно наблюдать за обновлением логов в режиме реального времени.

6. Портативность:
- Это консольное приложение, которое легко устанавливается на Linux, macOS и даже Windows через WSL.


📌 Примеры использования:
1. Анализ веб-серверных логов:

lnav /var/log/nginx/access.log
lnav автоматически подсветит запросы, статусы и временные метки.

2. Использование SQL-запроса для подсчета количества ошибок:

SELECT COUNT(*) FROM log WHERE log_level = 'ERROR';

3. Чтение логов в реальном времени:

tail -f /var/log/syslog | lnav

https://lnav.org/

👉 @i_odmin
08:16 06-02-2026
Zenith - что-то вроде top или htop, но с диаграммами с возможностью масштабирования, использованием CPU, GPU, сети и диска.

Особенности
Дополнительные графики использования ЦП, памяти, сети и дисков
Быстрый просмотр свободного места на диске, IP-адресов сетевых карт, частоты процессора
Выделение основных пользователей ЦП, памяти и диска
Процент заряда батареи, время зарядки или разрядки, потребляемая мощность
Таблица процессов с возможностью фильтрации по типу верхней части, включающая использование диска каждым процессом
Изменение приоритета процесса
Представления диаграмм с возможностью масштабирования (с поддержкой прокрутки назад во времени)
Управление процессами с помощью сигналов
Сохранение данных о производительности между запусками
Метрики использования GPU для графических процессоров NVIDIA (с --features nvidia), включая использование GPU для каждого процесса
Графики свободного места на диске
Учет задержек (в Linux при запуске zenith с правами root)

Установка на дистрибутивы Linux на базе Debian/Ubuntu (64-бит)

sudo apt install curl
curl -sL https://raw.githubusercontent.com/wimpysworld/deb-get/main/deb-get | sudo -E bash -s install deb-get


https://github.com/bvaisvil/zenith

👉 @i_odmin
17:53 05-02-2026
Bash скрипт слежения за зависшими процессами

На одном из серверов был перенесен веб-сайт, из-за которого периодически подвисал дочерний httpd (apache2) процесс. Необходимо было временное решение на время отладки кода и решения проблемы на уровне сайта, которое отслеживало бы зависшие процессы.

Было решено написать bash скрипт, который отслеживает время жизни процесса, затраченное время процессора (CPU time) и нагрузку на процессов. В случае, если все 3 параметра достигают определенное пиковое конфигурируемое значение - процесс убивается.

Использование
./checker.sh param1 param2

#Пример:
./checker.sh httpd www-data

param1 - поисковая строка для вывода команды ps

param2 - опционально, вторая поисковая строка для уточнения результатов


#!/bin/bash

cpuLimit=5000 # cpu * 100
timeLimit=600 # process time limit in seconds
cpuTimelimit=400 # process cpu time limit in seconds
killSignal="HUP" # kill signal
debug=0 # 1 - not kill | 0 - kill
verbose=1 # 1 - print info | 1 - without output

##### END CONFIG #####

declare -i cpuLimit
declare -i timeLimit
declare -i cpuTimelimit
declare -i debug
declare -i verbose
declare -A pidTime
declare -A pidCpuTime
declare -A pidCpu
declare -A pidUser
declare -A pidApp

appName=$1 #"httpd"
appName=${appName:=httpd}
grep2=$2 #"plsm.ru"
grep2=${grep2:=$appName}


if [[ -z $grep2 ]];then
grep2=$appName
fi

{
declare $( ps -eo pid,user,pcpu,etimes,comm | grep $appName | grep $grep2 | grep -v grep | sed -e 's/^[[:space:]]*//' | awk {'print "pidCpu["$1 "]=" $3*100'} )
declare $( ps -eo pid,cputime,user,pcpu,etimes,comm | grep $appName | grep $grep2 | grep -v grep | sed -e 's/^[[:space:]]*//' | awk -F'[: ]+' '/:/ {t=$4+60*($3+60*$2); print "pidCpuTime["$1 "]="t}' )
declare $( ps -eo pid,user,pcpu,etimes,comm | grep $appName | grep $grep2 | grep -v grep | sed -e 's/^[[:space:]]*//' | awk {'print "pidTime["$1 "]=" $4'} )
declare $( ps -eo pid,user,pcpu,etimes,comm | grep $appName | grep $grep2 | grep -v grep | sed -e 's/^[[:space:]]*//' | awk {'print "pidUser["$1 "]=" $2'} )
declare $( ps -eo pid,user,pcpu,etimes,comm | grep $appName | grep $grep2 | grep -v grep | sed -e 's/^[[:space:]]*//' | awk {'print "pidApp["$1 "]=" $5'} )
} &> /dev/null


arrSize=${#pidCpu[@]}

if [[ $arrSize -eq 0 ]];then
if [[ $verbose -eq 1 ]];then
echo "Required processes are not found"
fi
else
for i in "${!pidCpu[@]}";do
if [[ $verbose -eq 1 ]];then
echo "----------------"
echo "pid: $i"
echo "user: ${pidUser[$i]}"
echo "cpu: ${pidCpu[$i]}"
echo "time: ${pidTime[$i]}"
echo "cpu time: ${pidCpuTime[$i]}"
echo "app: ${pidApp[$i]}"
if [[ ${pidCpu[$i]} -gt $cpuLimit ]] ;then
echo "CPU WARNING"
fi
if [[ ${pidTime[$i]} -gt $timeLimit ]];then
echo "TIME WARNING"
fi
if [[ ${pidCpuTime[$i]} -gt $cpuTimelimit ]];then
echo "CPU TIME WARNING"
fi
fi

if [[ ${pidCpu[$i]} -gt $cpuLimit ]] && [[ ${pidTime[$i]} -gt $timeLimit ]] && [[ ${pidCpuTime[$i]} -gt $cpuTimelimit ]];then
if [[ $debug -ne 1 ]];then
kill -$killSignal $i
if [[ $verbose -eq 1 ]];then
echo "PID $i KILLED. Result code $?"
fi
fi
fi
done
fi
exit 0;


Скрипт имеет ряд параметров:

🔵 cpuLimit=5000 - задает лимит потребления CPU умноженного на 100 (5000 - потребление 50% процессора)

🔵 timeLimit=600 - задает лимит времени работы процесса в секундах

🔵 cpuTimeLimit=400 - задает лимит потребления процессорного времени

🔵 killSignal - сигнал, который передается утилите kill. Я выставил HUP, что делает безопасное завершение процесса. Если процесс остается, то можно попробовать KILL, но это чревато проблемами

🔵 verbose=1 - выводить информация о найденных процессах или нет

🔵 debug=1 — 1 - не убивать процесс (включив verbose - можно протестировать), 0 - убивать процесс

👉 @i_odmin
09:58 05-02-2026
Разбираем SQL на примере PostgreSQL — SELECT, JOIN, GROUP, HAVING, Coalesce и др.

Изучаем классические реляционные базы данных и язык для работы с ними — SQL — на примере топовой открытой СУБД PostgreSQL. Если вас пугает JOIN, вы не понимаете GROUP BY, вас смущает вопрос отличия WHERE от HAVING — смотрите видео полностью и обязательно прорабатывайте все запросы вместе с нами! Мы создадим и изучим работу с базой данных для интернет-магазина, хранящую в себе товары, их фотографии, покупателей и их заказы.

00:00 Зачем знать SQL и базы данных
02:47 Виды баз данных
03:28 Понятие сущностей, проектирование больших систем
06:01 Сущности в реляционных базах данных
06:50 Проектирование схемы БД магазина на бумаге
10:27 Перенос схемы БД в PostgreSQL, создание БД и таблиц
15:50 Заполняем БД данными
17:40 SELECT, получение данных из БД
19:03 JOIN, объединение таблиц
23:25 LEFT JOIN, RIGHT JOIN, INNER JOIN
26:57 Удаление данных их таблиц, обновление данных таблиц
28:23 Пример комплексного запроса с несколькими JOIN
32:31 Группировка данных GROUP BY
34:11 COALESCE
34:47 Сортировка данных, ORDER BY
35:13 HAVING
36:26 LIMIT, OFFSET
38:09 Выводы, итоги

источник

👉 @i_odmin
15:31 04-02-2026
Наглядное руководство по туннелированию SSH и переадресации портов

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

Темы:
🔹 сценарии использования
🔹 конфигурация
🔹 SSH jumphosts
🔹 локальная/удаленная/динамическая переадресация портов и ограничения

https://i-odmin.ru/nagljadnoe-rukovodstvo-po-tunnelirovaniju-ssh-i-pereadresacii-portov/

👉 @i_odmin
10:20 03-02-2026
Сетевые ресурсы Linux

Данное видео представляет собой практическое руководство по эффективному монтированию сетевых папок в операционных системах на базе Linux. Автор подробно описывает преимущества использования опции multiuser, которая позволяет нескольким пользователям одновременно работать с общим ресурсом, используя их собственные учетные данные и права доступа.

В видео представлены два основных сценария настройки: через классическую связку логина и пароля с использованием защищенных ключей ядра и через систему аутентификации Kerberos. Предложенный метод решает проблемы безопасности и производительности, обеспечивая при этом единые пути к файлам для всех сотрудников.
Инструкция также содержит полезные советы по интеграции сетевых дисков в графический интерфейс и автоматизации процессов при загрузке системы.
Данный материал ориентирован на системных администраторов, занимающихся оптимизацией ИТ-инфраструктуры и импортозамещением программного обеспечения.

📺 Если вам удобно смотреть на youtube https://youtu.be/J-J9eqBPTgM

Бонус. На youtube к данному ролику добавили викторину для проверки знаний по данной теме.

👉 @i_odmin
08:24 03-02-2026
Как заставить пользователя изменить пароль при следующем входе в систему

Существует несколько способов.

Использование команды passwd
sudo passwd --expire [username]

Использование команды chage
sudo chage --lastday 0 [username]

Срок действия паролей
chage -l
Будет выведена следующая информация:
Когда пароль был последний раз изменен;
Дата окончания действия пароля;
Сколько дней осталось до окончания действия пароля;
Когда учетная запись пользователя будет закончена (можно, пожалуйста, далее мы будем говорить «заэкспайрится»?)
Минимальное количество дней между итерацией смены пароля;
Максимальное количество дней между итерацией смены пароля;

Заставляем пользователя менять пароль каждые 90 дней
sudo chage -M 90

Задаем срок жизни учетной записи (до 12 июня 2023)
sudo chage -E 2023-06-12 serg
sudo chage -E 2023-06-12 oleg

Сколько времени на смену пароля?
В примере даем Борису 10 дней на смену пароля с момента как пароль заэкспайрился
sudo chage -I 10 boris

Уведомление о смене пароля заранее
Через 25 дней истекает срок годности пароля Бориса
sudo chage -W 25 boris

Защищаемся от частой смены паролей пользователя
Минимальное количество дней между сменой паролей
sudo chage -m 25 boris

Удалить ограничение в днях
sudo chage -m 0 sergey

👉 @i_odmin
12:01 02-02-2026
📨 Протоколы безопасности электронной почты

🔹1. SSL/TLS
SSL (Secure Sockets Layer) и TLS (Transport Layer Security) - это протоколы шифрования, которые используются для защиты соединений между почтовым клиентом и сервером.
Ключевые моменты:
- Обеспечивают шифрование данных, чтобы защитить их от перехвата.
- Используются в протоколах передачи почты (SMTP, IMAP, POP3).
- Например, защищенное соединение обозначается как SMTPS (порт 465), IMAPS (порт 993) или POP3S (порт 995).


🔹2. SPF (Sender Policy Framework)
SPF помогает предотвратить подделку отправителя.
Как работает:
- Домены публикуют в DNS список IP-адресов, которые имеют право отправлять почту от их имени.
- Почтовые серверы проверяют, совпадает ли IP отправителя с разрешённым списком.


🔹3. DKIM (DomainKeys Identified Mail)
DKIM защищает письма от подделки.
Как работает:
- Использует цифровую подпись, которая добавляется в заголовок сообщения.
- Получатель может проверить подлинность письма с помощью публичного ключа, опубликованного в DNS отправителя.


🔹4. DMARC (Domain-based Message Authentication, Reporting & Conformance)
DMARC объединяет SPF и DKIM для усиления защиты.
Ключевые функции:
- Позволяет владельцам доменов указать, как обработать сообщения, которые не проходят SPF или DKIM.
- Генерирует отчёты для отправителей о подозрительных действиях.


🔹5. S/MIME (Secure/Multipurpose Internet Mail Extensions)
Протокол для шифрования и подписания сообщений электронной почты.
Особенности:
- Обеспечивает конфиденциальность благодаря шифрованию содержимого.
- Гарантирует целостность письма и его происхождение с помощью цифровой подписи.


🔹6. PGP (Pretty Good Privacy)
PGP используется для шифрования электронной почты и файлов.
Как работает:
- Предоставляет возможность создавать пары открытых и закрытых ключей.
- Получатель расшифровывает письмо с помощью своего закрытого ключа.


🔹7. Антивирусы и антиспам-фильтры
Современные почтовые системы интегрируют механизмы сканирования писем для выявления вредоносных вложений и фишинговых ссылок.


🔹8. Использование современных стандартов (MTA-STS и DANE)
- MTA-STS (Mail Transfer Agent Strict Transport Security): обеспечивает защиту от атак типа man-in-the-middle (MITM), гарантируя, что сообщения отправляются только через защищённые TLS-соединения.
- DANE (DNS-Based Authentication of Named Entities): добавляет уровень аутентификации через DNSSEC.


Рекомендации для пользователей:
1. Используйте почтовые сервисы с поддержкой SSL/TLS.
2. Настройте SPF, DKIM и DMARC для своего домена.
3. Активируйте двухфакторную аутентификацию (2FA).
4. Регулярно обновляйте почтовые клиенты и серверы.
5. Обучайте сотрудников правилам кибербезопасности.

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

👉 @i_odmin
06:11 02-02-2026
Как ускорить навигацию командной строки

++++++++++++++++++++++++++++++
Повторный запуск под root — sudo !!
user@host: cat /var/log/messages
cat /var/log/messages: Permission denied.
Как не надо: Вверх. Влево. Влево. Влево. …. sudo Enter. Рррр.
Как надо: sudo !!
++++++++++++++++++++++++++++++

++++++++++++++++++++++++++++++
Повторный ввод последнего аргумента — Alt+
Вы захотели еще раз воспользоваться только что написанным аргументом? Например, созданной директорией?

Как не надо: mkdir MyNewDirectory; cd MyNewDirectory
Как надо:

mkdir MyNewDirectory
cd <Alt+.>
++++++++++++++++++++++++++++++

++++++++++++++++++++++++++++++
Поиск запущенной команды — Ctrl+R
Какую же команду я только что запускал? Вверх. Вверх. Вверх. Вверх. О, вот и она!

Снова и снова вам приходится копаться в истории, ведь вы не знаете более подходящих альтернатив. Но что, если я скажу вам о том, что есть… поиск?

Как не надо: Вверх. Вверх. Вверх. Enter.
Как надо: Ctrl+R

Просто нажмите Ctrl+R и введите первые буквы нужной команды. Если поиск не выдал нужную команду сразу, то нажмите Ctrl+R еще раз. Повторное нажатие используется для прокрутки результатов. Ниже приведен поиск для cat.

(reverse-i-search)cat: sudo cat /var/log/messages
++++++++++++++++++++++++++++++

++++++++++++++++++++++++++++++
Переход в начальную директорию — cd
Вы не на шутку удивитесь, узнав, сколько людей не знают этого способа! cd. Да, так просто. Без лишних аргументов вы сразу попадете в начальную директорию.
++++++++++++++++++++++++++++++

++++++++++++++++++++++++++++++
Возвращение в последнюю директорию — cd -
Иногда простой способ — самый лучший. Допустим, вы были в директории /var/www/foo, а теперь оказались в /etc . Простая команда cd — вернет вас обратно в /var/www/foo .

Как не надо: cd /var/www/foo
Как надо: cd -
++++++++++++++++++++++++++++++

++++++++++++++++++++++++++++++
Контроль работы: передний план, фоновый режим и проч.
Возможно, вам потребуется какое-то время, чтобы привыкнуть, но оно того стоит. Допустим, вы редактируете файл в vim (вы же не будете этого делать в nano, да?!). И вот вам вдруг захотелось что-то найти в директории /var/www/html. Конечно же, вы можете выйти из vim, перейти в нужную директорию, а потом вдруг решить, что неплохо было бы вернуться к редактированию. Есть и другой вариант — перевести vim в фоновый режим и вернуться к нему позже.

Напишите: Ctrl+Z. Эта комбинация переводит все текущие задачи с переднего плана в фоновый режим. Полезно как минимум для: less, cat, man, vim и т.д.

«И куда же отправится моя активная задача?» — спросите вы. Напишите jobs и сами узнаете.

user@host: jobs
[1] Stopped vim
Супер. Теперь можно заняться чем-то другим. А как только вы решите вернуться к задаче, напишите fg. Эта команда возвращает фоновую задачу (vim) на передний план. Обратите внимание, что фоновые процессы приостанавливаются. Поэтому если в файле вы выполняли что-то из разряда tail, то для завершения команды потребуется какое-то время. Если же в фоновом режиме запущено несколько задач, то напишите fg 3 , где 3 — это номер задачи для возобновления. Увидеть список задач можно по команде jobs.
++++++++++++++++++++++++++++++

👉 @i_odmin
17:00 30-01-2026
IPv4 vs IPv6

👉 @i_odmin
12:22 30-01-2026
Тестирование производительности файловых систем Linux: ZFS, XFS, Btrfs против ext4

Тестирование производительности ZFS, XFS, Btrfs и ext4 на виртуальной машине с Debian 13, и результаты на данный момент весьма любопытны. В тестах dbench самый высокий показатель пропускной способности демонстрирует ZFS, в то время как ext4 показывает самую низкую задержку (latency).

Заметно, что при низкой нагрузке (например, всего несколько потоков ввода-вывода) Btrfs оказывается в лидерах - так что она вполне подойдет для универсального десктопа под игры и мультимедиа.

Однако для серверного использования ситуация иная: пропускная способность ZFS великолепна при высокой нагрузке, в то время как задержки ext4 остаются низкими даже в тяжелых условиях. В противовес им, производительность Btrfs заметно снижается при росте нагрузки.

👉 @i_odmin
09:06 30-01-2026
Частые ошибки программирования на Bash

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

Большинство имеющихся руководств посвящено тому, как надо писать. Я же расскажу о том, как писать НЕ надо :-)

Данный текст является вольным переводом вики-страницы «Bash pitfalls» по состоянию на 13 декабря 2008 года. В силу викиобразности исходника, этот перевод может отличаться от оригинала. Поскольку объем текста слишком велик для публикации целиком, он будет публиковаться частями.



1. for i in ls *.mp3

Одна из наиболее часто встречающихся ошибок в bash-скриптах — это циклы типа такого:

for i in `ls *.mp3`; do # Неверно!
some command $i # Неверно!
done

Это не сработает, если в названии одного из файлов присутствуют пробелы, т.к. результат подстановки команды ls *.mp3 подвергается разбиению на слова. Предположим, что у нас в текущей директории есть файл 01 - Don't Eat the Yellow Snow.mp3. Цикл for пройдётся по каждому слову из названия файла и $i примет значения: "01", "-", "Don't", "Eat", "the", "Yellow", "Snow.mp3".

Заключить всю команду в кавычки тоже не получится:

for i in "`ls *.mp3`"; do # Неверно!
...
https://habr.com/ru/articles/47706/

👉 @i_odmin
16:23 29-01-2026
💥 Почему твой Bash-скрипт опять упал на проде? (wiki на 🇬🇧)

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

Bash не прощает небрежности. Но вместо того чтобы каждый раз наступать на грабли самому, лучше изучить карту минного поля, которую составили до нас.

👉 Bash Pitfalls - это, без преувеличения, самый важный ресурс по безопасному шелл-скриптингу в интернете.

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

🟢 До сих пор используете for f in $(ls *.mp3)?
🟢 Забываете кавычки в if [ $foo = "bar" ]?
🟢 Не знаете, в чем опасность echo $variable?

Вам срочно сюда. Потратьте час времени, и вы сэкономите себе десятки часов отладки в будущем.

🔗 Читать Bash Pitfalls: https://mywiki.wooledge.org/BashPitfalls

#scripting #bash #devops #troubleshooting

👉 @i_odmin
12:30 29-01-2026
🖥 ТОП-7 альтернатив утилите top для Linux

top есть почти везде, но без прокрутки/мыши/нормальной визуализации он быстро начинает раздражать. В подборке 7 тулзов “как top, только приятнее”.

1) htop - “дефолтная” замена top

Интерактивный монитор с прокруткой, мышью, цветами, фильтрацией и более удобными действиями над процессами.

2) atop - когда нужна история и разбор полётов

Умеет логировать нагрузку и потом разбирать “что происходило на сервере”, плюс подсветка близких к критическим значений.

3) nmon - мониторинг “по секциям”

Можно включать/выключать блоки статистики горячими клавишами и смотреть ровно то, что нужно (CPU/диски/сеть и т.д.).

4) vtop - красивый UI в терминале (Node.js)

Выглядит как TUI-“графика”, есть мышь/темы, но нужна среда Node.js и npm.

5) bashtop - эффектно, но может быть тяжелее

Визуально очень приятный монитор, расширяемый модулями (например, датчики/температуры), но потребляет больше ресурсов.

⚠️ На практике многие уже переходят на btop - это C++-продолжение bashtop/bpytop (обычно быстрее/легче).

6) gtop - ещё один “Node-монитор”

Похож по духу на vtop: просто, наглядно, но тоже требует Node.js/npm.

7) glances - “всё на одном экране” + удалёнка

Ставит целью показать максимум метрик в минимуме места, умеет client/server, web UI, экспорты/интеграции. Очень годно для админов, которые мониторят не один хост.

🧰 Мини-установка (Debian/Ubuntu):

sudo apt install htop atop nmon glances
(а vtop/gtop - через npm)


#linux #sysadmin #monitoring #top #htop #glances #btop

👉 @i_odmin
08:00 29-01-2026
Работа с правами доступа файлов и директорий в Linux

# chown vasya /file
Назначить пользователя vasya владельцем файла file

# chown -R vasya directory
Рекурсивно обойти директорию directory и назначить пользователя vasya владельцем всех вложенных файлов и директорий

# chown vasya:group /file
Назначить владельца и группу для файла /file

# chmod ugo+rwx /directory
Установить полные права доступа rwx ( Read Write eXecute ) для всех ugo ( User Group Other ) на директорию /directory. То-же самое можно сделать, используя числовой представление chmod 777 directory

# chmod go-rwx /directory
Удалить все права на директорию /directory для группы и остальных

# chgrp new_group file
Изменить группу-владельца для file на new_group

# chmod o+t /home/public
Установить так называемый STIKY-бит на директорию /home/public. Удалить файл в такой директории может только владелец данного файла

# chmod o-t /home/public
Удалить STIKY-бит с директории /home/public

# chmod u+s /bin/binary_file
Установить SUID-бит на файл /bin/binary_file. Это позволяет любому пользователю системы, запускать данный файл с правами владельца файла

# chmod u-s /bin/binary_file
Удалить SUID-бит с файла /bin/binary_file

# chmod g+s /home/public
Установить SGID-бит на директории /home/public

# chmod g-s /home/public
Удалить SGID-бит с директории /home/public

# find / -perm -u+s
Поиск всех файлов с установленным SUID битом, начиная с корня файловой системы

# ls -lh
Листинг текущего каталога с правами доступа

👉 @i_odmin
11:23 28-01-2026
🦀 Sniffnet: Мониторинг трафика

Если tcpdump кажется слишком хардкорным для текущей задачи, а запускать комбайн Wireshark ради быстрого взгляда на активность сети не хочется, посмотрите на Sniffnet.

Это мультиплатформенное приложение, написанное на Rust (значит, быстрое и безопасное по памяти), которое превращает сетевой анализ в наглядный дашборд.

Что под капотом и снаружи:

📊 Визуализация в реальном времени: Графики входящего/исходящего трафика, никакой сухой статики.

🌍 Фильтрация: Можно быстро отсеять трафик по приложениям, протоколам (IP, UDP, TCP, ICMP) или даже по странам.

🔍 Детальная инспекция: Показывает доменные имена, провайдеров (ASN) и геолокацию хостов.

🔔 Умные уведомления: Можно настроить алерты, если трафик превысит определенный порог.

📁 PCAP: Умеет сохранять дампы для дальнейшего глубокого анализа.

🎨 Темы: Есть темная тема (обязательно для админа) и полная кастомизация цветов.

Работает на Linux, Windows и macOS. Установка простая, зависимости минимальные.

🔗 GitHub: https://github.com/GyulyVGC/sniffnet

#tools #rust #network #opensource #sysadmin

👉 @i_odmin
08:15 28-01-2026
Доступ через Kerberos для Linux машин в домен Windows

В этом видео я расскажу как получить доступ к сетевым ресурсам домена Windows для Linux машин, используя Kerberos.
Список пакетов которые протребуются:
1) krb5-user
2) ldap-utils
3) smbclient
4) установите пакет gvfs-backends если используете gnome

источник

👉 @i_odmin
10:34 27-01-2026
🎯 Мониторинг и оптимизация дискового пространства в Linux


💾 Мониторинг использования:

• Проверить свободное место:
df -h
• Размер директории:
du -sh /путь/к/директории
• Топ-10 крупных папок:
du -ah /путь | sort -rh | head -n 10
• Найти большие файлы (>1ГБ):
find / -type f -size +1G 2>/dev/null

📂 Очистка места:

• Удалить старые логи:
find /var/log -type f -name "*.log" -mtime +30 -exec rm -f {} \;
• Очистить кэш:
sudo apt-get clean
sudo dnf clean all
• Удалить временные файлы:
sudo rm -rf /tmp/* /var/tmp/*
• Удалить старые ядра:
sudo apt-get autoremove --purge

⚙️ Автоматизация:

• Добавить в crontab задачу для регулярной очистки логов:
0 3 * * 7 find /var/log -type f -name "*.log" -mtime +30 -exec rm -f {} \;

🔧 Оптимизация:

• Перенос крупных папок:
mv /большая/папка /mnt/новый_диск
ln -s /mnt/новый_диск /большая/папка
• Сжатие логов:
gzip /var/log/*.log
• Удаление дублированных файлов:
fdupes -r /путь

🛠️ Полезные утилиты:

• ncdu — анализ диска:
sudo apt install ncdu && ncdu /
• iotop — мониторинг операций с файлами:
iotop
• fslint — поиск мусорных файлов:
sudo apt install fslint

📊 Мониторинг в реальном времени:

• Свободное место:
df -h
• Загрузка диска процессами:
iotop
• Отслеживание изменений в директории:
inotifywait -m /путь

👉 @i_odmin
17:10 26-01-2026
Репозиторий 101 Linux Commands eBook содержит бесплатную электронную книгу, в которой собрано 101 базовых и продвинутых команд Linux.

Она ориентирована на пользователей, желающих улучшить свои навыки работы с Linux, и включает примеры использования, объяснения и полезные советы для каждой команды.
Это удобный ресурс для обучения и повседневной работы с системами на основе Linux.

• Basics;
- File Hierarchy Standard (FHS);
- Commands;
• Disk and File System Management;
- General Disk Manipulation (non-LVM);
- Globs (Wildcards);
- Regex;
- Stream redirection;
• Text Readers & Editors;
- Less;
- VI;
• User and Group Management;
• File System Permissions;
• SSH;
• Cronjobs;
• Package Management;
- RPM;
- YUM;
• List of commands by category:
- Directory Navigation;
- File Commands;
- File and Directory Manipulation;
- Package archive and compression tools;
- System commands;
- Networking Commands;
- Package Management;
- User Information commands;
- Session commands;
- Getting Help;
- Applications.

https://github.com/bobbyiliev/101-linux-commands-ebook

👉 @i_odmin
09:42 26-01-2026
🐧 Карта Linux: Где лежат твои конфиги и почему /tmp опять забит?

Новичку иерархия директорий в Linux кажется хаосом, но на самом деле это строгий стандарт (FHS - Filesystem Hierarchy Standard). Сохраняйте шпаргалку, чтобы не искать логи в /bin и не пытаться запустить бинарники из /etc.

📂 Основные узлы системы:

🟢 /bin & /sbin - здесь живут исполняемые файлы. Разница проста: в sbin лежат утилиты для админа (system binaries), требующие root-прав.
🟢 /etc - «сердце» настроек. Если нужно поправить конфиг Nginx или SSH, вам сюда. Совет: всегда делайте бэкап файла перед правкой.
🟢 /var - всё, что постоянно меняется. Логи (/var/log), кэши и базы данных. Если на сервере кончилось место — первым делом проверяй эту папку.
🟢 /home - личное пространство пользователей. Единственное место (кроме /tmp), где обычный юзер может «мусорить» без sudo.
🟢 /root - домашняя папка суперпользователя. Не путать с корневым разделом /!
🟢 /proc & /sys - это не совсем папки на диске, а виртуальные интерфейсы к ядру и процессам. Магия Linux в действии.
🟢 /opt - для стороннего софта. Сюда обычно ставятся проприетарные штуки вроде Google Chrome или Discord, которые не хотят размазываться по всей системе.
🟢 /mnt & /media - точки монтирования. Флешки летят в media, а временные диски лучше цеплять в mnt.

💡 Если сервис не стартует, беги в /var/log, если сервис «забыл» настройки- проверяй права на файлы в /etc.

#Linux #SystemAdmin #DevOps #Junior #Шпаргалка

👉 @i_odmin
09:22 23-01-2026
Эффективный разбор лог-файлов Linux!

15 примеров, которые администраторы Linux могут использовать ежедневно 👇.

1/ Поиск определенного текста в файле журнала:
grep "error" /var/log/syslog
Эта команда ищет слово "error" в файле syslog.

2/ Подсчитайте вхождения определенного шаблона:
grep -c "error" /var/log/syslog
Эта команда подсчитывает вхождения слова "error" в файл syslog.

3/ Отфильтруйте журналы по диапазону дат:
grep "Apr 1" /var/log/syslog
Эта команда фильтрует записи syslog за 1 апреля.

4/ Просматривайте журналы в режиме реального времени:
tail -f /var/log/syslog
Эта команда позволяет следить за файлом syslog в режиме реального времени.

5/ Найдите наиболее часто встречающиеся ошибки:
grep "error" /var/log/syslog | sort | uniq -c | sort -nr
Эта команда подсчитывает и сортирует наиболее частые сообщения об ошибках.

6/ Выполните поиск в нескольких файлах журнала одновременно:
grep "error" /var/log/syslog /var/log/nginx/error.log
Эта команда ищет "error" в журналах ошибок syslog и Nginx.

7/ Извлеките определенные поля из записей журнала:
awk '{print $4, $6}' /var/log/nginx/access.log
Эта команда извлекает и выводит определенные поля из записей журнала доступа Nginx.

8/ Поиск IP-адресов:
grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" /var/log/nginx/access.log
Эта команда извлекает IP-адреса из записей журнала доступа Nginx.

9/ Определите основные шаблоны доступа:
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
Эта команда определяет наиболее часто используемые URL-адреса в журналах доступа Nginx.

10/ Поиск определенных кодов состояния HTTP:
grep "404" /var/log/nginx/access.log
Эта команда ищет ошибки HTTP 404 в журналах доступа Nginx.

11/ Определите основных потребителей трафика:
awk '{print $10, $7}' /var/log/nginx/access.log | sort -rh | head
Эта команда определяет URL-адреса с наибольшим потреблением трафика в журналах доступа Nginx.

12/ Фильтруйте журналы по IP-адресу источника:
grep "192.168.1.100" /var/log/auth.log
Эта команда фильтрует журналы аутентификации по определенному IP-адресу.

13/ Поиск неудачных попыток входа в систему:
grep "Failed password" /var/log/auth.log
Эта команда ищет неудачные попытки входа в систему SSH в журналах auth.

14/ Проверьте время запуска и выключения системы:
grep "systemd" /var/log/syslog | grep "Starting" | grep "Stopping"
Эта команда извлекает события запуска и выключения системы из syslog.

15/ Найдите процессы, потребляющие большое количество CPU:
grep "CPU" /var/log/syslog
Эта команда помогает выявить процессы, вызывающие повышенное потребление ЦП, в системных журналах.

👉 @i_odmin
13:38 22-01-2026
Руководство по настройке и использованию rsync

rsync это мощный инструмент для копирования и синхронизации данных на Linux, который особенно полезен для резервного копирования. Его отличительная черта, передача только изменённых частей файлов, что делает процесс очень быстрым.


🟢 Основные команды rsync

1. Базовая синхронизация:
rsync -av /источник/ /назначение/- -a (archive): сохраняет структуру каталогов, атрибуты файлов и символьные ссылки.
- -v (verbose): выводит информацию о копируемых файлах.

2. Сжатие передаваемых данных:
rsync -az /источник/ /назначение/- -z (compress): сжимает данные, уменьшая объём передачи.

3. Копирование через SSH:
rsync -avz -e ssh /источник/ user@server:/назначение/- -e ssh: указывает использование SSH для безопасной передачи данных.

4. Удаление файлов в папке назначения, которые отсутствуют в источнике:
rsync -av --delete /источник/ /назначение/


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

1. Резервное копирование локального каталога:
rsync -av --progress /home/user/documents/ /backup/documents/- --progress: отображает прогресс копирования.

2. Синхронизация с удалённым сервером:
rsync -avz /data/ user@remote:/backup/data/

3. Исключение определённых файлов или папок:
rsync -av --exclude='*.tmp' --exclude='cache/' /источник/ /назначение/- --exclude: исключает файлы или каталоги, соответствующие шаблону.



🟢 Автоматизация с помощью Cron

Для регулярного выполнения резервного копирования используйте планировщик заданий cron.

1. Откройте файл cron:
crontab -e
2. Добавьте задание (например, ежедневное копирование в 2:00 ночи):
0 2 * * * rsync -avz /data/ user@server:/backup/data/


🟢 Полезные флаги и опции

| Флаг | Описание
|-------------------------------------------------------------------------------------------|
| --progress | Отображает статус копирования.
| --dry-run | Симулирует выполнение команды без фактического копирования.
| --exclude | Исключает определённые файлы или папки.
| --delete | Удаляет файлы в папке назначения, которые отсутствуют в источнике.
| --bwlimit=KBytes | Ограничивает скорость передачи данных.

Преимуществ rsync
- Эффективное использование сетевых и дисковых ресурсов.
- Гибкость благодаря множеству настроек.
- Совместимость с SSH для безопасной передачи данных.

👉 @i_odmin
10:37 21-01-2026
Stress – это инструмент командной строки Linux, который позволяет нагружать процессор, память, систему ввода-вывода и диск

Установим stress на CentOS, RHEL, Fedora
sudo dnf install stress

Установим stress на Ubuntu и Debian
sudo apt install stress

Синтаксис stress
stress [OPTION [ARG]]

Увеличить нагрузку на процессор
Опция -c или –cpu использует заданное количество воркеров на функции sqrt(), чтобы увеличить нагрузку на процессор и заставить его работать интенсивнее.
stress -c N или stress --cpu N

Следующая команда будет непрерывно загружать 4 ядра процессора
stress --cpu 4

Задаем тайм-аут для стресса
Чтобы задать работу на определенное время, вы можете использовать опцию -t или –timeout.
Следующие команды будут нагружать четыре ядра процессора только в течение 10 с.
stress -c 4 -t 10 или stress --cpu 4 --timeout 10

Увеличение нагрузки на память
Опция -v или --vm позволяет вам нагрузить виртуальную память.
[simterm] $ stress -v N

Увеличение нагрузки ввода-вывода на диск
Вы можете увеличить нагрузку ввода-вывода с помощью опции -i или –io.
stress -i N или stress --io N

Создаем нагрузка на систему с помощью двух процессов, связанных с вводом-выводом.
# stress --io 100

Мы проверим загрузку IO диска с помощью команды iostat.
У меня на сервере доступны диски /dev/vda и /dev/vdb, вы можете проверить активный диск с помощью lsblk или fdisk или любой другой команды.
Если вы выполните эту команду без каких-либо аргументов, то она покажет дисковые IO для всех доступных дисков.
iostat -d /dev/vda -d /dev/vdb 1

Увеличение нагрузки на диск
Опция -d или –hdd используется для создания нагрузки на диск.
stress -d N или stress --hdd N

Для увеличения нагрузки на диск мы используем следующую команду
stress --hdd 100

Посмотрим пропускную способность диска с помощью команды vmstat
vmstat 1 100

Увеличение нагрузки на несколько системных ресурсов (ЦП, память, ввод/вывод)
Команде stress можно задать несколько нагрузок.
В следующем примере используется 4 ядра ЦП, 2 виртуальных памяти и 1 процесс ввода-вывода для нагрузки на систему в течение 20 секунд.
stress --cpu 4 --vm 2 --io 1 -t 20

👉 @i_odmin
09:57 20-01-2026
Протокол ICMP, утилита traceroute

Утилита traceroute (в Windows tracert) используется для определения маршрута от отправителя к получателю. Утилита выдает перечень всех маршрутизаторов, через которые необходимо пройти.

Для определения IP-адресов маршрутизаторов, traceroute использует протокол ICMP. На первом этапе отправляется эхо-запрос (ICMP-пакет с кодом 8, типом 0) со временем жизни 1. Первый маршрутизатор уменьшает время жизни до 0, отбрасывает пакет и передает отправителю сообщение об истечении времени жизни пакета (ICMP-пакет с кодом 11, типом 0). traceroute получает ICMP-пакет, анализирует IP-заголовок и извлекает из него IP-адрес отправителя. Это и есть адрес первого маршрутизатора.

Затем отправляется эхо-запрос со временем жизни 2, он доходит до второго маршрутизатора. Второй маршрутизатор отбрасывает пакет и также передает сообщение, что время жизни пакета истекло. traceroute извлекает из сообщения IP-адрес второго маршрутизатора. После этого traceroute передает эхо-запрос со временем жизни 3, 4, 5 и т.д., пока запрос не дойдет до получателя.

источник

👉 @i_odmin
09:56 19-01-2026
⚡️ Гайд по Kubernetes для скептиков

Считаете, что Kubernetes переоценен и слишком сложен? Возможно, вам просто не так его объясняли.

Интересная статья, которая разбирает K8s именно с позиции «хейтера». Автор проходит по основным болям внедрения и объясняет архитектуру «на пальцах», минуя сложную терминологию там, где это возможно.

Кому будет полезно:

🔵 Тем, кто до сих пор избегает K8s.
🔵 Тем, кто хочет структурировать знания.
🔵 Тем, кто ищет аргументы «За» и «Против» для внедрения.

🔗 Ссылка на статью: https://i-odmin.ru/gajd-po-kuberu-dlja-hejterov/

#DevOps #K8s #Education #Admin

👉 @i_odmin
20:28 15-01-2026
Что из перечисленного будет разослано на все порты после получения коммутатором?

Cisco CCNA 200-301

Краткий ответ:
Кадр от ВВ (неизвестный) к АА (известный) будет разослан всем.

#cisco #ccna #ccna200301 #vlan

👉 @i_odmin
11:42 15-01-2026
Основы компьютерных сетей

Тема №1. Основные сетевые термины и сетевые модели

Тема №2. Протоколы верхнего уровня

Тема №3. Протоколы нижних уровней (транспортного, сетевого и канального)

Тема №4. Сетевые устройства и виды применяемых кабелей

Тема №5. Понятие IP адресации, масок подсетей и их расчет

Тема №6. Понятие VLAN, Trunk и протоколы VTP и DTP

Тема №7. Протокол связующего дерева: STP

Тема №8. Протокол агрегирования каналов: Etherchannel

Тема №9. Маршрутизация: статическая и динамическая на примере RIP, OSPF и EIGRP

👉 @i_odmin
00:04 15-01-2026
💡Почему мы путаем биты с байтами и как писать правильно

Мы постоянно обсуждаем скорость интернета и объемы данных, но часто путаемся в обозначениях. Мбит или МБ? «b» или «B»?

Существуют строгие стандарты (в том числе ГОСТ 8.417-2002), регламентирующие эти метрики.

Главное правило:
В скорости передачи данных (биты) приставки часто пишутся с маленькой буквы, а в объеме данных (байты) - с большой.

1. Скорость (Data Transfer Rates):

🟢 кбит/с (kbps, kb/s) - килобиты. Обратите внимание: «к» - строчная.
🟢 Мбит/с (Mbps, Mb/s) - мегабиты.
🟢 Гбит/с (Gbps, Gb/s) - гигабиты.

2. Объём данных (Data Storage):

🟢 КБ, Кбайт (KB) - Килобайты. Здесь «К» - заглавная.
🟢 МБ, Мбайт (MB) - Мегабайты.
🟢 ГБ, Гбайт (GB) - Гигабайты.

Частые ошибки и нюансы:

🟢 MB/s ≠ Mb/s. Разница в 8 раз! 1 Мегабайт/с = 8 Мегабит/с. Чтобы не вводить людей в заблуждение, для скорости лучше использовать Mbit/s.
🟢 Английская «b» vs «B». В международной практике «b» - это bit, а «B» - это Byte.
🟢 Сокращения. ГОСТ рекомендует писать «бит» полностью, но в IT-среде устоялись сокращения. Если видите Гб/с - это, как правило, гигабиты. Если ГБ/с - гигабайты.

👉 @i_odmin
09:36 14-01-2026
Какой из указанных ниже состояний OSPF является правильным для красной ссылки?

Cisco CCNA 200-301

Краткий ответ:
Состояние 2-Way будет правильным, так как красная ссылка соединяет два маршру-тизатора DROTHER, которые устанавливают только двустороннее соседство, но не обмениваются базами данных состояния каналов.

#cisco #ccna #ccna200301 #vlan

👉 @i_odmin
16:14 12-01-2026
💾 nvme-cli: Полный контроль над вашими SSD в Linux

Если вы работаете с современными серверами или высокопроизводительными рабочими станциями, утилита nvme-cli это маст-хэв. Это официальный инструмент для управления накопителями NVM Express (NVMe) напрямую из командной строки, без использования громоздкого проприетарного софта от вендоров.

В отличие от классического hdparm или smartctl, которые пришли из эпохи HDD/SATA, nvme-cli заточен под специфику протокола NVMe.

Что умеет:
🛠 Мониторинг здоровья: Детальный вывод SMART-логов, температура, ошибки, ресурс записи (TBW).
⚡ Управление пространствами: Создание, удаление и аттач Namespaces (разделение одного физического диска на логические).
🔒 Безопасная очистка: Выполнение команд Sanitize и Secure Erase (критично для compliance).
📦 Обновление прошивки: Заливка новой firmware без перезагрузки сервера (если поддерживается железом).

Шпаргалка популярных команд:

# Показать список всех NVMe устройств
nvme list

# Посмотреть SMART-лог (здоровье диска)
nvme smart-log /dev/nvme0

# Узнать детальную информацию о контроллере
nvme id-ctrl /dev/nvme0

# Отправить диск в глубокий сон (управление питанием)
nvme set-feature /dev/nvme0 -f 2 -v 2

🔗 Репозиторий: https://github.com/linux-nvme/nvme-cli

#linux #sysadmin #storage #nvme #tools

👉 @i_odmin
12:11 12-01-2026
Шпаргалка по grep

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


🟢 Основные команды:

1. Поиск строки в файле:

grep "строка" имя_файла
Ищет указанную строку в файле.

2. Поиск в нескольких файлах:

grep "строка" файл1 файл2

3. Поиск рекурсивно:

grep -r "строка" /путь/к/каталогу
Ищет строку во всех файлах указанного каталога.

4. Игнорирование регистра:

grep -i "строка" имя_файла

5. Показать номер строки:

grep -n "строка" имя_файла

6. Вывод строк, не содержащих шаблон:

grep -v "строка" имя_файла

7. Подсветка совпадений:

grep --color "строка" имя_файла

8. Подсчитать количество совпадений:

grep -c "строка" имя_файла


🟢 Расширенные команды:

1. Использование регулярных выражений:

grep -E "регулярное_выражение" имя_файла
Или:

egrep "регулярное_выражение" имя_файла

2. Поиск с указанием количества строк до и после совпадения:

grep -A 3 -B 2 "строка" имя_файла
-A (after) и -B (before) указывают количество строк, которые будут выведены до и после найденной строки.

3. Поиск только имени файла:

grep -l "строка" *

4. Инвертированный поиск файлов:

grep -L "строка" *
Показывает файлы, в которых не найдено совпадений.



🟢 Полезные опции:

- -w — ищет полные слова.
- -o — выводит только совпавшие строки.
- -q — тихий режим, без вывода в терминал, используется для проверки совпадений.

Примеры:

1. Поиск строки "error" в логах:

grep "error" /var/log/syslog

2. Поиск строк с IP-адресами:

grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' имя_файла

3. Поиск строки и запись результата в файл:

grep "pattern" имя_файла > output.txt


👉 @i_odmin