Основні команди адміністрування сервера Linux

У цьому посібнику ми наведемо основні концепції та команди, які мають значення для адміністрування сервера Linux.

1. Розуміння файлової системи Linux

Файлова система Linux є ієрархічною і починається з кореневого каталогу /. Нижче наведено деякі важливі каталоги та їх призначення:

  • /bin – містить основні файли команд. (наприклад: ls, cp).
  • /etc - конфігураційні файли для системи.
  • /home - домашні каталоги користувачів.
  • /var - різні файли даних, такі як журнали.
  • /usr - програми користувача та бібліотеки.

Корисні команди:

pwd: Відображає поточний робочий каталог.

pwd

ls: Список файлів та каталогів.

ls

cd: Змінює каталог.

cd /etc

2. Основні команди Linux

Ось кілька основних команд, які повинен знати кожен адміністратор Linux:

cat: Показати вміст файлу.

cat /etc/passwd

cp: Копіювати файли.

cp file1.txt /home/user/file2.txt

mv: Переміщувати або перейменовувати файли.

mv file1.txt /home/user/file1-renamed.txt

rm: Видалити файли або каталоги.

rm file1.txt

mkdir: Створити новий каталог.

mkdir /home/user/newdir

3. Керування користувачами та групами

Керування користувачами та групами — ключова частина адміністрування сервера для забезпечення контролю доступу.

Створити нового користувача:

sudo adduser username

Видалити користувача:

sudo deluser username

Створити нову групу:

sudo groupadd newgroup

Додати користувача до групи:

sudo usermod -aG groupname username

Перевірити поточних користувачів:

who

4. Права доступу та власники файлів

Файли та каталоги Linux мають певні дозволи для власників, груп та інших осіб.

Format:

  • r = читання
  • w = запис
  • x = виконання (для файлів)/пошук (для каталогів)

Переглянути права доступу до файлів та каталогів:

ls -l

Змінити права доступу до файлу:

chmod 755 filename

Змінити власника файлу:

sudo chown newowner:newgroup filename

5. Управління процесами

Розуміння процесів та їх контроль мають вирішальне значення для продуктивності та усунення неполадок.

Перегляд запущених процесів:

ps aux

Моніторинг процесів у реальному часі:

top

Завершити процес:

kill <PID>

Фоновий процес:

<command> &

6. Моніторинг системи

Моніторинг продуктивності системи необхідний для адміністрування сервера.

Перевірка використання диска:

df -h

Перевірка використання пам'яті:

free -m

Перегляд системних журналів:

tail -f /var/log/syslog

7. Мережеві команди

Сервери Linux потребують ефективного налаштування мережі та усунення несправностей. Ось деякі основі мережеві команди:

Перевірити налаштування мережного інтерфейсу:

ip a

Пінг віддаленого сервера:

ping google.com

Display network routing table:

route -n

Перевірка відкритих портів:

netstat -tuln

Завантажити файл за допомогою wget:

wget http://example.com/file.tar.gz

8. Керування пакетами

У дистрибутивах Linux використовуються різні менеджери пакетів для встановлення, оновлення та видалення програмного забезпечення.

Для систем на базі Debian (наприклад, Ubuntu):

Оновити списки пакетів:

sudo apt update

Встановити пакет:

sudo apt install package_name

Видалити пакет:

sudo apt remove package_name

Для систем на базі Red Hat (наприклад, CentOS, AlmaLinux):

Оновити списки пакетів:

sudo yum update

або

sudo dnf upgrade

Встановити пакет:

sudo yum install <package_name>

або

sudo dnf install <package_name>

Видалити пакет:

sudo yum remove <package_name>

або

sudo dnf remove <package_name>

9. Автоматизація завдань за допомогою cron

Завдання сron — це заплановані завдання, що автоматизують виконання скриптів та команд.

Змінити таблицю завдань cron:

crontab -e

Формат завдання cron:

* * * * * /path/to/command

