Ответ
Базовые команды для определения загруженного ядра:
# Основная информация о ядре
uname -r
# Пример вывода: 5.15.0-91-generic
# Полная информация
uname -a
# Вывод: Linux hostname 5.15.0-91-generic #102-Ubuntu SMP Fri Nov 10 16:16:02 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
# Только версия сборки
uname -v
# Вывод: #102-Ubuntu SMP Fri Nov 10 16:16:02 UTC 2023
Дополнительные методы для DevOps:
# Через виртуальную файловую систему
cat /proc/version
# Проверить, какое ядро использовалось при загрузке
cat /proc/cmdline | grep -o "BOOT_IMAGE=[^ ]*"
# Список всех установленных ядер
ls -la /boot/vmlinuz-*
dpkg -l | grep linux-image # для Debian/Ubuntu
rpm -qa kernel* # для RHEL/CentOS
Практическое применение в DevOps:
-
Проверка обновлений безопасности:
# Сравнить текущее ядро с последними обновлениями current=$(uname -r) latest=$(ls -t /boot/vmlinuz-* | head -1 | sed 's|/boot/vmlinuz-||') if [ "$current" != "$latest" ]; then echo "Требуется перезагрузка для применения ядра $latest" fi -
Аудит уязвимостей:
# Проверка на наличие известных уязвимостей uname -r | grep -E "4.19.|5.4." && echo "Проверить CVE-2023-XXX" -
Автоматизация в скриптах развертывания:
#!/bin/bash KERNEL_REQUIRED="5.15" CURRENT_KERNEL=$(uname -r | cut -d. -f1,2)
if [[ "$(printf '%sn' "$KERNEL_REQUIRED" "$CURRENT_KERNEL" | sort -V | head -1)" != "$KERNEL_REQUIRED" ]]; then echo "Ошибка: требуется ядро $KERNEL_REQUIRED или новее, текущее: $CURRENT_KERNEL" exit 1 fi
4. **Для контейнерных сред:**
```bash
# Ядро хоста используется всеми контейнерами
docker run --rm alpine uname -r
# Вывод будет таким же, как на хосте