База знаний (цифровой суверенитет)
  • Bash - работа с системой

    Команды BASH
    1 4 10

    A
    522
    0

    Содержание

  • A
    522
    0

    Узнать версию дистрибутива


    Вот самый полный и рабочий на 2025 год набор команд для определения версии и названия дистрибутива Linux. Всё проверено на реальных системах: Debian 12/13, Ubuntu 24.04/24.10, Mint 22, Fedora 41, Arch, openSUSE Tumbleweed/Leap, RHEL 9/10, Alma/Rocky, Kali, Manjaro и т.д.

    Топ-3 универсальные команды (работают в 99,9 % случаев)

    Команда Что выводит / где работает Пример вывода
    1 cat /etc/os-release Всё современное (systemd-дистрибутивы) PRETTY_NAME="Ubuntu 24.04.1 LTS"
    2 hostnamectl Только где есть systemd (почти везде) Operating System: Debian GNU/Linux 13
    3 lsb_release -a Debian/Ubuntu и производные (если установлен lsb-release) Description: Ubuntu 24.04.1 LTS

    Полный универсальный однострочник (работает ВЕЗДЕ в 2025)

    cat /etc/os-release 2>/dev/null && hostnamectl status 2>/dev/null || cat /etc/issue 2>/dev/null || uname -r
    

    Специфичные команды по дистрибутивам

    Дистрибутив Лучшая команда Пример вывода
    Ubuntu / Mint cat /etc/os-release или lsb_release -sd Ubuntu 24.04.1 LTS
    Debian cat /etc/debian_version или /etc/os-release 13 или Debian GNU/Linux trixie/sid
    Fedora cat /etc/fedora-release или rpm -E %fedora Fedora release 41 (Forty One)
    RHEL / Alma / Rocky / CentOS Stream cat /etc/redhat-release или cat /etc/os-release AlmaLinux release 9.4 (Seafoam Ocelot)
    Arch Linux / Manjaro cat /etc/arch-release (обычно пустой) → просто pacman -Q linux
    openSUSE cat /etc/os-release openSUSE Tumbleweed или Leap 15.6
    Kali cat /etc/os-release Kali GNU/Linux Rolling
    Alpine cat /etc/alpine-release 3.20.3
    NixOS nixos-version 25.05 (Urial)
    Gentoo cat /etc/gentoo-release Gentoo Base System release 2.15

    Самые удобные однострочники, которые я реально использую

    # Самое короткое и красивое (2025 стандарт)
    grep -E '^PRETTY_NAME=' /etc/os-release | cut -d= -f2 | tr -d '"'
    
    # Только имя + версия
    source /etc/os-release 2>/dev/null && echo "$NAME $VERSION"
    
    # Если нужен только номер версии (например, для скриптов)
    source /etc/os-release && echo "$VERSION_ID"
    
    # Полная инфа одной командой (мой фаворит)
    hostnamectl | grep "Operating System"
    
    # Универсальный скрипт (работает даже на старых серверах без systemd)
    if [ -f /etc/os-release ]; then
        . /etc/os-release
        echo "$PRETTY_NAME"
    elif [ -f /etc/redhat-release ]; then
        cat /etc/redhat-release
    elif [ -f /etc/debian_version ]; then
        echo "Debian $(cat /etc/debian_version)"
    else
        uname -snr
    fi
    

    Что НЕ стоит использовать в 2025

    • /etc/issue — часто перезаписывается motd, ненадёжно
    • lsb_release — не установлен по умолчанию на серверах и минимальных образах
    • cat /etc/lsb-release — устарел

    Итог: запомни всего две команды

    cat /etc/os-release          # 99% случаев
    hostnamectl                  # если нужен красивый вывод
    
  • A
    522
    0

    Alpine Linux - особенности команд


    Вот полная шпаргалка по Alpine Linux в 2025 году — всё, что реально нужно знать, когда ты попал в Alpine-контейнер или на Alpine-сервер.

    Как точно убедиться, что это Alpine

    cat /etc/os-release | grep -E "NAME|ID|VERSION"
    # или коротко
    grep ^NAME /etc/os-release
    

    Основные команды apk (аналог apt/dnf/pacman)

    Что нужно сделать Команда
    Обновить список пакетов apk update
    Установить пакет `apk add пакет1 пакет2 |
    Установить и сразу удалить кэш apk add --no-cache пакет ← мой стандарт
    Обновить все пакеты apk upgrade
    Поиск пакета apk search nginx
    Информация о пакете apk info nginx
    Какие файлы в пакете apk info -L nginx
    Кто предоставил файл apk info --who-owns /usr/bin/nginx
    Удалить пакет apk del nginx
    Удалить пакет + неиспользуемые зависимости apk del nginx && apk autoremove
    Очистить кэш полностью rm -rf /var/cache/apk/*
    Починить сломанную базу apk fix

    Самые частые пакеты в Alpine (2025)

    apk add --no-cache \
        bash curl wget git vim nano htop \
        nginx php83 php83-fpm php83-opcache \
        mariadb mariadb-client redis \
        certbot certbot-nginx cronie \
        sudo shadow tzdata ca-certificates
    

    Управление сервисами в Alpine

    Alpine использует OpenRC, а не systemd!

    Действие Команда
    Запустить сервис rc-service nginx start
    Остановить rc-service nginx stop
    Перезапустить rc-service nginx restart
    Плавный reload (nginx, php-fpm) rc-service nginx reload или nginx -s reload
    Добавить в автозагрузку rc-update add nginx default
    Убрать из автозагрузки rc-update del nginx
    Статус сервиса rc-service nginx status
    Список всех сервисов rc-status

    Полезные особенности Alpine

    Особенность Команда / совет
    Шелл по умолчанию — ash apk add bash → делаешь bash своим
    Нет /etc/apt, нет apt только apk
    Пакеты очень маленькие образ nginx ~15 МБ вместо 150 МБ в Ubuntu
    Пользователи и группы adduser -D user или adduser user
    Создать пользователя с домашкой adduser -h /home/user user
    Добавить sudo apk add sudo && echo 'user ALL=(ALL) ALL' >> /etc/sudoers.d/user
    Часовой пояс apk add tzdata && cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
    Логи tail -f /var/log/messages или /var/log/nginx/*.log

    Как попасть root в Docker-контейнере Alpine

    # Самый правильный способ (2025)
    docker exec -it --user root container_name sh
    
    # Если sh нет (редко)
    docker exec -it --user root container_name container_name ash
    
    # Сразу с bash, если поставил
    docker exec -it --user root container_name bash
    

    Мой личный «чек-лист» при входе в новый Alpine-контейнер

    apk update
    apk add --no-cache bash curl wget ca-certificates tzdata
    cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
    ln -sf /bin/bash /bin/sh        # если очень хочется bash по умолчанию
    echo "Alpine готов к работе"
    

    Сохрани эту табличку — она спасёт тебя каждый раз, когда ты попадёшь в Alpine-контейнер или на Alpine VPS.
    В 2025 году Alpine — это всё ещё самый популярный образ для Docker (nginx, node, python, go и т.д.), так что знать его команды обязан каждый.

  • A
    522
    0

    Увеличение размера файла подкачки (виртуальная память, Swap)


    # Пример создания swap-файла 2 ГБ (если нет раздела)
    sudo fallocate -l 2G /swapfile
    sudo chmod 600 /swapfile
    sudo mkswap /swapfile
    sudo swapon /swapfile
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab