Краткий справочник команд для запуска и мониторинга нод
Предисловие: Здесь я собрал основные команды, которые используются при установке или администрировании нод, также они помогут решить 80% всех проблем.
Теперь ты сможешь переводить команды, которые вводишь в консоль
Команды для консоли будут представлены в виде:
команда
Описание команды
Больше базы о докере https://habr.com/ru/companies/ruvds/articles/438796/
Установка и обновление базового ПО
В первую очередь мы должны обновить ПО на сервере до последней версии + установить необходимые программы. Эти команды выполняются от имени администратора.
sudo <command>
Выполнение команды от имени суперпользователя, т.е. запуск от имени администратора
sudo -i
команда перехода в режим администратора, т.е. все команды будут выполняться от имени администратора или рут (root)
Обычно первая команда при запуске ноды на новом сервере это:
sudo apt-get update -y && sudo apt upgrade -y && sudo apt-get install make build-essential unzip lz4 gcc git jq -y
Разберем ее. Запуск от имени администратора следующих команд:
- apt-get update обновляет локальный кэш списка доступных пакетов из репозиториев
-y
автоматически отвечает "да" на все запросы подтвержденияapt upgrade -y
обновляет все установленные пакеты до последних доступных версий, автоматически соглашаясь на все запросы.apt-get install make build-essential unzip lz4 gcc git jq -y
- устанавливает указанные пакеты:build-essential
набор программ и инструментов, необходимых для компиляции программного обеспечения на вашей системеunzip
(утилита для распаковки файлов в формате zip),lz4
( утилита для сжатия и распаковки файлов с использованием алгоритма LZ4)gcc
(основной компилятор для языков C и C++)git
(утилита контроля версий)jq
(утилита для обработки JSON)&&
- знак соединяющий несколько команд вместе
Докер (Docker)
Докер - основной инструмент при работе с нодами. По сути - это платформа в которой мы работаем с образами, папками и контейнерами. О них позже.
В качестве простого примера, докер похож на программу-эмулятор СД привода, как DAEMON Tools. С помощью нее мы запускаем образ СД диска, внутри образа есть папки и отдельные программы.
Перед установкой ноды мы всегда устанавливаем/обновляем докер:
sudo apt install -y ca-certificates curl gnupg lsb-release
установка необходимых пакетовcurl
,gnupg
иlsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
загрузка и добавление ключ GPG для репозитория Docke
echo «deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable» | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
добавление репозитория Docker в список источников APT вашей системы, используя ранее загруженный ключ GPG для проверки подлинности пакетов
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io
обновление списка пакетов и устанавка Docker и его компоненты
sudo usermod -aG docker $USER
добавление текущего пользователя в группуdocker
, что позволяет пользователю выполнять команды Docker без использованияsudo
newgrp docker
применение изменений в группах пользователя, чтобы они вступили в силу в текущем сеансе без необходимости выхода и повторного входа
docker --version
проверка версии установленного Docker
Docker Compose
Docker Compose - это инструмент, который позволяет определять и управлять многоконтейнерными приложениями.
Вместо того, чтобы запускать каждый контейнер вручную, вы можете описать всю конфигурацию в одном файле и запустить все контейнеры одной командой.
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
загрузка Docker Compose и сохранение его в /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
присвоение прав на исполнение файла
docker-compose --version
проверка версии установленного Docker Compose
Основные концепции Docker Compose:
Это файл, в котором описываются все сервисы (контейнеры), которые необходимо запустить.
В файле docker-compose.yml
вы указываете образы, сетевые настройки, тома и другие параметры.
docker-compose up
Запускает все контейнеры, описанные в docker-compose.yml
docker-compose down
Останавливает и удаляет все контейнеры, описанные в docker-compose.yml
Директории (папки)
Небольшая подготовка, чтобы сразу упорядочить систему и не навалить все в кучу можно использовать директории.
mkdir <DIR>
создать директорию.
mkdir dir1
создать директорию с именем dir1.
Директория по сути классическая папка. Можно создавать папку в папке, переходить между папками, переименовывать их и тд.
Все это нам знакомо по Виндовс.
Базовые команды для директории:
pwd
показать текущий адрес папки
ls
показать содержимое папки
ls -l
показать содержимое папки с детальной информацией
rmdir <DIR>
удалить пустую папку. Команда rmdir не будет выполнена, если в удаляемой папке находятся другие каталоги или файлы.
rm -rf <DIR>
удалить папку, даже если там есть файлы. Также используется для удаления отдельных файлов, образов или контейнеров.
mv old_name new_name
переименовать папки в new_name. Также может быть использована для перемещения папки, например mv dir /path/to/destination/
cp -r <DIR> <адрес>
копировать папку <DIR> в место <адрес>
du -sh .morph
узнать вес конкретной папки, в нашем случае ноды Морф
Навигация
Команды для путешествия внутри папок:
pwd
показать текущий адрес папки
ls
показать содержимое папки
cd
Команда cd без уточнения перекинет нас на самый верхний уровень. Как на картинке ниже, в самый корень системы.
cd /адрес
Также с помощью команды cd переходим в другие папки по адресу.
cd /home/user1
Переход в папку user1
Если эта папка находится в текущей папке (например, если вы уже в папке хоум), то можно использовать cd user1
.
cd ..
переход на уровень выше
В примере это переход с папки юзер1 в папку хоуме.
cd -
переход в предыдущую папку
Образ (image)
Образ - это шаблон полноценного приложения, включает в себя операционную систему, приложения, библиотеки, зависимости и конфигурационные файлы.
При запуске ноды мы скачиваем образ и запускаем у себя на сервере.
Грубо: образ после распаковки (запуска) превращается в контейнер/контейнеры.
docker images
показать список всех образов на сервере
docker pull <image>
загрузить образ на сервер
docker rmi <image>
удалить образ
docker rmi -f <image>
принудительно удалить образ, даже если он работает
docker inspect <image>
получить подробную информацию об образе
docker history <image>
показать историю изменения образа
Контейнер
Контейнер - это запущенное экземпляр (приложение) из образа. Он изолирован от других контейнеров.
docker ps
показать список работающих контейнеров
docker ps -a
показать все контейнеры, включая остановленные
docker ps -s
показать размеры контейнеров
docker ps -a -s
показать все контейнеры, включая остановленные + их размеры
Далее <ID> - это айди конкретного контейнера
docker logs <ID>
получить логи контейнера
Там мы можем проверить нормально работает контейнер или нет
docker inspect <ID>
показать подробную информацию о контейнере
docker stop <ID>
остановить контейнер, например docker stop 13000c0cd01b
docker container kill <ID>
быстро остановить контейнер, возможно некорректно
docker start <ID>
запустить остановленный контейнер
docker rm <ID>
удалить контейнер
docker stop <ID> && docker rm <ID>
остановить и удалить контейнер
Оператор &&
используется в командной строке Unix-подобных систем (например, Linux и macOS) для объединения нескольких команд.
Он обеспечивает выполнение следующей команды только в том случае, если предыдущая команда завершилась успешно.
docker rm -f <ID>
принудительно остановить контейнер, который работает и удалить его
Файлы
Иногда необходимо провести операции с файлами, чтобы нода работала так как надо. В этом нам поможет команда nano
Редактор nano
— это простой текстовый редактор (отдельная утилита) в командной строке, который позволяет легко редактировать текстовые файлы. Вот как использовать nano
для работы с файлами, используя пример .env
файла.
Установить нано, если его нет на вашем серваке:
sudo apt-get update
sudo apt-get install nano
nano .env
Если файла .env
не существует, команда nano .env
создаст его. Если файл уже существует, nano
откроет его для редактирования. Управление курсором стрелками с клавиатуры.
Когда вы находитесь в редакторе nano
, вы можете использовать несколько команд для редактирования и управления файлом:
- Ctrl + S: Сохранить файл (попросит подтвердить имя файла, нажмите Enter для подтверждения).
- Ctrl + X: Выйти из
nano
(если файл был изменен,nano
попросит вас подтвердить сохранение). - Ctrl + W: Поиск текста в файле.
- Ctrl + K: Вырезать текущую строку.
- Ctrl + U: Вставить вырезанную строку.
Файлы также как папки можно перемещать, переименовывать, копировать и удалять.
Screen
Screen — это утилита в Linux, которая позволяет вам запускать и управлять несколькими сессиями терминала внутри одного окна.
Представьте, что вы можете открыть несколько вкладок в браузере и переключаться между ними, а также закрыть браузер, не потеряв открытые вкладки. Screen делает что-то похожее, но для терминалов.
sudo apt-get update
sudo apt-get install screen
- Продолжение работы: Если вы подключены к серверу по SSH и ваше соединение разрывается, сессии Screen продолжат работать, и вы сможете подключиться к ним позже.
- Много задач: Вы можете запустить несколько задач в разных сессиях и переключаться между ними.
- Отладка и мониторинг: Вы можете оставить длительные задачи (например, компиляцию или резервное копирование) работать в отдельных сессиях и периодически проверять их статус.
screen -ls
показать список всех активных сессий
- Сессия
screen
находится в состоянии "detached", когда она запущена, но к ней в данный момент никто не подключен. Процессы в такой сессии продолжают работать, но сам терминал свободен и не отображает вывод этой сессии - Пример:
10661.nubit (Detached)
— эта сессияnubit
была отсоединена в 14:22:01 и к ней в данный момент никто не подключен - Сессия
screen
находится в состоянии "attached", когда кто-то активно подключен к этой сессии и может видеть вывод и взаимодействовать с процессами внутри нее. - Пример:
4716.ritual (Attached)
— эта сессияritual
была подключена в 12:44:25 и в данный момент к ней кто-то подключен и работает.
screen -S NAME
Создать новую сессию с именем NAME
. Если имя не указано, будет присвоено случайное имя
screen -R NAME_OR_ID
присоединиться к сессии с указанным именем или ID
screen -X -S NAME_OR_ID quit
удалить сессию с указанным именем или ID
Опция -X
позволяет вам отправлять команды в запущенную сессию Screen. Вместо того чтобы переключаться в сессию и выполнять команду вручную, вы можете использовать -X
, чтобы выполнить команду непосредственно из текущего терминала. В данном случае команда quit
передается сессии Screen, чтобы завершить ее.
Опция -S
указывает имя или идентификатор сессии Screen, к которой вы хотите применить команду. Screen должен знать, к какой именно сессии следует применить команду, поэтому мы используем -S
для точного указания цели.
Проверка нагрузки на сервер
Для мониторинга нагрузки на сервер и проверки использования ресурсов, таких как процессор (ЦП), оперативная память (ОЗУ) и дисковое пространство, можно использовать различные команды. Вот два основных инструмента:
1. Проверка нагрузки на ЦП
Команда ps
используется для отображения информации о работающих процессах. Для проверки нагрузки на ЦП с детализацией по процессам можно использовать:
ps -AH -o pid,pcpu,command
-A
— Показывает все процессы.-H
— Отображает процессы в иерархическом виде (с иерархией).-o pid,pcpu,command
— Форматирует вывод, чтобы показать идентификатор процесса (PID), использование ЦП (pcpu) и команду, которая запустила процесс.
Здесь видно, что процесс с PID 123 использует 2.5% ЦП, а команда myscript.py
запущена с помощью Python.
2. Проверка нагрузки на ОЗУ и ЦПУ
top
Команда top
позволяет отслеживать использование ЦП и ОЗУ в реальном времени. Она обновляет информацию каждые несколько секунд, и можно настроить интервал обновления.
Чтобы изменить период обновления (по умолчанию 3 секунды), нажмите клавишу d
в окне top
. Затем введите желаемый интервал в секундах и нажмите Enter
.
Более продвинутая версия утилита htop
Не выходя из утилиты можно убивать процессы.
sudo apt-get update
sudo apt-get install htop
htop
Используйте стрелки для навигации.
- Нажмите
F6
, чтобы изменить порядок сортировки (например, по использованию процессора или памяти). - Нажмите
F9
, чтобы завершить процесс (kill process). - Нажмите
q
, чтобы выйти изhtop
.
3.
Проверка использования файловой системы
Команда df
показывает, сколько места на диске используется и сколько свободно для каждой файловой системы.
df -h
Здесь вы видите размер файловых систем, сколько места занято, сколько доступно и процент использования.
Выполните следующую команду для вывода списка всех папок в текущей директории, отсортированного по размеру:
du -h --max-depth=1 | sort -hr
Проверка используемых портов
docker ps -a
Просмотр всех контейнеров (включая остановленные) и используемых портов
SS
ss
(Socket Statistics) — это современная утилита для получения информации о сетевых соединениях и сокетах.
sudo ss -tunlp
netstat
netstat
(сокращение от network statistics) — это командная утилита для сетевой диагностики и мониторинга сетевых соединений. Она используется для отображения различных сетевых статистик, таких как активные подключения, таблицы маршрутизации, статистику интерфейсов и многого другого.
sudo apt-get update
sudo apt-get install net-tools
sudo netstat -tunlp
Команда проверки конкретного порта (2121):
netstat -tunlp | grep 2121
На этом пока все, обнял-приподнял.