- Home »

Введение в основы 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-страницы. Удачи в освоении этой мощной системы!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.