Home » Введение в основы Linux — начало работы
Введение в основы Linux — начало работы

Введение в основы Linux — начало работы

<>

Добро пожаловать в мир Linux! Если вы задаетесь вопросом, стоит ли изучать эту операционную систему, то ответ однозначный — да. Linux сегодня крутится на 96% серверов топ-миллиона сайтов, и если вы планируете серьёзно заниматься администрированием, то без знания основ никуда. Эта статья поможет вам быстро освоить базовые принципы работы с Linux, понять архитектуру системы и получить практические навыки для настройки серверов. Мы разберём всё пошагово — от первого подключения до автоматизации рутинных задач.

Как это работает: архитектура Linux

Linux — это не просто операционная система, а целая экосистема. В её основе лежит ядро (kernel), которое управляет железом и ресурсами. Поверх ядра работают системные службы, оболочка (shell) и пользовательские приложения.

Ключевые компоненты:

  • Kernel — сердце системы, управляет памятью, процессами, драйверами
  • Shell — интерпретатор команд (bash, zsh, fish)
  • Init system — управляет загрузкой и службами (systemd, OpenRC)
  • Package manager — устанавливает и обновляет ПО (apt, yum, pacman)

Всё в Linux — это файлы. Устройства, процессы, сетевые соединения — всё представлено как файлы в виртуальных файловых системах. Это даёт невероятную гибкость в управлении системой.

Быстрая настройка: первые шаги

Для начала работы вам понадобится сервер. Можете арендовать VPS или выделенный сервер для серьёзных задач.

Подключение к серверу:

ssh root@your-server-ip
# или с указанием ключа
ssh -i ~/.ssh/id_rsa user@your-server-ip

Первичная настройка безопасности:

# Обновление системы
apt update && apt upgrade -y

# Создание пользователя
useradd -m -s /bin/bash username
passwd username

# Добавление в группу sudo
usermod -aG sudo username

# Настройка SSH
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
nano /etc/ssh/sshd_config
# Изменить: PermitRootLogin no
# Изменить: PasswordAuthentication no (если используете ключи)

systemctl restart sshd

Базовая конфигурация системы:

# Установка essential пакетов
apt install -y curl wget git vim htop fail2ban ufw

# Настройка firewall
ufw default deny incoming
ufw default allow outgoing
ufw allow ssh
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

# Настройка автоматических обновлений
apt install unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades

Файловая система и навигация

Структура каталогов Linux стандартизирована (FHS — Filesystem Hierarchy Standard):

Каталог Назначение Примеры использования
/ Корневой каталог Точка монтирования всей системы
/etc Конфигурационные файлы /etc/nginx/nginx.conf, /etc/hosts
/var Переменные данные /var/log, /var/www, /var/lib
/usr Пользовательские программы /usr/bin, /usr/local
/home Домашние каталоги /home/username
/tmp Временные файлы Очищается при перезагрузке

Основные команды навигации:

# Навигация
pwd                 # текущий каталог
ls -la             # подробный список файлов
cd /path/to/dir    # смена каталога
find /var -name "*.log" -type f  # поиск файлов

# Работа с файлами
cat file.txt       # показать содержимое
less file.txt      # постраничный просмотр
tail -f /var/log/syslog  # мониторинг лога в реальном времени
grep "error" /var/log/nginx/error.log  # поиск по содержимому

# Права доступа
chmod 755 script.sh    # права на выполнение
chown user:group file  # смена владельца

Управление процессами и службами

В современных дистрибутивах используется systemd для управления службами:

# Управление службами
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl reload nginx
systemctl enable nginx    # автозапуск
systemctl disable nginx
systemctl status nginx

# Мониторинг процессов
ps aux | grep nginx
top                       # интерактивный монитор
htop                      # улучшенная версия top
kill -9 PID              # принудительное завершение процесса
killall nginx            # завершение всех процессов nginx

# Просмотр логов
journalctl -u nginx -f   # логи службы в реальном времени
journalctl --since "1 hour ago"

Сетевые настройки

Диагностика и настройка сети:

# Сетевая диагностика
ip addr show           # показать IP-адреса
ip route show          # таблица маршрутизации
ss -tuln              # открытые порты
netstat -tuln         # старый способ

# Проверка соединения
ping google.com
traceroute google.com
nslookup domain.com
dig domain.com

# Мониторинг трафика
iftop                 # трафик по интерфейсам
nethogs              # трафик по процессам

Управление пакетами

Сравнение пакетных менеджеров:

Дистрибутив Менеджер Установка Обновление Поиск
Ubuntu/Debian apt apt install package apt update && apt upgrade apt search package
CentOS/RHEL yum/dnf yum install package yum update yum search package
Arch Linux pacman pacman -S package pacman -Syu pacman -Ss package

Полезные команды для управления пакетами:

# Debian/Ubuntu
apt list --installed      # установленные пакеты
apt show package-name     # информация о пакете
apt autoremove           # удаление неиспользуемых пакетов
apt autoclean            # очистка кэша

# Установка из исходников
wget https://example.com/package.tar.gz
tar -xzf package.tar.gz
cd package/
./configure
make
sudo make install

Автоматизация и скрипты

Bash-скрипты — основа автоматизации в Linux:

#!/bin/bash
# Пример скрипта для мониторинга диска

THRESHOLD=80
DISK_USAGE=$(df / | grep / | awk '{print $5}' | sed 's/%//g')

if [ $DISK_USAGE -gt $THRESHOLD ]; then
    echo "WARNING: Disk usage is ${DISK_USAGE}%"
    # Отправка уведомления
    echo "Disk usage critical on $(hostname)" | mail -s "Disk Alert" admin@example.com
fi

# Очистка логов старше 7 дней
find /var/log -name "*.log" -type f -mtime +7 -delete

Cron для автоматического выполнения задач:

# Редактирование crontab
crontab -e

# Примеры заданий
# Каждую минуту
* * * * * /path/to/script.sh

# Каждый день в 2:30
30 2 * * * /usr/bin/backup.sh

# Каждый понедельник в 9:00
0 9 * * 1 /usr/local/bin/weekly-report.sh

# Проверка заданий
crontab -l

Практические кейсы и решения

Кейс 1: Настройка веб-сервера

# Установка LEMP stack
apt install nginx mysql-server php-fpm php-mysql

# Конфигурация Nginx
cat > /etc/nginx/sites-available/example.com << 'EOF'
server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.php index.html;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }
}
EOF

ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

Кейс 2: Мониторинг системы

# Скрипт для мониторинга ресурсов
#!/bin/bash

# Проверка загрузки CPU
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)
MEMORY_USAGE=$(free | grep Mem | awk '{printf "%.2f", $3/$2 * 100.0}')

echo "CPU: ${CPU_USAGE}%"
echo "Memory: ${MEMORY_USAGE}%"

# Проверка статуса критических служб
SERVICES=("nginx" "mysql" "php7.4-fpm")

for service in "${SERVICES[@]}"; do
    if systemctl is-active --quiet $service; then
        echo "✓ $service is running"
    else
        echo "✗ $service is DOWN"
        systemctl start $service
    fi
done

Безопасность и мониторинг

Основные практики безопасности:

# Мониторинг попыток входа
tail -f /var/log/auth.log | grep "Failed password"

# Настройка fail2ban
cat > /etc/fail2ban/jail.local << 'EOF'
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
EOF

systemctl restart fail2ban

# Проверка открытых портов
nmap -sT -O localhost

# Аудит системы
lynis audit system

Полезные утилиты и альтернативы

Современные замены классических утилит:

  • exa — замена ls с цветным выводом
  • bat — улучшенный cat с подсветкой синтаксиса
  • fd — быстрая альтернатива find
  • ripgrep (rg) — сверхбыстрый поиск в файлах
  • tmux — мультиплексор терминала
  • zsh + oh-my-zsh — продвинутая оболочка

Установка и настройка:

# Установка современных утилит
apt install exa bat fd-find ripgrep tmux zsh

# Настройка алиасов
echo 'alias ll="exa -la"' >> ~/.bashrc
echo 'alias cat="batcat"' >> ~/.bashrc
echo 'alias grep="rg"' >> ~/.bashrc

Интересные факты и нестандартные применения

Linux открывает множество возможностей для креативного использования:

  • /dev/null — "чёрная дыра" для ненужного вывода
  • /proc — виртуальная файловая система для информации о системе
  • Named pipes — межпроцессное взаимодействие через файлы
  • Символьные ссылки — аналог shortcuts в Windows

Необычные примеры:

# Создание "бесконечного" файла
yes "Hello World" > /dev/null &

# Мониторинг температуры CPU
watch -n 1 'cat /sys/class/thermal/thermal_zone*/temp'

# Создание RAM-диска
mkdir /tmp/ramdisk
mount -t tmpfs -o size=1G tmpfs /tmp/ramdisk

# Сетевое подключение через SSH туннель
ssh -L 8080:localhost:80 user@remote-server

Статистика и сравнения

Интересные цифры о Linux:

  • 96% из топ-миллиона веб-серверов работают на Linux
  • Android (базируется на Linux) — 70% мобильного рынка
  • 500+ активных дистрибутивов Linux
  • Ядро Linux содержит более 28 миллионов строк кода

Сравнение производительности (условные единицы):

Метрика Linux Windows Server Преимущество
Потребление RAM 512MB 2GB Linux в 4 раза эффективнее
Время загрузки 20 сек 60 сек Linux в 3 раза быстрее
Стоимость лицензий $0 $1000+ Linux бесплатный

Заключение и рекомендации

Linux — это не просто операционная система, а философия открытого кода и гибкости. Для администрирования серверов это must-have навык. Начните с базовых команд, постепенно углубляясь в автоматизацию и скрипты.

Основные рекомендации:

  • Используйте стабильные дистрибутивы для продакшена (Ubuntu LTS, CentOS, Debian)
  • Автоматизируйте всё — от деплоя до мониторинга
  • Следите за безопасностью — регулярные обновления, мониторинг логов
  • Изучайте bash — это основа автоматизации
  • Используйте системы контроля версий для конфигурационных файлов

Полезные ресурсы для дальнейшего изучения:

Помните: в Linux нет неразрешимых задач, есть только неизученные man-страницы. Удачи в освоении этой мощной системы!


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked