👉Естественно опции можно комбинировать. Вот пример
👉Чтобы найти всё слово целиком используют опцию
👉С помощью опций
👉Чтобы наоборот исключить из вывода найденные по шаблону строку используют опцию
👉С помощью опции
👉Для поиска без учета регистра используют опцию
👉Чтобы расскрасить найденное слово используют опцию
👉В регулярных выражениях символ начала строки
Строки начинающиеся на s:
Строки заканчивающиеся на s:
-Eo. Показать только ip-адреса.grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'👉Чтобы найти всё слово целиком используют опцию
-w. Без этой опции части слова тоже будут найдены, если совпадут с шаблоном. Например найти слово target.grep -w 'target'
👉С помощью опций
-A и -B можно показать строки после совпадения и до совпадения. А опция -C покажет строки до и после совпадения.grep -A 3 'bbo'
grep -B 3 'bbo'
grep -C 3 'bbo'
👉Чтобы наоборот исключить из вывода найденные по шаблону строку используют опцию
-v. Например исключим комментарии, начинающиеся с #.grep -v '^#'
👉С помощью опции
-m мы можем указать сколько первых совпадений показать. Например вывести только первое совпадение.grep -m 1 bbo
👉Для поиска без учета регистра используют опцию
-i.grep -i bbo
👉Чтобы расскрасить найденное слово используют опцию
--color.grep --color bbo
👉В регулярных выражениях символ начала строки
^, а символ конца строки $.Строки начинающиеся на s:
grep '^s'Строки заканчивающиеся на s:
grep 's$'📌Для того чтобы создать массив в bash нужно использовать скобки и перечислить через пробелы элементы массива. Например:
Пробежаться по этому массиву можно с помощью цикла for.
Это можно использовать для написания скриптов. Например в массиве вы указываете список баз данных. А затем с помощью цикла создаёте дампы перечисленных баз.
Или например можно поработать с файлами.
animals=("cat" "dog" "horse" "cow")Пробежаться по этому массиву можно с помощью цикла for.
for i in "${animals[@]}"; do
echo "$i"
doneЭто можно использовать для написания скриптов. Например в массиве вы указываете список баз данных. А затем с помощью цикла создаёте дампы перечисленных баз.
Или например можно поработать с файлами.
files=("file1.txt" "file2.txt" "file3.txt")
for f in "${files[@]}"; do
cp "$f" /backup/
done👍3
📌ZPOOL TRIM
✅Команда zpool trim инициирует процесс TRIM для разделов ZFS. То есть сообщает SSD (или другому блоку устройства, поддерживающему TRIM), какие блоки больше не используются и могут быть физически очищены.
Полезно trim запускать:
- После удаления большого объема данных.
- После пересоздания или восстановления пула.
- Регулярно, по расписанию, например раз в месяц.
✅Можно настроить автоматический trim на пуле:
Автоматический TRIM в ZFS (autotrim=on) работает в фоновом режиме, асинхронно. Работает периодически, не сразу после удаления.
Из-за неизвестного алгоритма autotrim и отсутствия его настроек, лично я предпочитаю запускать trim вручную по расписанию в cron.
✅Команда zpool trim инициирует процесс TRIM для разделов ZFS. То есть сообщает SSD (или другому блоку устройства, поддерживающему TRIM), какие блоки больше не используются и могут быть физически очищены.
zpool trim <pool_name>
Полезно trim запускать:
- После удаления большого объема данных.
- После пересоздания или восстановления пула.
- Регулярно, по расписанию, например раз в месяц.
✅Можно настроить автоматический trim на пуле:
zpool set autotrim=on <pool_name>
Автоматический TRIM в ZFS (autotrim=on) работает в фоновом режиме, асинхронно. Работает периодически, не сразу после удаления.
Из-за неизвестного алгоритма autotrim и отсутствия его настроек, лично я предпочитаю запускать trim вручную по расписанию в cron.
📌Journalctl - утилита для просмотра логов в SystemD
Чтобы посмотреть логи службы или ядра в системах на базе SystemD используется команда journalctl. Вот основные варианты:
👉Посмотреть логи конкретной службы.
👉Последние строки журнала.
👉Следить за логами в реальном времени (аналог tail -f).
👉Показать логи только за сегодня.
👉Показать логи за конкретный период.
👉Чтобы просмотреть сообщения ядра, а также можем добавить вывод последних сообщений.
👉Все дополнительные опции и фильтры, которые мы применяли для логов службы применимы и для логов ядра. Например:
Чтобы посмотреть логи службы или ядра в системах на базе SystemD используется команда journalctl. Вот основные варианты:
👉Посмотреть логи конкретной службы.
journalctl -u <имя_службы>
👉Последние строки журнала.
journalctl -u <имя_службы> -n 50
👉Следить за логами в реальном времени (аналог tail -f).
journalctl -u <имя_службы> -f
👉Показать логи только за сегодня.
journalctl -u <имя_службы> --since today
👉Показать логи за конкретный период.
journalctl -u <имя_службы> --since "2025-06-17 14:00" --until "2025-06-17 15:00"
👉Чтобы просмотреть сообщения ядра, а также можем добавить вывод последних сообщений.
journalctl -k
journalctl -k -f
👉Все дополнительные опции и фильтры, которые мы применяли для логов службы применимы и для логов ядра. Например:
journalctl -k --since today
📌Proxmox VE + Proxmox Backup Server: нюанс с пользователями и паролями.
Недавно настраивал связку Proxmox VE и PBS. Для подключения хранилища использовал логин root@pam от PBS. Позже сменил пароль root на PBS — и внезапно перестали делаться бекапы.
✅Важно: в Proxmox VE нельзя просто изменить пароль у уже добавленного хранилища PBS — приходится удалять и подключать заново.
Недавно настраивал связку Proxmox VE и PBS. Для подключения хранилища использовал логин root@pam от PBS. Позже сменил пароль root на PBS — и внезапно перестали делаться бекапы.
✅Важно: в Proxmox VE нельзя просто изменить пароль у уже добавленного хранилища PBS — приходится удалять и подключать заново.
👍2
🔐 В этот раз решил сделать правильно:
- Создал отдельного пользователя pbsuser@pbs;
- Назначил ему права только на нужное хранилище через PBS:
- - Access Control → Permissions → Add:
- - Path: datastore/backups (название вашего хранилища);
- - User: pbsuser@pbs;
- - Role: DatastorePowerUser.
❗️Но после переподключения хранилища в PVE появилась ошибка:
📎 Оказалось, PBS строго проверяет владельца старых резервных копий. Если они были созданы под root@pam, то pbsuser@pbs не сможет создать новые, пока старые не будут удалены.
✅ Вывод:
- Всегда используйте отдельного пользователя для бекапов;
- Назначайте ему только необходимые права;
- При смене пароля — удаляйте и пересоздавайте подключение к PBS в PVE;
- Если меняете пользователя — удаляйте старые бекапы, иначе новые не создадутся из-за конфликта владельца.
Так и безопаснее, и надёжнее.
- Создал отдельного пользователя pbsuser@pbs;
- Назначил ему права только на нужное хранилище через PBS:
- - Access Control → Permissions → Add:
- - Path: datastore/backups (название вашего хранилища);
- - User: pbsuser@pbs;
- - Role: DatastorePowerUser.
❗️Но после переподключения хранилища в PVE появилась ошибка:
backup owner check failed (pbsuser@pbs != root@pam)
📎 Оказалось, PBS строго проверяет владельца старых резервных копий. Если они были созданы под root@pam, то pbsuser@pbs не сможет создать новые, пока старые не будут удалены.
✅ Вывод:
- Всегда используйте отдельного пользователя для бекапов;
- Назначайте ему только необходимые права;
- При смене пароля — удаляйте и пересоздавайте подключение к PBS в PVE;
- Если меняете пользователя — удаляйте старые бекапы, иначе новые не создадутся из-за конфликта владельца.
Так и безопаснее, и надёжнее.
👍3
📌Создание архивов при помощи tar
📦 Полный бэкап (Full backup):
🧱 Инкрементальный бэкап (Incremental backup):
♻️ Восстановление:
Сначала восстанови полный бэкап:
Затем - все инкрементальные, по порядку:
📌 Новая цепочка бэкапов:
Если нужно начать новую инкрементальную цепочку:
- Удали старый файл backup.snar.
- Сделай новый полный бэкап (см. шаг 1).
📎 Полезно знать:
- Файл backup.snar содержит метаинформацию об изменениях. Не удаляй его, если продолжаешь делать инкременты.
- Посмотреть содержимое архива:
📦 Полный бэкап (Full backup):
tar --create --gzip --file=full_backup.tar.gz --listed-incremental=backup.snar /путь/к/каталогу
🧱 Инкрементальный бэкап (Incremental backup):
tar --create --gzip --file=incr_backup_$(date +%Y-%m-%d).tar.gz --listed-incremental=backup.snar /путь/к/каталогу
♻️ Восстановление:
Сначала восстанови полный бэкап:
tar --extract --gzip --file=full_backup.tar.gz
Затем - все инкрементальные, по порядку:
tar --extract --gzip --file=incr_backup_2025-07-28.tar.gz
📌 Новая цепочка бэкапов:
Если нужно начать новую инкрементальную цепочку:
- Удали старый файл backup.snar.
- Сделай новый полный бэкап (см. шаг 1).
📎 Полезно знать:
- Файл backup.snar содержит метаинформацию об изменениях. Не удаляй его, если продолжаешь делать инкременты.
- Посмотреть содержимое архива:
tar --list --file=archive.tar.gz
👍4
📌Как выяснить, загружена ли система Debian 12 в режиме UEFI или Legacy BIOS?
👉Способ 1: Проверка наличия переменных EFI
- Если каталог существует и не пуст — система загружена в режиме UEFI. В противном случае это BIOS.
👉Способ 2: Команда bootctl (если установлен systemd-boot)
- Если в выводе будет строка "System is booted in EFI mode", значит это UEFI.
- Если команда скажет, что bootctl не поддерживается или EFI не найден — значит BIOS.
👉Способ 3: Проверка таблицы разделов
- Если диск размечен как gpt и есть раздел типа EFI System Partition, вероятнее всего система загружена через UEFI.
- Если диск размечен как msdos — скорее всего используется BIOS.
👉Способ 4: Проверка загрузчика
Если используется GRUB, выполните:
- Если вывод присутствует и показывает загрузочные записи — это UEFI.
- Если пишет EFI variables are not supported on this system. — это BIOS.
👉Способ 1: Проверка наличия переменных EFI
ls /sys/firmware/efi
- Если каталог существует и не пуст — система загружена в режиме UEFI. В противном случае это BIOS.
👉Способ 2: Команда bootctl (если установлен systemd-boot)
bootctl status
- Если в выводе будет строка "System is booted in EFI mode", значит это UEFI.
- Если команда скажет, что bootctl не поддерживается или EFI не найден — значит BIOS.
👉Способ 3: Проверка таблицы разделов
sudo parted -l
- Если диск размечен как gpt и есть раздел типа EFI System Partition, вероятнее всего система загружена через UEFI.
- Если диск размечен как msdos — скорее всего используется BIOS.
👉Способ 4: Проверка загрузчика
Если используется GRUB, выполните:
sudo efibootmgr
- Если вывод присутствует и показывает загрузочные записи — это UEFI.
- Если пишет EFI variables are not supported on this system. — это BIOS.
👍2
📌В терминале Visual Studio Code на Linux не работают некоторые команды
👉Я уже давно полностью перешёл на Linux, использую Linux Mint Xfce4. А для написания скриптов или плейбуков использую Visual Studio Code.
👉Кроме синтаксической подсветки и подсказок получил и другие удобства. Прям из Visual Studio Code можно подключаться по SSH к серверам, работать с GIT и GigHub.
👉Но вот во встроенном терминале не всё работало, например команды
👉Оказывается, если установить Visual Studio Code из графического менеджера программ на Linux Mint, то он установится как Flatpak приложение. Такое приложение работает в своей песочнице и поэтому ему не доступны все возможности.
👉Для полноценной работы терминала я удалил Flatpak версию Visual Studio Code. Затем скачал deb пакет с официального сайта (https://code.visualstudio.com/docs/setup/linux) и установил Visual Studio Code с помощью этого пакета. И терминал заработал в полную силу.👌
👉Я уже давно полностью перешёл на Linux, использую Linux Mint Xfce4. А для написания скриптов или плейбуков использую Visual Studio Code.
👉Кроме синтаксической подсветки и подсказок получил и другие удобства. Прям из Visual Studio Code можно подключаться по SSH к серверам, работать с GIT и GigHub.
👉Но вот во встроенном терминале не всё работало, например команды
su и sudo, а также команды ansible.👉Оказывается, если установить Visual Studio Code из графического менеджера программ на Linux Mint, то он установится как Flatpak приложение. Такое приложение работает в своей песочнице и поэтому ему не доступны все возможности.
👉Для полноценной работы терминала я удалил Flatpak версию Visual Studio Code. Затем скачал deb пакет с официального сайта (https://code.visualstudio.com/docs/setup/linux) и установил Visual Studio Code с помощью этого пакета. И терминал заработал в полную силу.👌
👍3
📌На сайте eruz.zakupki.gov.ru используется неподдерживаемый протокол
Единый реестр участников закупок (ЕРУЗ) - это перечень поставщиков, подрядчиков и исполнителей, который находится в Единой информационной системе в сфере закупок.
При переходе в личный кабинет у вас может возникнуть ошибка:
Чтобы избежать этой ошибки вы должны соблюсти следующие условия.
1. Использовать только Яндекс Браузер.
2. На компьютере должен быть установлен КриптоПро CSP и его плагин для работы в браузере.
3. В настройках Яндекс Браузера должна быть включена галочка: Подключаться к сайтам, использующим шифрование по ГОСТ. Требуется КриптоПро CSP.
4. Дополнительно может мешать антивирус. Например в моём случае Касперский вмешивался в трафик браузера и мешал подключению.
Единый реестр участников закупок (ЕРУЗ) - это перечень поставщиков, подрядчиков и исполнителей, который находится в Единой информационной системе в сфере закупок.
При переходе в личный кабинет у вас может возникнуть ошибка:
На сайте eruz.zakupki.gov.ru используется неподдерживаемый протокол.
Протокол не поддерживается. Клиент и сервер используют разные версии протокола SSL или разные наборы шифров.
ERR_SSL_VERSION_OR_CIPHER_MISMATCH
Чтобы избежать этой ошибки вы должны соблюсти следующие условия.
1. Использовать только Яндекс Браузер.
2. На компьютере должен быть установлен КриптоПро CSP и его плагин для работы в браузере.
3. В настройках Яндекс Браузера должна быть включена галочка: Подключаться к сайтам, использующим шифрование по ГОСТ. Требуется КриптоПро CSP.
4. Дополнительно может мешать антивирус. Например в моём случае Касперский вмешивался в трафик браузера и мешал подключению.
📌SSH Port forwarding
✅SSH позволяет не только осуществлять подключение к командной строке, он также позволяет пробрасывать порты, это называется Port forwarding.
✅В статье разбираемся с этим:
👉https://sysadminium.ru/ssh-port-forwarding/
✅SSH позволяет не только осуществлять подключение к командной строке, он также позволяет пробрасывать порты, это называется Port forwarding.
✅В статье разбираемся с этим:
👉https://sysadminium.ru/ssh-port-forwarding/
📌Утилита tcpdump для анализа сети
✅tcpdump — это консольная утилита для захвата и анализа сетевого трафика. Она позволяет просматривать пакеты, проходящие через сетевой интерфейс, и фильтровать их по различным критериям (IP-адрес, порт, протокол и др.). Используется для диагностики сетевых проблем, мониторинга и отладки сетевых приложений.
Примеры:
# tcpdump -i ens18
# tcpdump host 192.168.0.100
# tcpdump net 192.168.0.0/24
# tcpdump dst port 8080
# tcpdump tcp and portrange 0-1000
Больше примеров и описание к ним читайте в статье.
✅tcpdump — это консольная утилита для захвата и анализа сетевого трафика. Она позволяет просматривать пакеты, проходящие через сетевой интерфейс, и фильтровать их по различным критериям (IP-адрес, порт, протокол и др.). Используется для диагностики сетевых проблем, мониторинга и отладки сетевых приложений.
Примеры:
# tcpdump -i ens18
# tcpdump host 192.168.0.100
# tcpdump net 192.168.0.0/24
# tcpdump dst port 8080
# tcpdump tcp and portrange 0-1000
Больше примеров и описание к ним читайте в статье.
Sysadminium
Утилита tcpdump для анализа сети - Sysadminium
Консольная утилита tcpdump предназначена для исследования сетевого трафика на linux серверах. В этой статье поучимся её использовать.
📌Сигналы для завершения процессов в Linux
✔️SIGTERM (15) – Корректное завершение. Процессу отправляется запрос на завершение. Позволяет закрыть файлы, сохранить данные. Именно этот сигнал отправляет команда
✔️SIGKILL (9) – Принудительное завершение. Немедленно убивает процесс без возможности обработки. Используем если SIGTERM не помог.
✔️ SIGINT (2) – Прерывание (аналог Ctrl+C). Корректное завершение. Если не содержит обработчик для SIGINT, то сработает как SIGTERM.
✔️SIGHUP (1) – Перезапуск процесса без остановки. Аналог reload, но работает лишь для некоторых программ: Nginx, Apache, sshd, syslogd.
✔️SIGTERM (15) – Корректное завершение. Процессу отправляется запрос на завершение. Позволяет закрыть файлы, сохранить данные. Именно этот сигнал отправляет команда
systemctl stop.kill -15 <PID>
# или просто
kill <PID>
✔️SIGKILL (9) – Принудительное завершение. Немедленно убивает процесс без возможности обработки. Используем если SIGTERM не помог.
kill -9 <PID>
✔️ SIGINT (2) – Прерывание (аналог Ctrl+C). Корректное завершение. Если не содержит обработчик для SIGINT, то сработает как SIGTERM.
kill -2 <PID>
✔️SIGHUP (1) – Перезапуск процесса без остановки. Аналог reload, но работает лишь для некоторых программ: Nginx, Apache, sshd, syslogd.
kill -1 <PID>
# например
kill -1 $(pidof nginx)
👍1
✔️SIGQUIT (3) – Завершение процесса с дампом памяти. Сигнал отправляется вручную для отладки. Программа может перехватить его если есть обработчик.
✔️SIGSEGV (11) - завершение процесса с дампом памяти. Сигнал генерирует ядро при критических ошибках. Обычно не перехватывается.
kill -3 <PID>
✔️SIGSEGV (11) - завершение процесса с дампом памяти. Сигнал генерирует ядро при критических ошибках. Обычно не перехватывается.
kill -11 <PID>
📌Команда sed в Linux
Команда sed - это мощный потоковый текстовый редактор, который позволяет выполнять операции поиска, замены, удаления и другие преобразования текста без интерактивного редактирования файлов.
✔️Изменение подстроки, команда s . Укажем что и на что менять. Для реального редактирования файла добавьте опцию -i.
✔️Изменение всей строки целиком, команда c. Укажем шаблон и новую строку:
✔️Удаление строк, подпадающих под шаблон, команда d:
✔️Добавление строки после строки, попадающей под шаблон. Команда a:
✔️Выполнение нескольких команд с помощью опции -e :
✔️Пример замены параметра в конфиге (не важно fs.file-max закомментирован или нет, вам нужно помнить только название параметра):
Команда sed - это мощный потоковый текстовый редактор, который позволяет выполнять операции поиска, замены, удаления и другие преобразования текста без интерактивного редактирования файлов.
✔️Изменение подстроки, команда s . Укажем что и на что менять. Для реального редактирования файла добавьте опцию -i.
sed -i 's/old/new/' file.txt
✔️Изменение всей строки целиком, команда c. Укажем шаблон и новую строку:
sed -i '/pattern/c new_line' file.txt
✔️Удаление строк, подпадающих под шаблон, команда d:
sed '/pattern/d' file.txt
✔️Добавление строки после строки, попадающей под шаблон. Команда a:
sed '/pattern/a\New line' file.txt
✔️Выполнение нескольких команд с помощью опции -e :
sed -e 's/foo/bar/' -e '/baz/d' file.txt
✔️Пример замены параметра в конфиге (не важно fs.file-max закомментирован или нет, вам нужно помнить только название параметра):
sed -i '/fs.file-max/c fs.file-max=500000' /etc/sysctl.conf
📌DNS-записи для корректной работы почты
🔴 Записи MX
Указывают серверы, принимающие почту для домена. Например домен example.com обслуживает сервер mail.example.com:
🔴Запись A
Сопоставляет домен почтового сервера с его IP-адресом.
🔴 Записи MX
Указывают серверы, принимающие почту для домена. Например домен example.com обслуживает сервер mail.example.com:
example.com | MX | mail.example.com. 10
🔴Запись A
Сопоставляет домен почтового сервера с его IP-адресом.
mail.example.com | A | 166.36.28.18
🔴 Запись SPF (TXT-запись)
Указывает разрешённые IP-адреса для отправки почты.
👉+a +mx - разрешает отправку писем с адреcов указанных в A-Записи и MX-записях;
👉~all - мягкое ограничение, разрешает отправку писем с других серверов, но они помечаются как ненадёжные;
👉-all - жёсткое ограничение.
🔴 Запись DKIM (TXT-запись)
Открытый ключ сервера. Письма подписываются закрытым ключом, а для проверки подлинности используется открытый ключ указанный в TXT-записи.
🔴Запись DMARC (TXT-запись)
Определяет политику обработки писем, не прошедших SPF/DKIM.
👉p=quarantine - непрошедшие проверку письма попадут в спам, но не будут полностью отклоняться;
👉pct=5 - из всех писем только 5% будут проверяться;
👉rua=mailto:admin@example.com - email, куда будут отправляться отчёты о проверке писем;
🔴PTR-запись (Reverse DNS)
Обратная запись, которая сопоставляет IP почтового сервера с его доменом. Настраивается у вашего интернет-провайдера.
Указывает разрешённые IP-адреса для отправки почты.
example.com | TXT | "v=spf1 +a +mx ~all"
👉+a +mx - разрешает отправку писем с адреcов указанных в A-Записи и MX-записях;
👉~all - мягкое ограничение, разрешает отправку писем с других серверов, но они помечаются как ненадёжные;
👉-all - жёсткое ограничение.
🔴 Запись DKIM (TXT-запись)
Открытый ключ сервера. Письма подписываются закрытым ключом, а для проверки подлинности используется открытый ключ указанный в TXT-записи.
mail._domainkey | TXT | "v=DKIM1;k=rsa;p=<открытый ключ>"
🔴Запись DMARC (TXT-запись)
Определяет политику обработки писем, не прошедших SPF/DKIM.
_dmarc | TXT | "v=DMARC1; p=quarantine; pct=5; rua=mailto:admin@example.com"
👉p=quarantine - непрошедшие проверку письма попадут в спам, но не будут полностью отклоняться;
👉pct=5 - из всех писем только 5% будут проверяться;
👉rua=mailto:admin@example.com - email, куда будут отправляться отчёты о проверке писем;
🔴PTR-запись (Reverse DNS)
Обратная запись, которая сопоставляет IP почтового сервера с его доменом. Настраивается у вашего интернет-провайдера.
👍2
📌Команда gping
Gping - консольная утилита для Linux, которая не просто пингует узел, но и дополнительно рисует график.
👉В последних версиях Debian 13 и Ubuntu 24.04 эта утилита доступна в стандартных репозиториях:
👉А для установки gping на более старые версии Debian и Ubuntu нужно будет использовать репозиторий azlux.fr:
👉Пример использования:
-n 2 - обновление графика раз в 2 секунды, а по умолчанию 0.5.
Gping - консольная утилита для Linux, которая не просто пингует узел, но и дополнительно рисует график.
👉В последних версиях Debian 13 и Ubuntu 24.04 эта утилита доступна в стандартных репозиториях:
apt install gping
👉А для установки gping на более старые версии Debian и Ubuntu нужно будет использовать репозиторий azlux.fr:
echo 'deb [signed-by=/usr/share/keyrings/azlux.gpg] https://packages.azlux.fr/debian/ bookworm main' | sudo tee /etc/apt/sources.list.d/azlux.list
sudo apt install gpg
curl -s https://azlux.fr/repo.gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/azlux.gpg > /dev/null
sudo apt update
sudo apt install gping
👉Пример использования:
gping -n 2 sysadminium.ru
-n 2 - обновление графика раз в 2 секунды, а по умолчанию 0.5.
👍2
📌fping - консольная утилита для Linux, которая предназначена для массовой проверки доступности хостов.
Устанавливается из стандартных репозиториев:
Основные опции fping:
✔️Проверка нескольких хостов:
✔️Проверка подсети:
- дополнительные опции уберут недоступные хосты из вывода
Устанавливается из стандартных репозиториев:
sudo apt install fping
Основные опции fping:
-a — показать только доступные хосты-u — показать только недоступные хосты-g <IP/подсеть> — пинговать диапазон IP (например, fping -g 192.168.1.1 192.168.1.10)-s — вывести статистику в конце-c N — отправить N запросов к каждому хосту (аналог ping -c)-q — тихий режим (только итоговый результат)-f <файл> — читать цели из файла✔️Проверка нескольких хостов:
fping ya.ru sysadminium.ru
✔️Проверка подсети:
$ fping -a -g 192.168.0.0/24 2>/dev/null
- дополнительные опции уберут недоступные хосты из вывода
👍4
✅Единое дерево каталогов (стандарт FHS)
https://sysadminium.ru/adm_serv_linux-single_directory_tree/
https://sysadminium.ru/adm_serv_linux-single_directory_tree/
Sysadminium
Единое дерево каталогов (стандарт FHS) - Sysadminium
В статье разберём "Единое дерево каталогов" в Linux и стандарт "File Hierarchy Standard" к которому должны стремиться все дистрибутивы Linux