Основные команды администрирования сервера 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