Справочник
Все команды и инструменты, которые встречаются в заданиях: что делают, все нужные опции, примеры и подводные камни — вместо man.
Файлы, права, пользователи
ACL: getfacl и setfaclПрава для отдельных пользователей и групп сверх rwx владельца/группы/остальных; маска и default ACLbasename, dirname, realpath, readlinkРазбор путей — имя файла, каталог, абсолютный путь, куда ведёт ссылкаcapabilities: getcap и setcapВыдать программе отдельную привилегию root без setuid — setcap cap_net_bind_service=ep, getcap -r, setcap -rchageСроки действия пароля и учётной записи — chage -l, -M, -m, -W, -I, -E, -d 0 и поля /etc/shadowchmodПрава доступа к файлам и каталогам — числами (644) и буквами (u+x), плюс setuid, setgid и sticky-битchownСмена владельца и группы файла; chgrp — только группыcpКопирование файлов и каталогов — с правами, владельцами, датами и ссылкамиddПобайтовое копирование блоками — файлы заданного размера, вырезка байтов, образы дисковfindПоиск файлов по имени, типу, размеру, времени изменения и правамid, groups, whoamiКто я и в каких группах — UID, GID, список групп текущего процесса или любого пользователяlnЖёсткие и символические ссылки на файлы и каталогиlsСписок файлов каталога — права, владельцы, размеры, даты, сортировкаmkdirСоздание каталогов — сразу с родителями и нужными правамиmkfs, tune2fs, dumpe2fsСоздать ext4 (в том числе в файле-образе), задать метку, резерв и число inode, посмотреть параметры ФСmktempБезопасное создание временных файлов и каталогов с уникальными именамиmountПодключение файловых систем — mount, umount, опции -o, /etc/fstab, findmnt, loop-устройства и bindmvПеремещение и переименование файлов и каталоговrmУдаление файлов и каталогов — без корзины и без возвратаsplitРазрезать файл на части по строкам, байтам или числу кусков и собрать обратноstatВсе метаданные файла — права, владелец, размер, inode, времена — в нужном форматеsuСменить пользователя в оболочке — su, su -, su -c, su -s; чем отличается от sudo -isudoЗапуск команд от имени root или другого пользователя; правила в /etc/sudoers и visudotouchСоздать пустой файл или поменять время доступа и изменения файлаtruncate и fallocateОбрезать или увеличить файл до нужного размера, создать разреженный или заранее выделенный файлumaskМаска прав по умолчанию — какие биты снимаются у новых файлов и каталоговuseradd и usermodСоздание и изменение пользователей и групп — useradd, usermod, groupadd, passwd, chage, userdelwhich, type, command -vЧто именно запустится по имени команды — файл из PATH, встроенная команда, алиас или функцияxargsПревращает строки со стандартного ввода в аргументы команды
Обработка текста
awkОбработка текста по столбцам — выбор полей, фильтры, подсчёты и суммыcat и tacВывести файл, склеить несколько файлов, пронумеровать строки, показать невидимые символыcolumnВыровнять текст в таблицу, задать заголовки, переставить и спрятать столбцы, вывести JSONcommСравнить два отсортированных списка — что есть только в первом, только во втором, в обоихcutВырезать из каждой строки столбцы по разделителю или символы по позицииdatamashСтатистика по столбцам из командной строки — суммы, средние, медианы, группировкаdiff, cmp и patchСравнить файлы и каталоги построчно или побайтно, сделать патч и применить егоgrepПоиск строк по шаблону в файлах и выводе командhead и tailПервые и последние строки файла, срезы по номерам и слежение за растущим логом через tail -fjoinОбъединить два файла по общему полю, как JOIN в SQL — внутреннее, внешнее, «без пары»nlПронумеровать строки — все, только непустые или по шаблону, со своим форматом номераpasteСклеить файлы построчно в столбцы или собрать все строки файла в одну через разделительrevРазвернуть каждую строку задом наперёд; трюк «последнее поле» и разворот порядка полейsedПотоковый редактор — замена по регулярке, удаление и вставка строк, правка файлов на местеseqПоследовательность чисел — с шагом, обратным счётом, дробями, нулями впереди и своим форматомshufПеремешать строки, выбрать случайные строки или числа, сгенерировать выборку с повторамиsortСортировка строк — по алфавиту, числам, размерам, версиям и отдельным столбцамteeРаздвоить поток — вывести на экран и одновременно записать в файл, в том числе под sudotrПосимвольная замена и удаление символов — регистр, переводы строк, лишние пробелыuniqСхлопнуть соседние одинаковые строки, посчитать повторы, найти дублиwcПосчитать строки, слова, байты и символы в файлах или выводе командыxxd и odПосмотреть байты файла в hex, восьмеричном и символьном виде; собрать файл обратно из hex-дампаРегулярные выраженияBRE, ERE и PCRE на практике — классы, якоря, квантификаторы, группы, обратные ссылки, жадность
Bash
echo и printfВывод текста из скрипта — echo с его ловушками и printf с форматами %s %d %f %x %q %bgetoptsРазбор коротких опций скрипта (-v, -o файл) — строка опций, OPTARG, OPTIND, тихий режим и сравнение с getoptreadЧтение строки из stdin или файла в переменные — опции -r -p -s -t -n -a -d, IFS и цикл по строкамset и shoptРежимы bash — set -euo pipefail, -x для отладки, noclobber, set -- и опции shopt для шаблоновshellcheckСтатический анализатор shell-скриптов — находит ошибки с кавычками, условиями и переносимостьюАрифметика в bashЦелочисленные вычисления — $(( )), (( )), let, expr, системы счисления, а дробные числа — через awkКоды возврата$?, цепочки && и ||, set -e/-u/-o pipefail, exit и trap — как скрипт узнаёт об ошибкахПеременные и подстановкиПеременные bash, значения по умолчанию, обрезка строк, $(…), $((…)), кавычки и массивыПеременные окружения: env, export, printenvОкружение процесса — export, env -i и env VAR=…, printenv, где задавать переменные и какие файлы читает bashПеренаправления и конвейерыКуда идёт вывод команды — >, >>, 2>&1, &>, here-doc, конвейер | и pipefailУсловия и циклыif, [[ ]], test, case, циклы for/while/until, чтение файла построчно, break и continueФункции в bashОбъявление функций, аргументы $1 $@ $#, local, return и вывод результата, source и export -f
Процессы и система
/procВиртуальная ФС с данными ядра — аргументы, окружение и открытые файлы процесса, память, нагрузкаapt и dpkgПакеты в Debian и Ubuntu — установка, удаление, поиск, версии, какому пакету принадлежит файлcron и crontabЗапуск команд по расписанию — формат crontab, команды crontab -e/-l, системные файлы и ловушки окруженияdateТекущее время в любом формате, разбор и арифметика дат (-d), Unix time и часовые пояса (TZ=)df и duСколько места свободно на файловых системах (df) и сколько занимают каталоги и файлы (du)flockБлокировки файлов из shell — не дать двум копиям скрипта или cron-задачи работать одновременноkillОтправить процессу сигнал — вежливо завершить, убить, перечитать конфиг, приостановитьlogrotateРотация логов — переименовать, сжать, удалить старые и дать службе начать новый файлnice и reniceПриоритет процесса для планировщика — значения от -20 до 19, запуск с nice -n, изменение renice -p, кто может повышатьpgrep и pkillНайти процессы по имени или командной строке и отправить им сигнал без ps | greppsСписок процессов — PID, родитель, владелец, память, CPU, состояние и полная командная строкаservice и systemctlЗапуск, остановка и статус служб — systemctl на обычном сервере, service и init-скрипты в контейнереsupervisor: supervisord и supervisorctlМенеджер процессов supervisor — секция [program:…], автоперезапуск, логи и команды supervisorctltimeout и sleepОграничить время работы команды (timeout -s -k, код 124) и сделать паузу (sleep с единицами s, m, h, d)tmuxТерминальный мультиплексор — сессии, которые переживают обрыв связи, окна и панели в одном терминалеtopПроцессы и нагрузка в реальном времени — клавиши, пакетный режим -b -n, столбцы, load averageuname, hostname, uptime, freeСведения о системе — ядро и архитектура, имя хоста и IP, время работы и нагрузка, свободная памятьwho, w, lastКто сейчас в системе и что делает, история входов и перезагрузок, неудачные попытки входаФоновые процессы: &, nohup, setsid, disown, jobs, waitЗапуск в фоне, управление заданиями bash и как сделать, чтобы процесс пережил закрытие терминала
Архивы и копирование
Сеть и веб
ab (Apache Bench)Нагрузочный тест HTTP-сервера — число запросов, параллельность, keep-alive и как читать отчётcurlHTTP-запросы из терминала — заголовки, коды ответа, POST с телом, редиректы, HTTPS, замеры времениdigDNS-запросы — A, AAAA, MX, TXT, NS, обратный поиск, трассировка; чем dig отличается от getent hostsgetentЗаписи о пользователях, группах, хостах и портах так, как их видит система через NSShtpasswdФайл логинов и паролей для HTTP Basic-авторизации — создание, bcrypt, удаление, проверка, nginx auth_basicipСетевые интерфейсы, IP-адреса, маршруты и ARP-таблица — ip addr, ip link, ip route, ip neighnginxУстройство конфига nginx, выбор server и location, root против alias, proxy_pass, проверка и перезагрузкаopensslСертификаты и ключи — посмотреть, создать, подписать своим CA, проверить TLS-сервер и пару ключ↔сертификатpingПроверка доступности узла по ICMP — потери, задержка, MTU, коды выхода для скриптовssКакие порты слушаются, какие соединения открыты и какой процесс за ними стоитsshВход по ключу, ssh-keygen, права на ~/.ssh и authorized_keys, ~/.ssh/config, туннели, копирование через scpsshdSSH-сервер — ключевые опции sshd_config, проверка конфига sshd -t / -T, перезагрузка без потери доступаwgetСкачивание файлов по HTTP/HTTPS — докачка, проверка ссылок, рекурсивная загрузка, коды выхода
Форматы данных
base64Кодирование и декодирование Base64 — -d, -w0, url-safe вариант, частые ошибки с переводом строкиgpgGnuPG — ключи, шифрование для получателя и по паролю, подписи, экспорт и импорт, работа в скриптахiconvПерекодировка текста между UTF-8, CP1251, KOI8-R и другими; транслитерация и как определить кодировкуjqРазбор и преобразование JSON — выборка полей, select, map, строки, даты, вывод в CSV/TSVpython3 в одну строкуpython3 -c и -m — веб-сервер, проверка JSON, venv, разбор CSV и JSON прямо в командной строкеxmllintПроверка, форматирование, валидация по схеме и XPath-запросы к XML — --format, --xpath, string(), count()xmlstarletЗапросы XPath к XML, правка элементов и атрибутов, проверка и форматирование — всё из командной строкиyqЧтение и правка YAML в стиле jq — выборка, select, правка на месте, слияние файлов, конвертация в JSONКонтрольные суммыsha256sum, md5sum и родственники — посчитать хеш, проверить файлы по списку, почему MD5 не для защиты
Базы данных
psqlКонсольный клиент PostgreSQL — подключение, мета-команды \l \dt \d \du, запросы из скриптов, роли и праваredis-cliКлиент Redis — команды для строк, списков, хешей и множеств, TTL, поиск ключей через SCAN, INFO и CONFIGsqlite3Консольный клиент SQLite — база в одном файле, SQL-запросы и служебные dot-командыУтилиты PostgreSQL: createdb, pg_dump, pg_restore, pg_isready, pg_ctlclusterСоздать базу, снять и восстановить дамп, проверить готовность сервера, запустить и остановить кластер
Git и сборка
Kubernetes
Kubernetes: ConfigMap, Secret, переменные и томаНастройки и данные пода — ConfigMap и Secret, env и envFrom, тома configMap/secret/emptyDir/PVC/hostPath, subPathKubernetes: Pod, Deployment, StatefulSet, DaemonSet, Job, CronJobМанифесты рабочих нагрузок — контейнеры, init- и sidecar-контейнеры, реплики, стратегии выкатки, задачиKubernetes: Service, Ingress, NetworkPolicyСеть в Kubernetes — типы Service, порты, Ingress с путями и TLS, NetworkPolicy и default-denyKubernetes: ServiceAccount, Role, RoleBindingПрава в Kubernetes — ServiceAccount, Role и ClusterRole, правила apiGroups/resources/verbs, привязки и токен подаKubernetes: пробы, ресурсы и HPALiveness, readiness и startup-пробы, requests и limits, единицы CPU и памяти, классы QoS, HorizontalPodAutoscalerkubeconformПроверка манифестов Kubernetes по JSON-схемам без кластера — strict, сводка, CRD, офлайн-схемыkubectlКлиент Kubernetes — генерация манифестов через --dry-run=client, apply/get/describe, неймспейсы и метки
DevOps-инструменты
GitHub ActionsWorkflow GitHub Actions — on, jobs, runs-on, steps uses/run, needs, matrix, выражения, workflow_call, actionlintGitLab CI (.gitlab-ci.yml)Конвейер GitLab CI — stages, jobs, script, rules, needs, artifacts, cache, extends, include, variablesactionlintЛинтер workflow GitHub Actions — синтаксис, выражения ${{ }}, needs, метки раннеров, shellcheck для runansibleПлейбуки Ansible — структура, модули user/file/copy/template/lineinfile, циклы, условия, идемпотентность, --checkdocker compose (файл)Формат compose.yaml — сервисы, образы, порты, переменные, тома, сети, depends_on и healthcheckterraformИнфраструктура как код — init/plan/apply/destroy, провайдеры, ресурсы, переменные, outputs и stateyamlschemaОфлайн-проверка .gitlab-ci.yml и docker-compose.yml по официальным JSON-схемам — утилита песочницы IzzyLab