Навигация и файлы
`ls -la` Показать все файлы с деталями (включая скрытые)
`pwd` Где ты сейчас находишься
`cd /path/to/dir` Перейти в папку
`cd ..`На уровень выше
`cd ~`Домой (в /home/user)
`mkdir mydir` Создать папку
`mkdir -p a/b/c` Создать вложенные папки сразу
`rm file.txt` Удалить файл
`rm -rf ./folder`⚠️ Удалить папку со всем содержимым
`cp src dest` Скопировать файл
`mv old new` Переместить / переименовать
`cat file.txt` Вывести содержимое файла
`tail -f log.txt` Смотреть лог в реальном времени
`grep "слово" file` Найти строку в файле
`find / -name "*.log"`Найти файлы по имени
`chmod 755 script.sh` Выдать права на выполнение
`chown user:group file` Сменить владельца файла
Процессы и система
`ps aux` Показать все запущенные процессы
`top` Монитор процессов (q — выйти)
`htop` Красивый монитор процессов
`kill 1234` Убить процесс по PID
`kill -9 1234` Убить намертво (если обычный kill не помог)
`df -h` Сколько места на дисках
`du -sh ./dir` Сколько весит папка
`free -h` Сколько памяти
`uname -a` Версия системы и ядра
`uptime` Сколько сервер работает без перезагрузки
`whoami` Под каким юзером ты работаешь
`sudo su` Стать root-ом
`history` История команд
`Ctrl + C` Остановить текущий процесс
`Ctrl + Z` Отправить процесс в фон
`Ctrl + L` Очистить экран терминала
Сеть и SSH
`ssh user@ip` Подключиться по SSH
`ssh -p 2222 user@ip` SSH на нестандартный порт
`scp file user@ip:/path` Скопировать файл на сервер
`curl -I https://site.com` Проверить HTTP заголовки сайта
`wget https://url/file` Скачать файл
`netstat -tulpn` Какие порты слушают (занятые)
`ss -tulpn` То же самое, но быстрее
`ping google.com` Проверить соединение
`ufw status` Статус файрвола
`ufw allow 80` Открыть порт 80
Systemd (сервисы)
`systemctl status nginx` Статус сервиса
`systemctl start nginx` Запустить сервис
`systemctl stop nginx` Остановить сервис
`systemctl restart nginx` Перезапустить сервис
`systemctl enable nginx` Автозапуск при старте системы
`journalctl -u nginx -f` Логи сервиса в реальном времени
💡 Большинство команд требуют `sudo` или добавления себя в группу docker
Контейнеры
`docker ps` Список запущенных контейнеров
`docker ps -a` Все контейнеры, включая остановленные
`docker run -d nginx` Запустить контейнер в фоне
`docker run -it ubuntu bash` Запустить интерактивно с bash
`docker stop myapp` Остановить контейнер
`docker start myapp` Запустить остановленный контейнер
`docker restart myapp` Перезапустить контейнер
`docker rm myapp` Удалить контейнер (должен быть остановлен)
`docker rm -f myapp` Удалить контейнер принудительно
`docker exec -it myapp bash` Зайти внутрь работающего контейнера
`docker logs myapp` Логи контейнера
`docker logs -f myapp` Логи в реальном времени
`docker inspect myapp` Вся инфа о контейнере (JSON)
`docker stats` CPU/RAM всех контейнеров в реальном времени
Образы
`docker images` Список скачанных образов
`docker pull nginx` Скачать образ с Docker Hub
`docker build -t myapp .`Собрать образ из Dockerfile в текущей папке
`docker rmi nginx` Удалить образ
`docker tag myapp user/myapp:v1` Дать образу тег
`docker push user/myapp:v1` Залить образ в Docker Hub
Docker Compose
`docker compose up -d` Запустить всё из docker-compose.yml в фоне
`docker compose down` Остановить и удалить контейнеры
`docker compose down -v` То же + удалить volumes (данные!)
`docker compose logs -f` Логи всех сервисов
`docker compose ps` Статус сервисов
`docker compose restart app` Перезапустить конкретный сервис
`docker compose build` Пересобрать образы
`docker compose pull` Обновить образы
Чистка мусора
`docker system prune` Удалить всё неиспользуемое
`docker volume prune` Удалить неиспользуемые volumes
`docker network ls` Список сетей
`docker volume ls` Список volumes
Управление сервисом
`systemctl status apache2` Статус Apache
`systemctl start apache2` Запустить Apache
`systemctl stop apache2` Остановить Apache
`systemctl restart apache2` Перезапустить (разрывает соединения)
`systemctl reload apache2` Перезагрузить конфиг (без разрыва)
`apachectl configtest` Проверить конфиг на ошибки перед перезапуском
Конфиги и сайты
`/etc/apache2/`Главная папка конфигов
`/etc/apache2/apache2.conf` Основной конфиг сервера
`/etc/apache2/sites-available/`Доступные конфиги сайтов (все)
`/etc/apache2/sites-enabled/`Включённые сайты (симлинки)
`a2ensite mysite.conf` Включить сайт
`a2dissite mysite.conf` Выключить сайт
`a2enmod rewrite` Включить модуль rewrite
`a2dismod rewrite` Выключить модуль
`apache2ctl -M` Список включённых модулей
Логи
`/var/log/apache2/access.log` Все запросы к серверу
`/var/log/apache2/error.log` Ошибки — сюда первым делом
`tail -f /var/log/apache2/error.log` Смотреть ошибки в реальном времени
`grep "error" /var/log/apache2/error.log` Найти все ошибки в логе
Полезные штуки
`/var/www/html/`Корень сайта по умолчанию
`apachectl -v` Версия Apache
`apache2 -l` Скомпилированные модули
`a2enmod ssl && a2enmod headers` Включить SSL и headers (для HTTPS)
`certbot --apache -d site.com` Бесплатный SSL через Let's Encrypt
🚨 Главное правило: Vim имеет режимы. По умолчанию ты в NORMAL — нажатие букв выполняет команды, а НЕ пишет текст.
NORMAL — навигация и команды INSERT — ввод текста VISUAL — выделение COMMAND — команды с двоеточием
Войти в режим ввода текста (из NORMAL)
`i` Начать писать перед курсором
`a` Начать писать после курсора
`o` Создать новую строку ниже и начать писать
`O` Создать новую строку выше и начать писать
`Esc`⬅️ Выйти из любого режима обратно в NORMAL
Сохранить и выйти (из NORMAL, нажать :)
`:w` Сохранить файл
`:q` Выйти (если нет несохранённых изменений)
`:wq` Сохранить и выйти
`:q!`Выйти БЕЗ сохранения (бросить изменения)
`:wq!`Сохранить и выйти принудительно (read-only)
`ZZ` Сохранить и выйти (быстрый способ)
Навигация (NORMAL режим)
`h j k l`← ↓ ↑ → (или просто стрелки)
`gg` Перейти в начало файла
`G` Перейти в конец файла
`:42` Перейти на строку 42
`Ctrl + F` Страница вниз
`Ctrl + B` Страница вверх
`0` В начало строки
`$`В конец строки
`w` Следующее слово
`b` Предыдущее слово
Редактирование (NORMAL режим)
`dd` Вырезать (удалить) строку
`yy` Скопировать строку
`p` Вставить после курсора
`P` Вставить перед курсором
`u` Отменить действие (Undo)
`Ctrl + R` Вернуть отменённое (Redo)
`x` Удалить символ под курсором
`dw` Удалить слово
`cw` Заменить слово (удаляет и входит в INSERT)
`r` Заменить один символ (без входа в INSERT)
`.`Повторить последнее действие
Поиск и замена
`/слово` Найти вперёд (Enter — перейти)
`?слово` Найти назад
`n` Следующее совпадение
`N` Предыдущее совпадение
`:s/old/new/g` Заменить в текущей строке
`:%s/old/new/g` Заменить во всём файле
`:%s/old/new/gc` То же, но с подтверждением каждой замены