(П'ять зірок представляють хвилину, годину, день, місяць та день тижня)

Приклад: запускати резервне копіювання щодня о 2 годині ночі:

0 2 * * * /home/user/backup.sh

Вивести список запланованих завдань cron:

crontab -l

10. Брандмауер та основи безпеки

Основні заходи безпеки при адмініструванні серверів Linux включають налаштування брандмауерів, відключення невикористовуваних служб та підтримання актуальності системи.

Перегляд статусу брандмауера:

sudo ufw status

Дозволити порт (наприклад, SSH):

sudo ufw allow 22

Увімкнути брандмауер:

sudo ufw enable

Щоб забезпечити безпеку вашого сервера, регулярно оновлюйте пакети:

sudo apt upgrade # Debian/Ubuntu-based
sudo yum update # Red Hat/CentOS-based
sudo dnf update # Red Hat/CentOS-based

11. Пошук у файлах

Команда grep шукає файли або виведення на основі шаблону. Це має неоціненне значення при пошуку конкретної інформації в журналах або конфігураційних файлах.

Пошук певного рядка у файлі:

grep "error" /var/log/syslog

Рекурсивний пошук у каталогах:

grep -r "keyword" /etc/

Пошук без урахування регістру:

grep -i "ERROR" /var/log/syslog

Корисні опції:

  • -v (інвертувати збіг), щоб знайти рядки, які не відповідають шаблону.
  • -A or -B для відображення рядків до або після збігу.

12. Пошук файлів за критеріями

find — універсальний інструмент для пошуку файлів і каталогів на ім'я, тип, розмір, дату зміни та інші параметри.

Find files by name:

find/-name "file.txt"

Знайти файли, змінені за останні 7 днів:

find /var/log -mtime -7

Знайти та видалити файли розміром понад 100 МБ:

find /home -size +100M -exec rm {} \;

13. Синхронізація файлів та каталогів

rsync — швидкий та універсальний інструмент для копіювання та синхронізації файлів між каталогами чи серверами. Широко використовується для резервного копіювання та передачі даних.

Синхронізувати локальні каталоги:

rsync -avh /source/dir/ /destination/dir/

Синхронізація файлів з віддаленим сервером:

rsync -avz /local/dir/ user@remote:/remote/dir/

Прапори:

  • -a для архівного режиму,
  • -v для детального режиму,
  • -h for human-readable output,
  • -z для стиснення.

Копіювати лише оновлені файли:

rsync -av --update /source/ /destination/

14. Редактор потоку для роботи з текстом

sed використовується для пошуку та заміни тексту у файлах, що робить пакетне редагування надзвичайно ефективним.

Замінити текст у файлі:

sed -i's/oldtext/newtext/g' <filename>

замінить усі входження "oldtext" на "newtext" у файлі.

Видалити рядки, які містять рядок:

sed '/pattern/d' <filename>

Замінити лише перше входження в кожному рядку:

sed's/old/new/' <filename>

15. Обробка тексту

awk — це потужна мова програмування та команда для обробки та аналізу текстових даних.

Виведення певного стовпця з файлу:

awk '{print $2}' file.txt

виводить другий стовпець з кожного рядка file.txt.

Думуйте значення в стовпці:

awk '{s+=$2} END {print s}' file.txt

Фільтрація та виведення певних рядків:

awk '$3 > 100' file.txt

16. Термінальний мультиплексор

tmux дозволяє запускати кілька термінальних сеансів в одному вікні та перемикатися між ними. Це дуже корисно для віддаленого адміністрування сервера.

Почати новий сеанс:

tmux new -s mysession

Від'єднатися від сеансу (не перериваючи його): Ctrl + b, потім d

Список усіх сеансів:

tmux ls

Повторно підключитися до сеансу:

tmux attach -t mysession

17. Аналізатор мережних пакетів

tcpdump — потужний аналізатор пакетів командного рядка. Дозволяє захоплювати та аналізувати мережевий трафік.

Захоплення всього мережевого трафіку:

sudo tcpdump

Захоплення трафіку на певному інтерфейсі:

sudo tcpdump -i eth0

Захоплення трафіку на порту 80 (HTTP):

sudo tcpdump 'port 80'

Збереження виведення файлу:

sudo tcpdump -w capture.pcap

18. Список відкритих файлів

lsof використовується для виведення списку відкритих файлів та процесів, що їх відкрили. Це корисно для діагностики проблем із використанням файлів, мережевими підключеннями тощо. д.

Список усіх відкритих файлів:

lsof

Знайти файли, відкриті певним процесом:

lsof -p <PID>

Дізнатися, який процес використовує порт (наприклад, порт 80):

sudo lsof -i :80

19. Інтерактивний переглядач процесів

htop — зручніша версія top з графічним відображенням системних ресурсів та процесів.

Встановіть htop (якщо не встановлено):

sudo apt install htop # Debian/Ubuntu
sudo yum install htop # CentOS/Red Hat
sudo dnf install htop # CentOS/Red Hat

Запустіть htop:

htop

Використовуйте сполучення клавіш для керування процесами, сортування за ЦП або пам'яті та безпосереднього завершення процесів.

20. Керування правилами брандмауера

iptables — потужний інструмент для налаштування брандмауера Linux.

Список поточних правил:

sudo iptables -L

Блокування IP-адреси:

sudo iptables -A INPUT -s 192.168.1.100 -j DROP

Дозволити трафік на певному порту (наприклад, порт 22 для SSH):

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

21. Виконання команд із стандартного введення

xargs використовується для створення та виконання команд з використанням введення з інших команд.

Видалення всіх файлів з певним розширенням:

find/path-name "*.log" | xargs rm

Передача аргументів із стандартного введення:

echo "file1 file2 file3" | xargs touch

22. Архівування файлів

tar — найпоширеніша утиліта, яка використовується для створення та вилучення архівних файлів (зазвичай .tar або .tar.gz).

Створення архіву .tar.gz:

tar -czvf archive.tar.gz /path/to/files

Вилучення архіву:

tar -xzvf archive.tar.gz

Параметри:

  • -c створити архів
  • -x витягти файли
  • -v докладний висновок
  • -f файл для обробки
  • -z стиснути за допомогою gzip

23. Змінити кореневий каталог

chroot використовується для зміни кореневого каталогу поточного процесу, що є корисним для сценаріїв тестування або відновлення.

Вказати інший кореневий каталог:

sudo chroot /path/to/new/root

це обмежить користувача в межах нового кореневого каталогу системи.

24. Управління системними службами

systemctl використовується для керування системними службами (запуск, зупинка, увімкнення або вимкнення служб).

Запуск служби:

sudo systemctl start nginx

Зупинення служби:

sudo systemctl stop nginx

Увімкнення служби під час завантаження:

sudo systemctl enable nginx

Перевірка стану служби:

sudo systemctl status nginx

25. Перегляд системних журналів

journalctl допомагає переглядати та керувати журналами systemd.

Перегляд усіх журналів:

sudo journalctl

Перегляд журналів для певної служби:

sudo journalctl -u nginx.service

Перегляд журналів після завантаження:

sudo journalctl -b