🔥28😁7👍4❤1
grep в Linux как инструмент для администрирования
Примеры использования.
📲 Мы в MAX
👉 @sysadminof
grep — утилита командной строки, используется для поиска и фильтрации текста в файлах, на основе шаблона, который (шаблон) может быть регулярным выражением.Примеры использования.
grep iodmingrep iodmin file.txt поиск iodmin в файле file.txt, с выводом полностью совпавшей строкойgrep -o iodmin file.txt поиск iodmin в файле file.txt и вывод только совпавшего куска строкиgrep -i iodmin file.txt игнорирование регистра при поискеgrep -bn iodmin file.txt показать строку (-n) и столбец (-b), где был найден iodmingrep -v iodmin file.txt инверсия поиска (найдет все строки, которые не совпадают с шаблоном iodmin)grep -A 3 iodmin file.txt вывод дополнительных трех строк, после совпавшейgrep -B 3 iodmin file.txt вывод дополнительных трех строк, перед совпавшейgrep -C 3 iodmin file.txt вывод три дополнительные строки перед и после совпавшейgrep -r iodmin $HOME рекурсивный поиск по директории $HOME и всем вложеннымgrep -c iodmin file.txt подсчет совпаденийgrep -L iodmin *.txt вывести список txt-файлов, которые не содержат iodmingrep -l iodmin *.txt вывести список txt-файлов, которые содержат iodmingrep -w iodmin file.txt совпадение только с полным словом iodmingrep -f iodmins.txt file.txt поиск по нескольким iodmin из файла iodmins.txt, шаблоны разделяются новой строкойgrep -I iodmin file.txt игнорирование бинарных файловgrep -v -f file2 file1 > file3 вывод строк, которые есть в file1 и нет в file2grep -in -e 'python' `find -type f` рекурсивный поиск файлов, содержащих слово python с выводом номера строки и совпаденийgrep -inc -e 'test' find -type f | grep -v :0 рекурсивный поиск файлов, содержащих слово python с выводом количества совпаденийgrep . *.py вывод содержимого всех py-файлов, предваряя каждую строку именем файлаgrep "Http404" apps/**/*.py рекурсивный поиск упоминаний Http404 в директории apps в py-файлах📲 Мы в MAX
👉 @sysadminof
❤7👍5🔥1👌1
This media is not supported in your browser
VIEW IN TELEGRAM
Msldap : LDAP библиотека для аудита MS AD
Функции
Поставляется со встроенным консольным LDAP-клиентом.
Всеми параметрами можно управлять через удобный URL
Поддерживает встроенную проверку подлинности Windows (SSPI) как с NTLM, так и с KERBEROS
Поддерживает привязку каналов (для ntlm и kerberos, кроме SSPI)
Поддерживает шифрование (NTLM/KERBEROS/SSPI)
Поддерживает LDAPS (TODO: фактически проверить сертификат)
Поддерживает прокси SOCKS5
Легковесный
Множество готовых запросов для удобного опроса информации
Легко интегрировать в ваш проект
Установка
через git
или
https://github.com/skelsec/msldap
📲 Мы в MAX
👉 @sysadminof
Функции
Поставляется со встроенным консольным LDAP-клиентом.
Всеми параметрами можно управлять через удобный URL
Поддерживает встроенную проверку подлинности Windows (SSPI) как с NTLM, так и с KERBEROS
Поддерживает привязку каналов (для ntlm и kerberos, кроме SSPI)
Поддерживает шифрование (NTLM/KERBEROS/SSPI)
Поддерживает LDAPS (TODO: фактически проверить сертификат)
Поддерживает прокси SOCKS5
Легковесный
Множество готовых запросов для удобного опроса информации
Легко интегрировать в ваш проект
Установка
через git
python3 setup.py installили
pip install msldaphttps://github.com/skelsec/msldap
📲 Мы в MAX
👉 @sysadminof
❤3👍2
🛠 Навигация в Linux как Pro: Мини-гайд по командам
1. Быстрое перемещение:
🩵
🩵
🩵
2. Осмотр местности:
🩵
🩵
3. Анализ места (актуально для /
🩵
🩵
🩵
4. Поиск «потеряшек»:
🩵
🩵
🩵
5. Просмотр содержимого без открытия редактора:
🩵
🩵
💡 Админский совет: Используйте
#LinuxCommands #Bash #Terminal #SysadminTips #Шпаргалка
📲 Мы в MAX
👉 @sysadminof
1. Быстрое перемещение:
cd - - вернуться в предыдущую директорию (аналог «назад»).cd ~ или просто cd - мгновенно прыгнуть в домашний каталог.pwd - когда потерялся в дебрях /var/lib/docker/overlay2/... и не понимаешь, где ты.2. Осмотр местности:
ls -lah - классика. Показывает скрытые файлы, размеры в человекочитаемом виде (Мб, Гб) и права доступа.tree -L 2 - рисует дерево папок (глубиной в 2 уровня). Очень удобно, чтобы быстро понять структуру нового проекта.3. Анализ места (актуально для /
var и /home):df -h - общая картина по дискам.du -sh * | sort -h - «кто съел место?». Показывает размер каждой папки в текущей директории и сортирует их по весу.ncdu - (если установлена) интерактивный визуализатор занятого места. Must-have для админа.4. Поиск «потеряшек»:
find /etc -name "*.conf" - найти все конфиги в нужной папке.locate filename - мгновенный поиск по базе данных (быстрее, чем find, но нужно делать updatedb).which <command> - показывает полный путь к исполняемому файлу команды (например, which python).5. Просмотр содержимого без открытия редактора:
cat / less - почитать файл.tail -f /var/log/syslog - смотреть за логами в реальном времени.💡 Админский совет: Используйте
alias в своем .bashrc, чтобы не вбивать длинные цепочки флагов. Например: alias ll='ls -lah'.#LinuxCommands #Bash #Terminal #SysadminTips #Шпаргалка
📲 Мы в MAX
👉 @sysadminof
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤5
Основы компьютерных сетей
Тема №1. Основные сетевые термины и сетевые модели
Тема №2. Протоколы верхнего уровня
Тема №3. Протоколы нижних уровней (транспортного, сетевого и канального)
Тема №4. Сетевые устройства и виды применяемых кабелей
Тема №5. Понятие IP адресации, масок подсетей и их расчет
Тема №6. Понятие VLAN, Trunk и протоколы VTP и DTP
Тема №7. Протокол связующего дерева: STP
Тема №8. Протокол агрегирования каналов: Etherchannel
Тема №9. Маршрутизация: статическая и динамическая на примере RIP, OSPF и EIGRP
📲 Мы в MAX
👉 @sysadminof
Тема №1. Основные сетевые термины и сетевые модели
Тема №2. Протоколы верхнего уровня
Тема №3. Протоколы нижних уровней (транспортного, сетевого и канального)
Тема №4. Сетевые устройства и виды применяемых кабелей
Тема №5. Понятие IP адресации, масок подсетей и их расчет
Тема №6. Понятие VLAN, Trunk и протоколы VTP и DTP
Тема №7. Протокол связующего дерева: STP
Тема №8. Протокол агрегирования каналов: Etherchannel
Тема №9. Маршрутизация: статическая и динамическая на примере RIP, OSPF и EIGRP
📲 Мы в MAX
👉 @sysadminof
👍10🔥6❤2
🏎 Разгоняем KVM: Тюнинг производительности
«Из коробки» KVM предлагает безопасные и совместимые настройки, но они - враг высокой производительности. Если ваша БД тормозит или сеть не выдает гигабит, скорее всего, проблема не в железе, а в том, как виртуалка с ним общается.
Вот «святая троица» настроек для High Performance.
1. VirtIO: Забудьте про эмуляцию
По умолчанию гипервизор может подсовывать машине эмулируемую сетевую карту (например, e1000) или IDE-диск. Это создает огромный оверхед: CPU тратит такты на то, чтобы притворяться старым железом.
Решение: Используйте паравиртуализированные драйверы VirtIO. Они позволяют гостевой ОС знать, что она виртуальная, и общаться с гипервизором напрямую.
🩵 Диски: Используйте шину
🩵 Сеть: Модель адаптера
Как проверить в XML (
2. Дисковый кэш и I/O
Если вы используете LVM или raw-файлы, стандартный кэш Linux может создавать лишние копии данных в RAM.
Решение:
1. Cache mode: Ставим
2. IO mode: Ставим
3. CPU Pinning (Привязка ядер)
Самый мощный буст для процессорозависимых задач.
По умолчанию планировщик Linux перекидывает потоки vCPU виртуалки между любыми физическими ядрами хоста. Это убивает L1/L2/L3 кэш процессора (Context Switching).
Решение: Жестко привязать виртуальные ядра к физическим.
Пример для 4-ядерной VM (привязываем к ядрам 2,3,4,5 физического хоста):
🚀 Чек-лист для максимальной скорости:
1. Драйверы: Только VirtIO (net + blk).
2. Диски: Формат RAW (или LVM volume), кэш
3. CPU: Pinning + режим
4. Память: Если у вас сотни Гб RAM, включите Hugepages (страницы по 2Mb или 1Gb вместо 4Kb), чтобы разгрузить таблицу страниц памяти.
А вы заморачиваетесь с тюнингом или для ваших задач хватает дефолтных настроек? Делитесь опытом в комментах!
#sysadmin #kvm #performance #tuning #linux #virtio
📲 Мы в MAX
👉 @sysadminof
«Из коробки» KVM предлагает безопасные и совместимые настройки, но они - враг высокой производительности. Если ваша БД тормозит или сеть не выдает гигабит, скорее всего, проблема не в железе, а в том, как виртуалка с ним общается.
Вот «святая троица» настроек для High Performance.
1. VirtIO: Забудьте про эмуляцию
По умолчанию гипервизор может подсовывать машине эмулируемую сетевую карту (например, e1000) или IDE-диск. Это создает огромный оверхед: CPU тратит такты на то, чтобы притворяться старым железом.
Решение: Используйте паравиртуализированные драйверы VirtIO. Они позволяют гостевой ОС знать, что она виртуальная, и общаться с гипервизором напрямую.
VirtIO (или VirtIO-SCSI).virtio.Как проверить в XML (
virsh edit):
<target dev='vda' bus='virtio'/>
<model type='virtio'/>
Важно: Для Windows-гостей понадобятся драйверы virtio-win.iso.2. Дисковый кэш и I/O
Если вы используете LVM или raw-файлы, стандартный кэш Linux может создавать лишние копии данных в RAM.
Решение:
1. Cache mode: Ставим
none. Это отключает кэширование на хосте (Direct I/O). VM сама управляет своим кэшем, что быстрее и безопаснее для баз данных.2. IO mode: Ставим
native. Использует нативный Linux AIO (Asynchronous I/O).
<driver name='qemu' type='raw' cache='none' io='native'/>
3. CPU Pinning (Привязка ядер)
Самый мощный буст для процессорозависимых задач.
По умолчанию планировщик Linux перекидывает потоки vCPU виртуалки между любыми физическими ядрами хоста. Это убивает L1/L2/L3 кэш процессора (Context Switching).
Решение: Жестко привязать виртуальные ядра к физическим.
Пример для 4-ядерной VM (привязываем к ядрам 2,3,4,5 физического хоста):
<cputune>
<vcpupin vcpu='0' cpuset='2'/>
<vcpupin vcpu='1' cpuset='3'/>
<vcpupin vcpu='2' cpuset='4'/>
<vcpupin vcpu='3' cpuset='5'/>
</cputune>
Pro Tip: Не используйте "ядро 0" хоста — оставьте его для самого гипервизора и системных прерываний.
🚀 Чек-лист для максимальной скорости:
1. Драйверы: Только VirtIO (net + blk).
2. Диски: Формат RAW (или LVM volume), кэш
none.3. CPU: Pinning + режим
host-passthrough (чтобы VM видела все инструкции процессора, включая AES-NI и AVX).4. Память: Если у вас сотни Гб RAM, включите Hugepages (страницы по 2Mb или 1Gb вместо 4Kb), чтобы разгрузить таблицу страниц памяти.
А вы заморачиваетесь с тюнингом или для ваших задач хватает дефолтных настроек? Делитесь опытом в комментах!
#sysadmin #kvm #performance #tuning #linux #virtio
📲 Мы в MAX
👉 @sysadminof
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤3
🏗 KVM + Terraform: Поднимаем виртуалки как код
Мы научились управлять KVM через
На сцену выходит Terraform. Обычно его ассоциируют с облаками (AWS, Azure), но он прекрасно работает и с «железным» гипервизором через провайдер
🛠 Что нам понадобится?
1. Установленный Terraform.
2. Плагин-провайдер
3. Образ системы (Cloud Image), например, Ubuntu Cloud.
📄 Пишем рецепт (
Создайте папку, положите туда файл
🚀 Запускаем магию
В терминале переходим в папку с файлом и выполняем три команды:
1.
2.
3.
🤔 А как удалить?
Не нужно вспоминать имена машин и удалять диски вручную. Просто введите:
И Terraform аккуратно зачистит за собой всё, что создал.
💡 Почему это круто?
🩵 Воспроизводимость: Вы можете отправить этот файл коллеге, и он поднимет точно такую же среду.
🩵 Git: Вы храните конфигурацию инфраструктуры в репозитории. Видна история изменений.
🩵 Cloud-Init: В Terraform можно добавить конфигурацию
👇 Коллеги, какой инструмент IaC вы предпочитаете? Terraform, Ansible или, может быть, Pulumi?
#sysadmin #devops #terraform #kvm #iac #automation
📲 Мы в MAX
👉 @sysadminof
Мы научились управлять KVM через
virsh, но если вам нужно поднять 10 одинаковых серверов для тестов, а потом удалить их одной командой - ручной ввод утомляет.На сцену выходит Terraform. Обычно его ассоциируют с облаками (AWS, Azure), но он прекрасно работает и с «железным» гипервизором через провайдер
libvirt.🛠 Что нам понадобится?
1. Установленный Terraform.
2. Плагин-провайдер
dmacvicar/libvirt (стандарт де-факто для KVM).3. Образ системы (Cloud Image), например, Ubuntu Cloud.
📄 Пишем рецепт (
main.tf)Создайте папку, положите туда файл
main.tf и опишите желаемое состояние:
terraform {
required_providers {
libvirt = {
source = "dmacvicar/libvirt"
}
}
}
# 1. Подключаемся к локальному KVM
provider "libvirt" {
uri = "qemu:///system"
}
# 2. Скачиваем образ диска (или берем локальный)
resource "libvirt_volume" "ubuntu_base" {
name = "ubuntu-base.qcow2"
pool = "default"
# Ссылка на официальный Cloud-образ
source = "https://cloud-images.ubuntu.com/minimal/releases/jammy/release/ubuntu-22.04-minimal-cloudimg-amd64.img"
format = "qcow2"
}
# 3. Описываем Виртуальную Машину
resource "libvirt_domain" "my_web_server" {
name = "terraform-vm-01"
memory = "1024"
vcpu = 1
network_interface {
network_name = "default" # NAT сеть libvirt
}
disk {
volume_id = libvirt_volume.ubuntu_base.id
}
console {
type = "pty"
target_port = "0"
target_type = "serial"
}
graphics {
type = "spice"
listen_type = "address"
autoport = true
}
}
🚀 Запускаем магию
В терминале переходим в папку с файлом и выполняем три команды:
1.
terraform init - Скачает провайдер libvirt.2.
terraform plan - Покажет, что именно он собирается создать (DRY RUN).3.
terraform apply - Boom! Скачивается образ, создается диск, запускается VM.🤔 А как удалить?
Не нужно вспоминать имена машин и удалять диски вручную. Просто введите:
terraform destroyИ Terraform аккуратно зачистит за собой всё, что создал.
💡 Почему это круто?
cloud-init (создать пользователя, добавить SSH-ключ, установить пакеты при первом старте), чтобы получить полностью готовый сервер, в который даже не нужно заходить.👇 Коллеги, какой инструмент IaC вы предпочитаете? Terraform, Ansible или, может быть, Pulumi?
#sysadmin #devops #terraform #kvm #iac #automation
📲 Мы в MAX
👉 @sysadminof
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
👍7🔥2❤1
Media is too big
VIEW IN TELEGRAM
Файловые системы в линуксе | сравнительный тест файловых систем linux ext4 xfs f2fs btrfs zfs
📲 Мы в MAX
👉 @sysadminof
📲 Мы в MAX
👉 @sysadminof
👍7
Media is too big
VIEW IN TELEGRAM
Как стать DevOps Инженером с Нуля, что учить и в каком порядке
00:00 – 1. Вступление
01:06 – 2. Всевозможные компетенции DevOps инженера
10:35 – 3. Кому проще стать DevOps
15:01 – 4. Что учить по минимуму и в каком порядке
30:04 – 4.1. Основы Network TCP/IP
31:36 – 4.2. Администрирование Windows
34:09 – 4.3. Основы Linux
35:54 – 4.4. Ansible
36:48 – 4.5. Git
37:37 – 4.6. GitHub
38:04 – 4.7. Jenkins
38:23 – 4.8. Docker+DockerHub
38:44 – 4.9. Cloud Platform AWS
42:10 – 4.10. CloudFormation + Terraform
43:25 – 5. Курс DevOps Engineering в JohnBryce, Израиль
49:12 – 6. Как стать профессиональным DevOps инженером
54:24 – 7. Эпилог
источник
📲 Мы в MAX
👉 @sysadminof
00:00 – 1. Вступление
01:06 – 2. Всевозможные компетенции DevOps инженера
10:35 – 3. Кому проще стать DevOps
15:01 – 4. Что учить по минимуму и в каком порядке
30:04 – 4.1. Основы Network TCP/IP
31:36 – 4.2. Администрирование Windows
34:09 – 4.3. Основы Linux
35:54 – 4.4. Ansible
36:48 – 4.5. Git
37:37 – 4.6. GitHub
38:04 – 4.7. Jenkins
38:23 – 4.8. Docker+DockerHub
38:44 – 4.9. Cloud Platform AWS
42:10 – 4.10. CloudFormation + Terraform
43:25 – 5. Курс DevOps Engineering в JohnBryce, Израиль
49:12 – 6. Как стать профессиональным DevOps инженером
54:24 – 7. Эпилог
источник
📲 Мы в MAX
👉 @sysadminof
🔥7👍3
Совет дня по Linux 💡
Чтобы команда не регистрировалась в истории bash, введите ее с пробелом перед ней.
📲 Мы в MAX
👉 @sysadminof
Чтобы команда не регистрировалась в истории bash, введите ее с пробелом перед ней.
📲 Мы в MAX
👉 @sysadminof
👍18🔥2
Media is too big
VIEW IN TELEGRAM
Инструменты мониторинга трафика в Mikrotik
Первый способ:
Использование инструмента Torch в разделе Queue для реального времени анализа трафика через интерфейс Bridge, что помогает выявить потребление трафика на конкретных сайтах.
Второй способ:
Отслеживание активных соединений в разделе IP Firewall Connections с возможностью сортировки по IP-адресам, портам и количеству переданных данных, а также использование командной строки для детального анализа и настройки QoS.
Эти методы помогают эффективно контролировать и управлять сетевым трафиком.
источник
📲 Мы в MAX
👉 @sysadminof
Первый способ:
Использование инструмента Torch в разделе Queue для реального времени анализа трафика через интерфейс Bridge, что помогает выявить потребление трафика на конкретных сайтах.
Второй способ:
Отслеживание активных соединений в разделе IP Firewall Connections с возможностью сортировки по IP-адресам, портам и количеству переданных данных, а также использование командной строки для детального анализа и настройки QoS.
Эти методы помогают эффективно контролировать и управлять сетевым трафиком.
источник
📲 Мы в MAX
👉 @sysadminof
👍4🔥3❤2
Краткая шпаргалка по использованию tmux
Список доступных сессий можно посмотреть командой:
Подключение к сессии:
Сессиям можно давать осмысленные имена и запускать в них фоновые задачи:
# создать фоновую сессию
# подсоединиться к сессии
# прибить сессию
Это иногда бывает удобно в каких-нибудь скриптах. Характерно, что в screen подобный функционал тоже заявлен, но последний раз, когда я проверял, он был сломан.
Интересно также, что в отличие от screen, в tmux нет возможности работать с последовательными портами. Но если вы решите полностью переходить на tmux, то для этой задачи можете воспользоваться утилитой cu:
📲 Мы в MAX
👉 @sysadminof
Ctr+B, ? Показать все доступные хоткеиCtr+B, C Создать окноCtr+B, N Следующее окноCtr+B, P Предыдущее окноCtr+B, [0-9] Перейти к окну с данным номеромCtr+B, X Закрыть окноCtr+B, % Горизонтальное разделениеCtr+B, " Вертикальное разделениеCtr+B, стрелочки Переход между разделениямиCtr+B, запятая Переименовать окноCtr+B, W Список всех окон с переключениемCtr+B, Fn+вверх Скролинг, можно использовать точпадCtr+B, $ Переименовать текущую сессиюCtr+B, D Detach, отсоединиться от сессииСписок доступных сессий можно посмотреть командой:
tmux lsПодключение к сессии:
tmux attach -t 0Сессиям можно давать осмысленные имена и запускать в них фоновые задачи:
# создать фоновую сессию
tmux new-session -d -s background-task 'watch date'# подсоединиться к сессии
tmux attach -t background-task# прибить сессию
tmux kill-session -t background-taskЭто иногда бывает удобно в каких-нибудь скриптах. Характерно, что в screen подобный функционал тоже заявлен, но последний раз, когда я проверял, он был сломан.
Интересно также, что в отличие от screen, в tmux нет возможности работать с последовательными портами. Но если вы решите полностью переходить на tmux, то для этой задачи можете воспользоваться утилитой cu:
cu -l /dev/tty.usbserial -s 115200📲 Мы в MAX
👉 @sysadminof
👍9
Media is too big
VIEW IN TELEGRAM
RAID массивы. Уровни 0 1 5 6 10. Что такое RAID и как он работает
00:00 Вступление
00:46 RAID 0
02:42 RAID 1
04:40 RAID 5
07:59 RAID 6
09:25 RAID 10
11:32 Сравнение уровней RAID
источник
📲 Мы в MAX
👉 @sysadminof
00:00 Вступление
00:46 RAID 0
02:42 RAID 1
04:40 RAID 5
07:59 RAID 6
09:25 RAID 10
11:32 Сравнение уровней RAID
источник
📲 Мы в MAX
👉 @sysadminof
👍10🔥7
Шпаргалка по часто используемым командам systemctl
1. Посмотреть статус службы. Покажет статус службы на примере сети network
2. Запустить сервис. Запустит сервис баз данных на примере mysql
3. Остановить службу. Остановит сервис времени ntpd
4. Перезапустить службу. Перезапустит веб-сервер nginx
5. Включить автозапуск службы. Разрешит автозапуск веб-сервера apache
6. Отключить автозапуск службы. Запретит автозапуск брандмауэра firewalld
7. Выполнить команду на удаленной системе. Остановит cron на компьютере с IP-адресом 192.168.0.15, подключившись под учетной записью root
8. Перезагрузить сервер. Перезагрузит локальный сервер
9. Проверка работы сервиса. Выполняется с помощью опции is-active. В данном примере мы проверим работу службы docker.
а) Если сервис запущен, мы увидим:
active
б) Если не запущен:
failed
... или:
inactive
в) Если такого сервиса нет в системе:
unknown
... или:
inactive
Если сервис не работает или его нет в системе, команда вернет код ошибки, таким образом конструкция:
... приведет к выполнению команды docker run hello-world только в том случае, если сервис docker работает.
📲 Мы в MAX
👉 @sysadminof
1. Посмотреть статус службы. Покажет статус службы на примере сети network
systemctl status network2. Запустить сервис. Запустит сервис баз данных на примере mysql
systemctl start mysql3. Остановить службу. Остановит сервис времени ntpd
systemctl stop ntpd4. Перезапустить службу. Перезапустит веб-сервер nginx
systemctl restart nginx5. Включить автозапуск службы. Разрешит автозапуск веб-сервера apache
systemctl enable apache6. Отключить автозапуск службы. Запретит автозапуск брандмауэра firewalld
systemctl disable firewalld7. Выполнить команду на удаленной системе. Остановит cron на компьютере с IP-адресом 192.168.0.15, подключившись под учетной записью root
systemctl --host root@192.168.0.15 stop cron8. Перезагрузить сервер. Перезагрузит локальный сервер
systemctl reboot9. Проверка работы сервиса. Выполняется с помощью опции is-active. В данном примере мы проверим работу службы docker.
systemctl is-active dockerа) Если сервис запущен, мы увидим:
active
б) Если не запущен:
failed
... или:
inactive
в) Если такого сервиса нет в системе:
unknown
... или:
inactive
Если сервис не работает или его нет в системе, команда вернет код ошибки, таким образом конструкция:
systemctl is-active docker && docker run hello-world... приведет к выполнению команды docker run hello-world только в том случае, если сервис docker работает.
📲 Мы в MAX
👉 @sysadminof
❤5👍4