Инструменты Linux
Лекция посвящена основным инструментам для эффективной работы в Linux-терминале. Мы рассмотрим всё: от настройки окружения до продвинутых методов диагностики проблем.
Часть 1: Подготовка и окружение
Слепая печать
Первый и самый важный навык — умение печатать, не глядя на клавиатуру.
- Преимущества: Увеличение скорости, меньше ошибок, полный контроль над терминалом.
- Сложности: Первые месяцы будут тяжелыми, но результат того стоит.
Инструменты для тренировки:
GNU Typist
(gtypist
) — консольный тренажер. Устанавливается черезapt-get install gtypist
илиbrew install gtypist
.monkeytype
— современный онлайн-тренажер.www.keybr.com
— еще один популярный онлайн-тренажер.
Эмулятор терминала
Стандартные терминалы часто бедны на функции. Хороший терминал должен иметь:
- Вкладки (табы).
- Разделение окна (split panels).
- Копирование в буфер обмена просто при выделении текста.
- Поддержка кликабельных ссылок.
- Система плагинов для расширения функционала.
- Прочие "рюшечки" (темы, прозрачность и т.д.).
Рекомендуемые терминалы:
- macOS:
iTerm2
- Linux:
Terminator
,Kitty
,Konsole
- Windows 10/11:
Windows Terminal
- Windows (условно-бесплатный):
MobaXterm
(также включает SSH-клиент, X-сервер и сетевые инструменты).
Моноширинные шрифты
Для удобства чтения кода в терминале необходимы качественные моноширинные шрифты.
- Source Code Pro (Adobe)
- Inconsolata (Google)
- Anonymous Pro
Ссылки для скачивания приведены в презентации.
Командные оболочки (Shell)
Это интерпретатор команд, с которым вы взаимодействуете в терминале.
- bash (Bourne-Again SHell): Универсальный стандарт. Лучший выбор для разнородной инфраструктуры.
- zsh (Z Shell): Обладает расширенными возможностями и богатой экосистемой плагинов. Идеален для локальной разработки и контролируемой инфраструктуры. Фреймворк
Oh My Zsh
делает настройку zsh простой и приятной. - fish (Friendly Interactive SHell): Современный shell с удобством "из коробки". Выбирается по тем же причинам, что и zsh.
Часть 2: Основы командной строки
Структура команд
syscall exec
— ищет исполняемый файл по путям, указанным в переменной окружения$PATH
.which <команда>
илиtype <команда>
— показывают полный путь к исполняемому файлу команды. Флаг-a
покажет все возможные пути в$PATH
.- Флаги команд не стандартизированы, но есть соглашения:
-v
/--version
— показать версию.-h
/--help
— показать справку.-y
/-f
— пропустить подтверждение (yes/force).
Справка man
Основной источник информации — команда man
(manual).
- Пейджер: По умолчанию для просмотра используется
less
. Можно изменить переменной окружения$MANPAGER
(например,MANPAGER=cat
). - Основные клавиши в
less
:h
— помощь.PgUp
,PgDown
,↓
,↑
— навигация./KEYWORD
— поиск.N
,n
— переход к следующему/предыдущему совпадению.g
— в начало документа.G
— в конец документа.
man <раздел> <команда>
— например,man 1 bash
(справка по bash из раздела "пользовательские команды").man -P 'less +/KEYWORD' bash
— открыть man с поиском по ключевому слову.
Управление процессами
Ctrl + C
— послать сигналSIGINT
(завершение процесса).Ctrl + \
— послать сигналSIGQUIT
(завершение с дампом памяти).Ctrl + Z
— послать сигналSIGTSTP
(приостановка процесса).fg
— вернуть приостановленный процесс на передний план.bg
— запустить приостановленный процесс в фоновом режиме.stty -a
— посмотреть и перенастроить настройки терминала.
Управление вводом/выводом (I/O Redirection)
- Потоки данных:
stdin
(0) — стандартный вход.stdout
(1) — стандартный выход.stderr
(2) — стандартный вывод ошибок.
- Перенаправление:
команда > файл
— записатьstdout
в файл (перезаписать).команда >> файл
— дописатьstdout
в конец файла.команда 2> файл
— записатьstderr
в файл.команда &> файл
— записатьstdout
иstderr
в файл.команда 2>&1
— перенаправитьstderr
вstdout
.команда | другая_команда
— передатьstdout
первой команды наstdin
второй.
- Специальные файлы:
/dev/null
— "черная дыра"./dev/zero
— источник нулей./dev/urandom
— источник псевдослучайных чисел.
Полезные помощники
- Автодополнение (completion): Клавиша
TAB
— ваш лучший друг.- Одно нажатие — дополнить команду/файл.
- Двойное нажатие — показать все возможные варианты.
- История команд (
~/.bash_history
,~/.zsh_history
):Ctrl + R
— реверсивный поиск по истории.history | grep <ключевое_слово>
— поиск по истории.sudo !!
— выполнить предыдущую команду сsudo
.!$
— подставить последний аргумент предыдущей команды.
Ветвления, циклы и подоболочки (Subshell)
;
— разделитель команд (выполняются последовательно).- Циклы и условия:
while true; do ...; done for i in $(seq 1 10); do echo $i; done if [ $(wc -l file.txt) -gt 3 ]; then ...; fi
read
— встроенная команда для чтения ввода в переменные.- Подоболочка (Command Substitution):
$(команда)
или`команда`
— вывод команды подставляется в строку.
[
— это бинарник, а не синтаксис shell. Подробнее:man [
илиman test
.
Часть 3: Полезные команды и утилиты
Find и многопоточность
find
— мощный поиск файлов и директорий.- Пример:
find /etc -type f -name "nginx*"
- Пример:
xargs
— передает результаты изstdin
в аргументы другой команды.-P <N>
— запуск до N процессов параллельно.-n1
— передавать по одному аргументу за раз.- Пример:
find ... | xargs -P10 -n1 md5sum
GNU parallel
— более мощная альтернативаxargs
для параллельного выполнения.
Управление сессиями: screen и tmux
Позволяют запускать процессы, которые продолжают работать после разрыва соединения.
-
screen
:screen
— создать новую сессию.Ctrl + A, D
— отключиться от сессии (detach).screen -ls
— список сессий.screen -r <session>
— подключиться к сессии.
-
tmux
(рекомендуется):tmux
— создать сессию.Ctrl + B, D
— отключиться.tmux ls
— список сессий.tmux a -t <session>
— подключиться.- Интеграция с
iTerm2
:tmux -CC
.
-
watch -d -n1 "команда"
— выполняет команду раз в секунду и подсвечивает различия.
Редактирование текста
- Vim:
- Мощный, вездесущий, имеет крутую кривую обучения.
vimtutor
— встроенный интерактивный учебник. Пройдите его!- Основы:
i
— вход в режим вставки,ESC
— возврат в нормальный режим,:wq
— сохранить и выйти,:q!
— выйти без сохранения. vimdiff file1 file2
— сравнение файлов.
- Emacs: Другой мощный редактор. "Если вы знаете, что это, скорее всего, вам не нужна эта лекция".
- Система контроля версий Git: Обязательный инструмент для любой современной IT-профессии.
Потоковая обработка текста
Мощные утилиты для фильтрации и преобразования текстовых потоков. Не используйте их для построения продакшен-процессов!
grep
— фильтрация строк по регулярному выражению.awk
— целый язык для обработки текста, основанный на колонках.sed
— потоковый текстовый редактор (замена, удаление строк и т.д.).cut
— извлечение конкретных колонок.head
/tail
— вывод начала/конца файла.tr
— замена или удаление символов.wc
— подсчет строк, слов, символов.sort
— сортировка строк.uniq
— фильтрация повторяющихся строк.
Тренажеры: grepexercises
, sedexercises
, awkexercises
(устанавливаются через pip
).
Практика: The Command Line Murders
— текстовый квест в терминале для отработки навыков. (https://github.com/veltman/clmystery)
Часть 4: Диагностика и поиск проблем
Методология и ресурсы
- Брендан Грегг (Brendan Gregg) — гуру производительности.
- Его сайт — кладезь информации: https://www.brendangregg.com/linuxperf.html
- Книга "Systems Performance: Enterprise and the Cloud" — must-read для углубленного изучения.
На его сайте можно найти бесценные диаграммы выбора инструментов:
- Linux Observability Tools
- Linux Static Performance Tools
- Linux Benchmarking Tools
- Linux Tuning Tools
Мини-топ полезных утилит
- Мониторинг процессов и системы:
top
/htop
— интерактивный просмотр процессов.atop
— расширенный мониторинг, может записывать данные в файл.pidof
— найти PID по имени процесса.ps fauxw | less
— детальный список процессов.
- Диски и файловая система:
df -h
/df -ih
— место на дисках и inodes.du -sh /path/*
— размер директорий.iostat -x 1
— статистика ввода-вывода.
- Сеть:
ss -s
/netstat -ntlp
— статистика сокетов и открытые порты.ping
/traceroute
/mtr
— диагностика сетевой связности.tcpdump
— "сниффер" сетевых пакетов.ethtool eth0
— настройки и статистика сетевого интерфейса.
- Прочее:
lsof -i:포트
/lsof -p $PID
— список открытых файлов сокетов процессом.strace -fp $PID
/strace $cmd
— трассировка системных вызовов.dmesg -T
— просмотр логов ядра.perf top -F99
— профилирование системы в реальном времени.curl
— мастер на все руки для работы с HTTP/сетью.
Заключение
Освоение терминала и его инструментов — это путь к настоящей эффективности в Linux. Начинайте с основ: печать, терминал, справка man
. Постепенно внедряйте в свою практику более сложные инструменты, такие как vim
, tmux
, grep
, awk
и sed
. Не бойтесь экспериментировать и использовать ресурсы, подобные сайту Брендана Грегга, для углубления знаний.
Удачи в освоении мощного мира Linux-инструментов!