Linux основи¶
Шпаргалка по основних командах Linux для роботи з сервером. Всі приклади для Ubuntu/Debian, але працюють на більшості дистрибутивів.
Навігація по файловій системі¶
# Поточна директорія
pwd
# /home/user
# Перейти в директорію
cd /var/log
cd ~ # Домашня директорія
cd .. # На рівень вище
cd - # Попередня директорія
# Список файлів
ls
ls -la # Детально, включно з прихованими
ls -lh # Human-readable розміри
ls -lt # Сортувати по часу
# Структура директорій
tree # Дерево (apt install tree)
tree -L 2 # Глибина 2 рівні
Структура Linux¶
/
├── bin/ # Базові команди (ls, cp, mv)
├── etc/ # Конфігурації
├── home/ # Домашні директорії користувачів
│ └── user/
├── var/ # Змінні дані
│ ├── log/ # Логи
│ └── www/ # Веб-файли
├── tmp/ # Тимчасові файли
├── opt/ # Додаткове ПЗ
└── usr/ # Програми користувача
└── local/ # Локально встановлене
Робота з файлами¶
Перегляд вмісту¶
# Весь файл
cat file.txt
# Посторінково
less file.txt # q - вихід, / - пошук
# Перші/останні рядки
head -20 file.txt
tail -20 file.txt
tail -f file.txt # В реальному часі (для логів)
Копіювання, переміщення, видалення¶
# Копіювати
cp file.txt backup.txt
cp -r dir/ dir_copy/ # Директорію рекурсивно
# Перемістити/перейменувати
mv file.txt newname.txt
mv file.txt /other/dir/
# Видалити
rm file.txt
rm -r dir/ # Директорію
rm -rf dir/ # Без підтверджень (ОБЕРЕЖНО!)
# Створити директорію
mkdir newdir
mkdir -p path/to/deep/dir # Всі батьківські
# Створити порожній файл
touch newfile.txt
Пошук файлів¶
# По імені
find /var/log -name "*.log"
find . -name "config*"
# По типу
find . -type f # Тільки файли
find . -type d # Тільки директорії
# По часу модифікації
find . -mtime -7 # Змінені за останні 7 днів
# По розміру
find . -size +100M # Більше 100 MB
Пошук в файлах¶
# Текст в файлі
grep "error" logfile.txt
grep -i "error" logfile.txt # Без врахування регістру
grep -r "TODO" ./src/ # Рекурсивно в директорії
grep -n "error" file.txt # З номерами рядків
# Кількість входжень
grep -c "error" logfile.txt
Права доступу¶
-rw-r--r-- 1 user group 4096 Jan 17 12:00 file.txt
│├──┼──┼──│
││ │ │ └── Others (інші)
││ │ └───── Group (група)
││ └──────── User (власник)
│└─────────── Тип (- файл, d директорія)
Права¶
| Символ | Число | Значення |
|---|---|---|
| r | 4 | Читання |
| w | 2 | Запис |
| x | 1 | Виконання |
# Змінити права
chmod 755 script.sh # rwxr-xr-x
chmod 644 file.txt # rw-r--r--
chmod +x script.sh # Додати виконання
# Змінити власника
chown user:group file.txt
chown -R user:group dir/ # Рекурсивно
# Типові права
# 755 — для скриптів і директорій
# 644 — для звичайних файлів
# 600 — для приватних файлів (SSH ключі)
Процеси¶
Перегляд¶
# Список процесів
ps aux
ps aux | grep nginx # Фільтрація
# Інтерактивно
top
htop # Краща версія (apt install htop)
# Дерево процесів
pstree
Управління¶
# Завершити процес
kill PID # Graceful
kill -9 PID # Force (SIGKILL)
# По імені
pkill nginx
killall nginx
# Запустити у фоні
./script.sh &
# Вивести з фону
jobs # Список фонових задач
fg %1 # Повернути задачу 1
Диски і пам'ять¶
# Використання дисків
df -h
# Filesystem Size Used Avail Use% Mounted on
# /dev/sda1 80G 45G 35G 57% /
# Розмір директорій
du -sh /var/log
du -h --max-depth=1 /var
# Найбільші директорії
du -h /var | sort -rh | head -10
# Використання RAM
free -h
# total used free shared buff/cache
# Mem: 4.0Gi 1.5Gi 0.5Gi 128Mi 2.0Gi
# Детально по процесах
ps aux --sort=-%mem | head -10
Мережа¶
Перевірка з'єднань¶
# Мережеві інтерфейси
ip addr
ip a # Скорочено
# Маршрути
ip route
# Відкриті порти
ss -tulnp
# -t TCP, -u UDP, -l listening, -n numeric, -p process
# Перевірка доступності
ping 8.8.8.8
ping -c 4 google.com # 4 пакети
# DNS lookup
nslookup google.com
dig google.com
# Трасування маршруту
traceroute google.com
mtr google.com # Інтерактивний (apt install mtr)
HTTP запити¶
# Отримати сторінку
curl https://example.com
# Тільки заголовки
curl -I https://example.com
# Зберегти файл
curl -O https://example.com/file.zip
wget https://example.com/file.zip
# POST запит
curl -X POST -d "data=value" https://api.example.com
# JSON
curl -X POST \
-H "Content-Type: application/json" \
-d '{"key": "value"}' \
https://api.example.com
Архіви¶
# tar.gz (найпоширеніший)
tar -czvf archive.tar.gz dir/ # Створити
tar -xzvf archive.tar.gz # Розпакувати
tar -tzvf archive.tar.gz # Переглянути вміст
# zip
zip -r archive.zip dir/
unzip archive.zip
# Ключі tar:
# -c create, -x extract, -t list
# -z gzip, -j bzip2
# -v verbose, -f file
Текстові редактори¶
nano (простий)¶
nano file.txt
# Управління:
# Ctrl+O — зберегти
# Ctrl+X — вийти
# Ctrl+W — пошук
# Ctrl+K — вирізати рядок
# Ctrl+U — вставити
vim (потужний)¶
vim file.txt
# Режими:
# i — режим вставки
# Esc — командний режим
# :w — зберегти
# :q — вийти
# :wq — зберегти і вийти
# :q! — вийти без збереження
# dd — видалити рядок
# /text — пошук
# n — наступний результат
Користувачі та групи¶
# Інформація про поточного користувача
whoami
id
# Список користувачів
cat /etc/passwd
# Створити користувача
sudo adduser newuser
# Додати до групи
sudo usermod -aG docker newuser
# Змінити пароль
passwd # Свій
sudo passwd username # Іншого
# Видалити користувача
sudo deluser username
Системна інформація¶
# ОС та ядро
uname -a
cat /etc/os-release
# Апаратне забезпечення
lscpu # CPU
lsmem # RAM
lsblk # Диски
# Час роботи системи
uptime
# Історія команд
history
history | grep "docker"
Pipe та перенаправлення¶
# Pipe — передати вивід однієї команди іншій
cat file.txt | grep "error" | wc -l
# Перенаправлення в файл
echo "text" > file.txt # Перезаписати
echo "text" >> file.txt # Додати
# Stderr
command 2> errors.log # Тільки помилки
command &> all.log # Все
# /dev/null — "чорна діра"
command > /dev/null 2>&1 # Ігнорувати весь вивід
Корисні комбінації¶
# Пошук і дія
find . -name "*.tmp" -delete
find . -name "*.log" -exec gzip {} \;
# Перегляд логів в реальному часі з фільтром
tail -f /var/log/syslog | grep --line-buffered "error"
# Топ найбільших файлів
find / -type f -exec du -h {} + 2>/dev/null | sort -rh | head -20
# Кількість файлів
find . -type f | wc -l
# Унікальні IP з логу
cat access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head
Гарячі клавіші терміналу¶
| Клавіша | Дія |
|---|---|
| Ctrl+C | Перервати команду |
| Ctrl+D | Вихід (EOF) |
| Ctrl+L | Очистити екран |
| Ctrl+R | Пошук в історії |
| Ctrl+A | На початок рядка |
| Ctrl+E | В кінець рядка |
| Ctrl+U | Видалити до початку |
| Ctrl+K | Видалити до кінця |
| Tab | Автодоповнення |
| ↑↓ | Історія команд |
Типові помилки¶
Permission denied¶
# Проблема
cat /var/log/syslog
# Permission denied
# Рішення
sudo cat /var/log/syslog
# Або стати власником/додати права
Command not found¶
# Проблема
htop
# Command not found
# Рішення
sudo apt install htop
No space left on device¶
# Знайти що займає місце
df -h
du -h --max-depth=1 / | sort -rh | head
# Очистити
sudo apt autoremove
sudo journalctl --vacuum-time=3d
docker system prune
Див. також¶
- SSH ключі — безпечний доступ
- Systemd сервіси — керування службами
- VPS та хмари — налаштування сервера
Шлях: getting-started/linux-basics.md