Linux · Docker · Apache2 · Vim

Шпаргалка для быстрого старта

Навигация и файлы
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@ipSSH на нестандартный порт
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 statsCPU/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То же, но с подтверждением каждой замены