July 29

Краткий справочник команд для запуска и мониторинга нод 

Дата обновления: 19/08/2024

Предисловие: Здесь я собрал основные команды, которые используются при установке или администрировании нод, также они помогут решить 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 - это инструмент, который позволяет определять и управлять многоконтейнерными приложениями.

Вместо того, чтобы запускать каждый контейнер вручную, вы можете описать всю конфигурацию в одном файле и запустить все контейнеры одной командой.

Установка 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.yml вы указываете образы, сетевые настройки, тома и другие параметры.

Команды Docker Compose:

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

Когда вы находитесь в редакторе 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:

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.

Пример:

Чтобы выйти нажмите клавишу q

Более продвинутая версия утилита htop

Не выходя из утилиты можно убивать процессы.

Установка htop:

sudo apt-get update 
sudo apt-get install htop

Запуск 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) — это командная утилита для сетевой диагностики и мониторинга сетевых соединений. Она используется для отображения различных сетевых статистик, таких как активные подключения, таблицы маршрутизации, статистику интерфейсов и многого другого.

установка netstat:

sudo apt-get update 
sudo apt-get install net-tools

Команда проверки всех портов:

sudo netstat -tunlp

Пример:

Команда проверки конкретного порта (2121):

netstat -tunlp | grep 2121

Пример:

На этом пока все, обнял-приподнял.

Всем удачи и ревардов!

Буду рад замечаниям и пожеланиям

Автор tg @nodecut