Новичкам
January 10, 2022

Часть 4. Терминал Linux

1package & Let's Node

⠀В данной статье рассматриваются следующие группы команд: информация о системе, сеть, прочее.


Содержание

Часть 1

Часть 2

Часть 3

Часть 4

Часть 5


Информация о системе

К содержанию

bash <(wget -qO- -o /dev/null yabs.sh)

⠀Скрипт отображает основную информацию о системе и проверяет скорость чтения и записи дисков, пропускную способность интернет соединения и производительность системы. По умолчанию тестируется всё.

Синтаксис

bash <(wget -qO- yabs.sh) опции

Полезные опции:

  • -f / -d — пропустить тестирование дисков;
  • -i — пропустить тестирование скорости интернета;
  • -g — пропустить тестирование производительности системы;
  • -4 — при тестировании производительности использовать Geekbench 4, вместо Geekbench 5.

Примеры

# Полное тестирование
bash <(wget -qO- -o /dev/null yabs.sh)
# Протестировать только диски
bash <(wget -qO- -o /dev/null yabs.sh) -ig
# Протестировать только скорость интернета
bash <(wget -qO- -o /dev/null yabs.sh) -dg
# Протестировать только производительность системы
bash <(wget -qO- -o /dev/null yabs.sh) -di

df

⠀Отображает информацию об использовании дискового пространства.

Синтаксис

df опции устройство

Полезные опции:

  • -h — вывести размер в привычных человеку единицах измерения (КБ, МБ, ГБ).

Примеры

df -h

nvme

⠀Позволяет контролировать и управлять NVMe накопителями. Наиболее полезная и часто используемая функция — чтение SMART (состояние накопителя).

Требуется установка

sudo apt install nvme-cli -y

Синтаксис

nvme команда диск 

Полезные команды:

  • list — список NVMe дисков;
  • smart-log — прочитать SMART указанного диска.

Примеры

# Список NVMe дисков
nvme list
# Чтение SMART жирнала 1-ого диска
nvme smart-log /dev/nvme0

free

⠀Отображает информацию об использовании оперативной памяти.

Синтаксис

df опции

Полезные опции:

  • -h — вывести размер в привычных человеку единицах измерения (КБ, МБ, ГБ).

Примеры

free -h

lscpu

⠀Отображает информацию о характеристиках процессора.

Примеры

lscpu

