Найважливіші команди Linux для DevOps. Повний гайд
Привіт, друзі! Мене звати Макс, і вже майже десять років я живу у світі системного адміністрування. Звучить трохи занудно? Насправді — це драйв та суцільне задоволення! Щодня я розплутую задачі, які іншим можуть здаватися головоломками, і отримую від цього неабиякий кайф.
Якщо ви ще в пошуках своєї «справи життя», щиро бажаю знайти те, що змусить вас вставати вранці з радістю та натхненням. Бо коли робота справді драйвова, навіть понеділки стають легкими.
Ця стаття буде корисною як новачкам у системному адмініструванні, так і тим, хто цікавиться DevOps. Ви зможете дізнатися про важливі та корисні команди для Linux, які спростять вашу щоденну роботу.
Найважливіші команди Linux для DevOps
Володіння базовими командами Linux є ключовою навичкою для DevOps-спеціалістів. Адже Linux — це основа багатьох серверних рішень, і робота з терміналом дозволяє швидко керувати серверами, скриптами та налаштуваннями.
Я розгляну найважливіші команди Linux, які допоможуть DevOps-фахівцям ефективно працювати з системою, автоматизувати процеси та забезпечити стабільність серверів.
1.Основи роботи з файлами та каталогами
Ці команди дозволяють переглядати, переміщувати, копіювати та керувати файлами й папками.
ls — перегляд файлів і каталогів.
Приклад команди в bash:
ls -l # Показує деталі файлів у каталозі
cd — перехід до іншого каталогу.
Приклад команди в bash:
cd /var/log # Перехід до каталогу з логами
cp — копіювання файлів або каталогів.
Приклад команди в bash:
cp source.txt destination.txt # Копіює файл source.txt в destination.txt
mv — переміщення або перейменування файлів.
Приклад команди в bash:
mv old_name.txt new_name.txt # Перейменовує файл
rm — видалення файлів і папок.
Приклад команди в bash:
rm -rf /path/to/directory # Видаляє каталог і всі його файли
2. Робота з користувачами та правами
Безпека є критичною частиною DevOps. Контроль доступу до файлів і процесів виконується через команди для управління користувачами.
useradd та usermod — створення та налаштування користувачів.
Приклад команди в bash:
useradd newuser # Додає нового користувача
usermod -aG sudo newuser # Додає користувача до групи sudo
passwd — зміна пароля.
Приклад команди в bash:
passwd newuser # Зміна пароля для нового користувача
chmod та chown — зміна прав доступу та власника файлів.
Приклад команди в bash:
chmod 755 script.sh # Встановлює права доступу для файлу
chown user:group file.txt # Встановлює власника та групу для файлу
3. Процеси та їх моніторинг
DevOps-інженери мають стежити за станом системи та процесами, що на ній виконуються, для вчасного виявлення проблем.
ps — перегляд активних процесів.
Приклад команди в bash:
ps aux # Показує всі активні процеси
top — інтерфейс реального часу для моніторингу ресурсів.
Приклад команди в bash:
top # Показує стан процесів та використання ресурсів
kill та pkill — завершення процесів.
Приклад команди в bash:
kill −9 1234 # Завершує процес з ID 1234
pkill nginx # Завершує всі процеси, що пов’язані з nginx
4. Робота з мережевими налаштуваннями
Робота з мережею є невід’ємною частиною для DevOps, особливо під час налаштування серверів.
ifconfig та ip — перевірка та налаштування мережевих інтерфейсів.
Приклад команди в bash:
ifconfig # Показує інформацію про мережеві інтерфейси
ip addr # Показує деталі IP-адрес
ping — перевірка доступності серверів.
Приклад команди в bash:
ping google.com # Перевіряє з’єднання з Google
netstat — перегляд мережевих з’єднань.
Приклад команди в bash:
netstat -tuln # Показує активні з’єднання та відкриті порти
5. Робота з системними журналами та діагностика
Для виявлення причин неполадок DevOps-інженерам необхідно мати доступ до системних журналів.
dmesg — виводить системні повідомлення ядра.
Приклад команди в bash:
dmesg | tail # Показує останні повідомлення
journalctl — перегляд системних журналів (на системах з systemd).
Приклад команди в bash:
journalctl -u nginx # Показує логи для nginx
tail та less — перегляд файлів журналів.
Приклад команди в bash:
tail -f /var/log/syslog # Перегляд логів у реальному часі
6. Пакетний менеджмент
Встановлення та оновлення програмного забезпечення — звична справа в DevOps.
apt (Debian/Ubuntu) та yum (CentOS/RHEL) — управління пакетами.
Приклад команди в bash:
apt update && apt upgrade # Оновлює систему на Debian/Ubuntu
yum install httpd # Встановлює Apache на CentOS/RHEL
7. Автоматизація за допомогою cron
Автоматизація завдань є важливою частиною DevOps. Команда cron дозволяє налаштовувати періодичні завдання.
crontab — налаштування періодичних завдань.
Приклад команди в bash:
crontab -e # Редагування crontab для поточного користувача
Наприклад, щоб запускати скрипт щодня о другій ночі:
Приклад команди в bash:
0 2 * * * /path/to/script.sh
8. Захист серверів за допомогою брандмауера
Забезпечення безпеки серверів — один із пріоритетів для DevOps.
ufw (Uncomplicated Firewall) і iptables — це обидва інструменти для керування брандмауером в Linux, але вони мають різний рівень складності та підходять для різних потреб.
ufw — це простіший інтерфейс, який дає змогу легко керувати правилами брандмауера. Він був створений для зручності та спрощення налаштувань, особливо для користувачів, які не є експертами в мережевій безпеці.
Приклад команди в bash:
ufw allow 22 # Дозволяє підключення по SSH
ufw enable # Увімкнення ufw
iptables — потужний та гнучкий інструмент, який дає змогу здійснювати детальний контроль за мережевими з’єднаннями. Однак його синтаксис і налаштування досить складні, що може вимагати знань мережевих протоколів і досвіду.
Додавання правила для дозволу трафіку на певному порту
Приклад команди в bash:
iptables -A INPUT -p tcp —dport 22 -j ACCEPT # Дозволяє вхідний трафік на порт 22 (SSH)
Блокування IP-адреси
Приклад команди в bash:
iptables -A INPUT -s 192.168.1.100 -j DROP # Блокує вхідний трафік від 192.168.1.100
Перегляд поточних правил
Приклад команди в bash:
iptables -L -v -n # Показує всі налаштовані правила
Видалення певного правила
Щоб видалити певне правило, спочатку дізнайтеся його номер:
Приклад команди в bash:
iptables -L —line-numbers # Показує номери правил
Потім використовуйте номер для видалення:
Приклад команди в bash:
iptables -D INPUT 1 # Видаляє перше правило в ланцюжку INPUT
Збереження та відновлення конфігурації iptables
Щоб зберегти правила (на Debian/Ubuntu):
Приклад команди в bash:
iptables-save > /etc/iptables/rules.v4
А щоб відновити їх:
Приклад команди в bash:
iptables-restore < /etc/iptables/rules.v4
9. Резервне копіювання та відновлення
Збереження даних — критично важлива задача.
tar — створення архівів.
Приклад команди в bash:
tar -cvzf backup.tar.gz /path/to/directory # Створює архів
gzip — стиснення файлів.
Приклад команди в bash:
gzip file.txt # Стискає файл file.txt до file.txt.gz
rsync — синхронізація даних між двома серверами.
Приклад команди в bash:
rsync -av /path/to/source/ user@remote:/path/to/destination/
10. Мережевий моніторинг із tcpdump
Команда tcpdump дозволяє аналізувати мережевий трафік, що є надзвичайно корисним для діагностики мережевих проблем, а також для моніторингу та безпеки.
tcpdump — аналіз мережевого трафіку в реальному часі.
Приклад команди в bash:
tcpdump # Переглядає весь трафік на всіх інтерфейсах
Щоб переглянути трафік на конкретному інтерфейсі (наприклад, eth0):
Приклад команди в bash:
tcpdump -i eth0 # Переглядає трафік на eth0
Щоб зберегти трафік у файл для подальшого аналізу:
Приклад команди в bash:
tcpdump -i eth0 -w capture.pcap # Зберігає трафік у файл capture.pcap
Для аналізу певного порту (наприклад, HTTP-трафіку на порту 80):
Приклад команди в bash:
tcpdump -i eth0 port 80 # Виводить лише трафік на порту 80
11. Моніторинг системи
Для постійного моніторингу стану серверів та ресурсів корисні наступні команди:
free — показує використання пам’яті (RAM).
Приклад команди в bash:
free -h # Виводить використання пам’яті у зручному для читання форматі
df — показує використання дискового простору.
Приклад команди в bash:
df -h # Показує доступний та використаний дисковий простір
uptime — показує час роботи системи з моменту останнього перезавантаження та завантаження системи.
Приклад команди в bash:
uptime # Показує, скільки часу сервер у роботі та його завантаження
vmstat — деталізована інформація про стан системи (пам’ять, процеси, ввід, вивід тощо).
Приклад команди в bash:
vmstat 1 # Показує оновлення інформації про систему кожну секунду
12. Робота з сервісами та журналами
DevOps-інженери часто працюють із сервісами та повинні відслідковувати їхні логи.
systemctl — управління службами на системах із systemd.
Приклад команди в bash:
systemctl start nginx # Запускає сервіс nginx
systemctl stop nginx # Зупиняє сервіс nginx
systemctl status nginx # Показує стан сервісу nginx
journalctl — перегляд журналів служб.
Приклад команди в bash:
journalctl -u nginx # Показує логи для конкретного сервісу nginx
13. Резервне копіювання та відновлення баз даних
Для збереження даних в базах можна використовувати специфічні інструменти резервного копіювання:
mysqldump (для MySQL/MariaDB).
Приклад команди в bash:
mysqldump -u username -p database_name > backup.sql # Створює резервну копію бази даних
pg_dump (для PostgreSQL).
Приклад команди в bash:
pg_dump -U username -d database_name > backup.sql # Створює резервну копію бази даних PostgreSQL
14. Автоматизація з допомогою скриптів та Cron
Автоматизація за допомогою bash-скриптів дозволяє DevOps-інженерам створювати регулярні процеси та оптимізувати рутинні завдання.
Приклад простого скрипта резервного копіювання:
Приклад команди в bash-скрипті:
#!/bin/bash
tar -czf /backup/backup_$(date +%F).tar.gz /path/to/important/data
Налаштування завдань у cron:
Приклад команди в bash:
crontab -e # Відкриває редактор для налаштування завдань cron
Наприклад, для запуску резервного копіювання щодня о третій ночі:
0 3 * * * /path/to/backup_script.sh
15. Інтерактивне управління мережевими з’єднаннями за допомогою netcat (nc)
netcat дозволяє встановлювати TCP та UDP з’єднання, перевіряти порти та навіть створювати прості сервери.
Відкриття порту та прослуховування
Приклад команди в bash:
nc -l 1234 # Відкриває порт 1234 та прослуховує підключення
Перевірка доступності порту
Приклад команди в bash:
nc -zv hostname 80 # Перевіряє, чи відкритий порт 80 на hostname
Висновок
Для мене Linux є справжнім фундаментом у роботі DevOps-інженера. Володіння базовими командами допомагає не лише підтримувати стабільність і швидкодію серверів, але й глибше розуміти, як працюють системи, якими я керую. Завдяки цим простим командам я можу швидко знаходити та розв’язувати проблеми, що виникають, і водночас покращувати інфраструктуру скриптами.
Також для мене була корисною книга з написання скриптів «Advanced Bash-Scripting Guide». Безперервне навчання та автоматизація процесів роблять мене більш ефективним та надають інструменти для побудови надійних, масштабованих рішень.
59 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів