Ответ
Комплексный подход для сбора информации об ОС в DevOps-практике:
1. Основные команды для идентификации дистрибутива
# Стандартный метод (работает на большинстве систем)
cat /etc/os-release
# Альтернатива с красивым выводом
lsb_release -a
# Для старых систем
cat /etc/issue
cat /etc/*release
cat /etc/*version
2. Полный сбор информации (скрипт для инвентаризации)
#!/bin/bash
echo "=== System Information ==="
# Дистрибутив и версия
if [ -f /etc/os-release ]; then
. /etc/os-release
echo "Distribution: $NAME"
echo "Version: $VERSION"
echo "ID: $ID"
echo "ID_LIKE: $ID_LIKE"
fi
# Ядро
echo "Kernel: $(uname -r)"
echo "Architecture: $(uname -m)"
# Информация о сборке
if command -v hostnamectl &> /dev/null; then
hostnamectl
fi
# Время работы системы
uptime -p
3. DevOps-ориентированные методы
Для автоматизации и мониторинга:
# JSON-вывод для парсинга в скриптах
cat /etc/os-release | grep -E '^(NAME|VERSION|ID)=' |
awk -F= '{print """$1"": ""$2"""}' |
tr 'n' ',' | sed 's/,$/n/' |
awk '{print "{" $0 "}"}' | jq .
# Сбор метрик для Prometheus
echo "node_os_info{id="$(cat /etc/os-release | grep ^ID= | cut -d= -f2 | tr -d '"')",
version="$(cat /etc/os-release | grep ^VERSION_ID= | cut -d= -f2 | tr -d '"')"} 1"
4. Глубокий анализ системы
# Информация о менеджере пакетов
which apt && echo "Package manager: APT"
which yum && echo "Package manager: YUM"
which dnf && echo "Package manager: DNF"
which apk && echo "Package manager: APK"
# Версия systemd (если используется)
systemctl --version | head -1
# Информация о загрузчике
[[ -f /boot/grub/grub.cfg ]] && echo "Bootloader: GRUB2"
[[ -f /boot/efi/EFI/redhat/grub.cfg ]] && echo "Bootloader: GRUB2 (UEFI)"
# Проверка виртуализации
if systemd-detect-virt; then
echo "Virtualization: $(systemd-detect-virt)"
elif [[ -f /proc/cpuinfo ]] && grep -q hypervisor /proc/cpuinfo; then
echo "Virtualization: Detected (likely KVM/Xen/VMware)"
fi
5. Практическое применение:
- Инфраструктура как код: определение дистрибутива для conditional execution в Ansible
- Сборка пакетов: выбор правильных зависимостей в CI/CD пайплайнах
- Мониторинг: отслеживание версий ОС для своевременного обновления безопасности
- Миграция: проверка совместимости при переносе приложений между дистрибутивами