cat /etc/*-release

⠀Отображает информацию об операционной системе.

Примеры

cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.3 LTS"
NAME="Ubuntu"
VERSION="20.04.3 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.3 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

htop

⠀Отображает информацию о потреблении системных ресурсов и позволяет управлять процессами.

Требуется установка

sudo apt install htop -y

Примеры

htop

⠀В верхней части отображена информация о системе:

  • 1-… — нагрузка на каждый поток процессора:
    • Синий цвет — процессы низкого приоритета;
    • Зелёный — процессы обычных пользователей;
    • Красный — системные процессы;
    • Голубой — процессы виртуализации.
  • Mem — общий и используемый объём оперативной памяти:
    • Зелёный цвет — используемая память;
    • Синий — память, используемая буферами;
    • Жёлтый — память, выделенная под кэш.
  • Swp — размер файла подкачки и используемый объём;
  • Tasks — статистика по процессам;
  • Load average — средние значения нагрузки за последние 1, 5, 15 минут;
  • Uptime — время работы системы с момента запуска.

⠀В нижней части отображена информация о каждом процессе:

  • PID — ID процесса;
  • USER — владелец процесса;
  • PRI — внутренний приоритет ядра;
  • NI — NICE приоритет от 19 (низкий приоритет) до -20 (высокий приоритет);
  • VIRT — потребляемая виртуальную память;
  • RES — потребляемая физическая память;
  • SHR — потребляемая общая память;
  • S — состояние:
    • S — спящий;
    • R — запущенный.
  • CPU% — сумма потреблений каждого потока процессора (максимально 100*количество_потоков);
  • MEM% — потребляемый в текущий момент процент оперативной памяти;
  • TIME+ — время работы процесса с момента запуска;
  • Command — команда, запустившая процесс.

⠀Для удобства управления утилитой и процессами, помимо поддержки мыши, присутствуют горячие клавиши.

Горячие клавиши:

  • Ctrl+C / q / F10 — закрыть htop;
  • H (Shift+h) — скрыть потоки процессов, оставить только сами процессы;
  • /  — перемещение по списку процессов;
  • F9 / k — завершить процесс, на котором находится курсор, или помеченные процессы (необходимо выбрать сигнал выхода, обычно 2 SIGINT);
  • F4 / \ — сортировка процессов (скрыть все, кроме найденных);
  • F3 / / — поиск процессов (подсвечивать по очереди найденные);
  • F6 — выбрать по какому столбцу сортировать;
  • P — сортировка по задействованию процессора;
  • M — сортировка по задействованию оперативной памяти;
  • I — инвертировать сортировку;
  • u — сортировать процессы исходя из выбранного пользователя;
  • Пробел — пометить/снять пометку с процесса;
  • U (Shift+u) — снять все пометки с процессов.

uptime

⠀Отображает:

  • Текущее время;
  • Время работы системы с момента запуска;
  • Количество залогиненных пользователей;
  • Средние значения нагрузки за последние 1, 5, 15 минут.

Примеры

uptime
 00:00:00 up 91 days,  9:24,  1 user,  load average: 0.13, 0.23, 0.36

Сеть

К содержанию

ss

⠀Отображает статистику сетевых подключений.

Синтаксис

ss опции
ss опции | grep шаблон

Полезные опции:

  • -p — вывести информацию о процессах, использующих сокеты (порты);
  • -n — использовать цифровые представления сокетов вместо имён служб (например 22 вместо ssh);
  • -t — TCP сокеты;
  • -u — UPD сокеты;
  • -l — показать только прослушиваемые сокеты.

Примеры

# Открытые порты
ss -tulpn
# Найти среди открытых портов начинающиеся на 3303
ss -tulpn | grep :3303

iptables, iptables-persistent

iptables управляет сетевым трафиком. iptables-persistent сохраняет правила (по умолчанию правила сбрасываются при перезагрузке сервера).

Требуется установка

sudo apt install iptables iptables-persistent -y

Синтаксис

iptables команда цепочка условие -j действие

Полезные команды:

  • -L — вывести все правила;
  • -A— добавить правило;
  • -D— удалить правило;
  • -F — очистить все правила.

Цепочки:

  • INPUT — входящие пакеты (когда кто-то обращается к серверу);
  • OUTPUT — исходящие пакеты (когда сервер обращается к кому-то);
  • FORWARD — проходящие пакеты (когда проходят через сервер, но не предназначены ему).

Полезные условия:

  • -p — сетевой протокол (TCP, UDP, ICMP или ALL);
  • -s — адрес отправителя пакетов;
  • -d — адрес источника назначения;
  • --dport — порт назначения;
  • --sport — порт источника.

Полезные действия:

  • ACCEPT — разрешить пакеты;
  • DROP — запретить пакеты.

Примеры

# Все правила
iptables -L
# Открыть один порт
iptables -A INPUT -p tcp --dport 9091 -j ACCEPT
# Открыть диапазон портов
iptables -A INPUT -p tcp --dport 9001:9004 -j ACCEPT# Сохранить все правила
sudo netfilter-persistent save
# Очистить все правила
iptables -F

ufw

⠀Брандмауэр, фильтрующий сетевой трафик.

Синтаксис

sudo ufw команда аргументы

Полезные команды:

  • status — посмотреть состояние и действующие правила;
  • enable — включить брандмауэр и добавить его в автозагрузку;
  • reload — перезапустить брандмауэр;
  • reset — сбросить все настройки до состояния по умолчанию;
  • allow — добавить разрешающее правило;
  • deny — добавить запрещающее правило (отправителю отправляется пакет с уведомлением об ошибке);
  • reject — добавить отбрасывающее правило (входящий пакет отбрасывается, а отправителю ничего не отсылается);
  • delete — удалить правило;
  • disable — отключить брандмауэр и удалить его из автозагрузки.

Примеры

# Проверить состояние
sudo ufw status
# Выключен
Status: inactive

# Включен
Status: active
...
# Включить брандмауэр
sudo ufw enable

⠀Чтобы избежать потерю подключения к серверу, необходимо открыть 22 порт командой ниже.

# Открыть порт для любого протокола
sudo ufw allow 22
sudo ufw allow 9090
# Открыть порт только для TCP протокола
sudo ufw allow 9090/tcp
# Открыть порт только для UPD протокола
sudo ufw allow 9090/upd
# Разрешить исходящий и запретить входящий трафик
sudo ufw allow out 9090/upd
sudo ufw deny in 9090/upd
# Удалить правило
sudo ufw delete allow out 9090/upd
sudo ufw delete deny in 9090/upd
# Перезапустить брандмауэр
sudo ufw reload
# Отключить брандмауэр
sudo ufw disable

speedtest-cli

⠀Проверяет пропускную способность интернет соединения.

Требуется установка

sudo apt install speedtest-cli -y

Синтаксис

speedtest-cli опции

Полезные опции:

  • --simple — отобразить только пинг, скорость скачивания и отдачи.

Примеры

speedtest-cli --simple
Ping: 14.596 ms
Download: 789.05 Mbit/s
Upload: 534.10 Mbit/s

ping

⠀Проверяет доступность удалённого узла (IP или домен) в сети. В частности используется для проверки подключения интернета.

Синтаксис

ping опции адрес_узла

Полезные опции:

  • -6 — использовать только ipv6.

Примеры

ping www.google.com

Прочее

К содержанию

echo

⠀Выводит текст в терминал.

Синтаксис

echo опции текст

Полезные опции:

  • -n — не делать перевод строки в конце текста;
  • -e — обрабатывать символы, экранированные обратной косой чертой (новая строка, табуляция, цвета и т. д.).

Примеры

echo "Hello world!"
Hello world!
echo "Hello\nworld!"
Hello\nworld!
echo -e "Hello\nworld!"
Hello
world!
echo "Hello
world!"
Hello
world!
text="world!
..."
echo "Hello $text"
Hello world!
...

printf

⠀Выводит текст в терминал по аналогии с printf() из языка программирования C. Имеет больший функционал по сравнению с echo. В отличие от echo по умолчанию не делает перевод строки в конце текста.

Синтаксис

printf формат аргументы

Формат может содержать:

  • Обычные символы — просто выводятся как есть;
  • Символы с обратной косой чертой — обрабатываются и выводятся:
    • \\ — символ обратной косой черты;
    • \n — новая строка;
    • \t — горизонтальная табуляция.
  • Преобразования типов — заменяются аргументами и выводятся:
    • %s — строка;
    • %d / %i — десятичное целое число;
    • %f — число с плавающей точкой;
    • %x — восьмеричное число;
    • %o — шестнадцатиричное число;
    • %% — символ %.

Примеры

printf "Hello world!\n"
Hello world!
printf "%s\n" "Hello world!"
Hello world!
printf "%d\n" "666"
666
# Округлить число с плавающей точкой
printf "%.2f\n" 3.1415926535
3.14
printf "%.1f\n" "6.66"
6.7
# Округление до целого числа
printf "%.0f\n" 6.66
7
printf "%s\t%d\t%.2f\n" "Hello world!" "666" 3.1415926535
Hello world!    666     3.14
text="Hello world!"
int="666"
pi=3.1415926535
printf "%s\n%d\n%.2f\n" "$text" "$int" "$pi"
Hello world!
666
3.14

git

⠀Система контроля версий и совместной разработки проектов. В основном используется для работы с GitHub.

Требуется установка

sudo apt install git -y

Синтаксис

git опции команда аргументы

Полезные опции:

  • -C — использовать для работы указанную директорию вместо текущей.

Полезные команды:

  • clone — скачать указанный репозиторий на сервер;
  • pull — обновить локальный проект на основе внесённых изменений в источнике;
  • branch — управление ветками проекта;
  • checkout — переключиться между ветками;
  • clean — удалить неиспользуемые проектом файлы.

Примеры

# Клонировать репозиторий
git clone https://github.com/SecorD0/utils.git
# Клонировать репозиторий в папку с другим названием
git clone https://github.com/SecorD0/utils.git pack_of_utils
# Для использования команд ниже необходимо перейти в директорию
# с проектом или указывать для каждой путь в опции -C
cd utils
# Посмотреть текущую ветку
git branch
* main
# Посмотреть все ветки
git branch -a
* main
  remotes/origin/HEAD -> origin/main
  remotes/origin/main
# Обновить локальные файлы
git pull# Переключиться на другую ветку
git checkout test
# Удалить неиспользуемые проектом файлы
git clean

tmux

⠀Позволяет запускать несколько сессий на одном сервере. Можно провести аналогию с несколькими окнами в Windows. При отключении от сервера активные процессы в сессиях не прекращают работу.

Понятия:

  • Сессия — ещё один терминал сервера (1 сервер = 1+ сессии);
  • Окно — ещё один «рабочий стол» сессии (1 сессия = 1+ окно);
  • Панель — область для работы в окне (1 окно = 1+ панелей).

Требуется установка

sudo apt install tmux -y

Синтаксис

tmux команда опции аргументы

Полезные команды:

  • new — создать новую сессию;
  • attach — подключиться к существующей сессии;
  • detach — отключиться от текущей сессии;
  • ls — список открытых сессий;
  • rename-session — переименовать сессию;
  • kill-session — завершить сессию;
  • kill-server — завершить все сессии.

Полезные опции:

  • -t — название или часть названия сессии, к которой будет применяться действие;
  • -s — название создаваемой сессии.

⠀Для управления активными окнами существуют горячие клавиши, для их использования необходимо нажать сочетание клавиш Ctrl+B с включённой английской раскладкой, а затем нажать горячую клавишу.

Горячие клавиши:

  • d — отключиться от текущей сессии (аналог команды tmux detach);
  • % — разделить текущую панель по горизонтали;
  • " — разделить текущую панель по вертикали;
  • / / /  — перейти на панель, находящуюся в стороне, куда указывает стрелка;
  • Ctrl+стрелка — изменить размер текущей панели;
  • o — перейти на следующую панель;
  • ; — переключаться между текущей и предыдущей панелью;
  • x — закрыть текущую панель;
  • c — открыть новое окно;
  • w — выбрать окно из списка;
  • 0-9 — открыть окно по его номеру;
  • , — переименовать текущее окно.

Примеры

# Создать сессию
tmux new -s session
# Отключиться командой от текущей сессии
tmux detach
# Список сессий
tmux ls
# Переименовать сессию
tmux rename-session -t session session1
# Подключиться к сессии
tmux attach -t sess
tmux attach -t session1
# Закрыть активную панель (закрывает окно и сессию, если панель одна) 
exit
# Завершить последнюю сессию
tmux kill-session
# Завершить определённую сессию
tmux kill-session -t session1
# Завершить все сессии
tmux kill-server

date

⠀Позволяет работать с датой и временем. По умолчанию используется часовой пояс, установленный на сервере.

Синтаксис

date опции +формат

Полезные опции:

  • -d — вывод даты и времени исходя из указанных условий;
  • -u — вывод даты и времени в UTC формате.

Полезные форматы:

  • %H — часы (00…23);
  • %M — минуты (00…59);
  • %S — секунды (00…59);
  • %a — день недели словом в короткой форме (Mon);
  • %A — день недели словом в длинной форме (Monday);
  • %b — месяц словом в короткой форме (Jan);
  • %B — месяц словом в длинной форме (January);
  • %d — день месяца (01…31);
  • %m — месяц числом (01…12);
  • %y — две последних цифры года (22);
  • %Y — полный год (2022);
  • %j — день года (001...366);
  • %q — квартал года (1…4);
  • %Z — аббревиатура временной зоны (UTC, CET, MSK);
  • %n — новая строка;
  • %t — знак табуляции;
  • %D — дата в формате %m/%d/%y;
  • %T — время в формате %H:%M:%S.

Примеры

date
Sat 01 Jan 2022 12:00:00 AM CET
date -u
Fri 31 Dec 2021 11:00:00 PM UTC
# UNIX Timestamp to DATE
date -d "@1640991600"
Sat 01 Jan 2022 12:00:00 AM CET
date +"%H:%M:%S %d.%m.%y"
00:00:00 01.01.22
date -d "@1640991665" +"%H:%M:%S %d.%m.%y"
00:01:05 01.01.22
date -d "2 days" +"%H:%M:%S %d.%m.%y"
00:00:00 03.01.22
# Изменить часовой пояс
TZ="Europe/Moscow" date -d "@1640991665" +"%H:%M:%S %d.%m.%y"
02:01:05 01.01.22

Читать далее

К содержанию

⠀В пятой, заключительной, части рассматриваются операторы, запуск скриптов, а также скрипты нашей команды.

Часть 5. Терминал Linux


Полезные ссылки

К содержанию

Losst | Пингвинус | Часовые пояса


Благодарности

К содержанию

Losst, Пингвинус — разнообразные статьи по Linux

Команда 1package — написание статьи

Выразить благодарность