Собеседование сисадмина. Часть третья (Вопросы среднего уровня о Linux) [1]

Раздел объемный и пожалуй поделю его я на несколько частей, поехали:

Вопросы среднего уровня о Linux

Что делают нижеследующие команды и как бы вы их использовали?
(What do the following commands do and how would you use them?)

1) tee

Команда tee в Linux нужна для записи вывода любой команды в один или несколько файлов.
$ tee опции файл файл2
Опции команды:

  • -a или -append – Используется для записи вывода в конец существующего файла.
  •  -i или -ignore-interrupts – Используется, чтобы игнорировать прерывающие сигналы.
  • -help – Используется для показа всех возможных операций.
  • -version – Используется для показа текущей версии этой команды.

Для сохранения вывода команды можно передать один или несколько файлов.


2) awk

awk – утилита для обработки и фильтрации текста

$ awk опции условие {действие} условие {действие}
С помощью действия можно выполнять преобразования с обрабатываемой строкой.

опции утилиты:

  • -F, –field-separator – разделитель полей, используется для разбиения текста на колонки;
  • -f, –file – прочитать данные не из стандартного вывода, а из файла;
  • -v, –assign – присвоить значение переменной, например foo=bar;
  • -b, –characters-as-bytes – считать все символы однобайтовыми;
  • -d, –dump-variables – вывести значения всех переменных awk по умолчанию;
  • -D, –debug – режим отладки, позволяет вводить команды интерактивно с клавиатуры;
  • -e, –source – выполнить указанный код на языке awk;
  • -o, –pretty-print – вывести результат работы программы в файл;
  • -V, –version – вывести версию утилиты.

Это основные опции awk, но их намного больше.

функций-действия

  • print(строка) – вывод чего либо в стандартный поток вывода;
  • printf(строка) – форматированный вывод в стандартный поток вывода;
  • system(команда) – выполняет команду в системе;
  • length(строка) – возвращает длину строки;
  • substr(строка, старт, количество) – обрезает строку и возвращает результат;
  • tolower(строка) – переводит строку в нижний регистр;
  • toupper(строка) – переводить строку в верхний регистр.

Функций тоже намного больше, но этого достаточно чтобы оценить масштаб возможностей утилиты.

В функциях-действиях можно использовать различные переменные и операторы, вот несколько из них:

  • FNR – номер обрабатываемой строки в файле;
  • FS – разделитель полей;
  • NF – количество колонок в данной строке;
  • NR – общее количество строк в обрабатываемом тексте;
  • RS – разделитель строк, по умолчанию символ новой строки;
  • $ – ссылка на колонку по номеру.

Кроме этих переменных, есть и другие, а также можно объявлять свои.

Условие позволяет обрабатывать только те строки, в которых содержатся нужные нам данные, его можно использовать в качестве фильтра, как grep. А ещё условие позволяет выполнять определенные блоки кода awk для начала и конца файла, для этого вместо регулярного выражения используйте директивы BEGIN (начало) и END (конец).

3) tr

Команда tr – используется для замены, замещения или удаления символов из стандартного ввода, отправляя результат на стандартный вывод. Обрабатывает она текст посимвольно. По умолчанию у её синтаксиса следующий вид (квадратные скобки указывают, что аргумент не обязателен):

$ tr [КЛЮЧ]НАБОР1 [НАБОР2]

Всего доступно 4 ключа для уточнения операции над символами:

 

Ключ Длинный вариант Значение
-c, -C –complement Сначала получить дополнение НАБОРА1
-d –delete Удалить знаки из НАБОРА2, не превращать
-s –squeeze-repeats Замещать последовательность знаков, которые повторяются, из перечисленных в последнем НАБОРЕ, на один такой знак
-t –truncate-set1 Сначала сократить НАБОР1 до размеров НАБОРА2

НАБОРЫ указываются как символьные строки. В большинстве случаев символы представляют сами себя. Полный набор опций представлен в следующей таблице:

 

Опция Значение
HHH Знак в восьмеричной кодировке (с трех цифр ННН)
\ Обратный слэш
b Забой
f Перевод страницы
n Начать с новой строки
r Возврат каретки
t Горизонтальная табуляция
v Вертикальная табуляция
ЗНАК1-ЗНАК2 Все знаки от ЗНАК1 до ЗНАК2 в порядке возрастания
[ЗНАК*] ЗНАК заполняет НАБОР2 до длины НАБОРА1
[ЗНАК*ЧИСЛО] Указанное ЧИСЛО одинаковых ЗНАКОВ; ЧИСЛО восьмиричных, если начинается с 0
[:alnum:] Все буквы и цифры
[:alpha:] Все буквы
[:blank:] Все горизонтальные пробельные символы
[:cntrl:] Все управляющие знаки
[:digit:] Все цифры
[:graph:] Все печатаемые знаки, исключая пробел
[:lower:] Все маленькие буквы
[:print:] Все печатаемые знаки, включая пробел
[:punct:] Все знаки пунктуации
[:space:] Все вертикальные и горизонтальные пробельные знаки
[:upper:] Все большие буквы
[:xdigit:] Все шестнадцатиричные цифры
[=ЗНАК=] Все знаки, эквивалентные ЗНАКУ

Превращение осуществляется, если не указано -d для обоих НАБОРОВ. -t можно использовать только во время превращения. Если нужно, НАБОР2 будет расширен до размеров НАБОРА1 повторением последнего символа. Лишние символы НАБОРА2 будут пропущены. Гарантированно расширяются в порядке возрастания только [:lower:] и [:upper:]. Использованные символы в НАБОРЕ2 во время превращения можно применять для определения превращения регистра только в парах. -s использует последний указанный набор. Уплотнение происходит после превращения или удаления.

3) cut

Команда cut используется, если нужно вырезать часть текста — при этом он может находиться в файле либо быть напечатанным через стандартный ввод.

$ cut опции путь_к_файлу

Использовать файл не обязательно. Если на месте его названия поставить прочерк либо не указать ничего,  команда возьмет текст из стандартного ввода. При необходимости можно указывать больше файлов, чем один.

Опции:

  • -b (–bytes=LIST) — номер байта, набор или диапазон байтов, подлежащих вырезанию.
  • -c (–characters=LIST) — символ, который следует вырезать. Также можно указывать набор либо диапазон символов.
  • -d (–delimiter=DELIM) — с помощью этой опции пользователь устанавливает свой разделитель вместо стандартного TAB.
  • -f (–fields=LIST) — перечень полей для вырезания.
  • -s (–only-delimited) — если была применена эта опция, cut не выводит строки, где нет разделителя.
  • –complement — задает байты, символы или поля, которые останутся в файле или тексте из стандартного ввода. Все остальное будет вырезано.
  • –output-delimiter=STRING — по умолчанию выходной разделитель соответствует входному. Эта опция позволяет задать другой выходной разделитель.
  • -z, –zero-terminated — вместо символа новой строки разделителем будет NULL.

4) tac

tac – это команда Linux, которая позволяет вам просматривать файлы построчно, начиная с последней строки. (tac не изменяет содержимое каждой отдельной строки, а только порядок, в котором представлены строки.) Он назван по аналогии с cat.

$ tac опции файл

Опции:

Короткий флаг Длинный флаг Описание
-b –before Этот параметр добавляет разделитель до, а не после.
-r –regex Этот параметр будет интерпретировать разделитель как регулярное выражение
-s –separator=STRING Этот параметр использует СТРОКУ в качестве разделителя вместо новой строки.
–help справка
–version выводит информацию о версии

 

5) curl

curl – это набор библиотек, в которых реализуются базовые возможности работы с URL страницами и передачи файлов. Команда поддерживает работу с протоколами: FTP, FTPS, HTTP, HTTPS, TFTP, SCP, SFTP, Telnet, DICT, LDAP, а также POP3, IMAP и SMTP.

$ curl опции ссылка

опции:

  • -# – отображать простой прогресс-бар во время загрузки;
  • -0 – использовать протокол http 1.0;
  • -1 – использовать протокол шифрования tlsv1;
  • -2 – использовать sslv2;
  • -3 – использовать sslv3;
  • -4 – использовать ipv4;
  • -6 – использовать ipv6;
  • -A – указать свой USER_AGENT;
  • -b – сохранить Cookie в файл;
  • -c – отправить Cookie на сервер из файла;
  • -C – продолжить загрузку файла с места разрыва или указанного смещения;
  • -m – максимальное время ожидания ответа от сервера;
  • -d – отправить данные методом POST;
  • -D – сохранить заголовки, возвращенные сервером в файл;
  • -e – задать поле Referer-uri, указывает с какого сайта пришел пользователь;
  • -E – использовать внешний сертификат SSL;
  • -f – не выводить сообщения об ошибках;
  • -F – отправить данные в виде формы;
  • -G – если эта опция включена, то все данные, указанные в опции -d будут передаваться методом GET;
  • -H – передать заголовки на сервер;
  • -I – получать только HTTP заголовок, а все содержимое страницы игнорировать;
  • -j – прочитать и отправить cookie из файла;
  • -J – удалить заголовок из запроса;
  • -L – принимать и обрабатывать перенаправления;
  • -s – максимальное количество перенаправлений с помощью Location;
  • -o – выводить контент страницы в файл;
  • -O – сохранять контент в файл с именем страницы или файла на сервере;
  • -p – использовать прокси;
  • –proto – указать протокол, который нужно использовать;
  • -R –  сохранять время последнего изменения удаленного файла;
  • -s – выводить минимум информации об ошибках;
  • -S – выводить сообщения об ошибках;
  • -T – загрузить файл на сервер;
  • -v – максимально подробный вывод;
  • -y – минимальная скорость загрузки;
  • -Y – максимальная скорость загрузки;
  • -z – скачать файл, только если он был модифицирован позже указанного времени;
  • -V – вывести версию.

6) wget

wget  – утилита предназначенная для скачивания файлов в консоли Linux.

$ wget опции адрес_ссылки

Основные опции:

  • -V (–version) – вывести версию программы
  • -h (–help) – вывести справку
  • -b (–background) – работать в фоновом режиме
  • -o файл (–out-file) – указать лог файл
  • -d (–debug) – включить режим отладки
  • -v (–verbose) – выводить максимум информации о работе утилиты
  • -q (–quiet) – выводить минимум информации о работе
  • -i файл (–input-file) – прочитать URL из файла
  • –force-html – читать файл указанный в предыдущем параметре как html
  • -t (–tries) – количество попыток подключения к серверу
  • -O файл (–output-document) – файл в который будут сохранены полученные данные
  • -с (–continue) – продолжить ранее прерванную загрузку
  • -S (–server-response) – вывести ответ сервера
  • –spider – проверить работоспособность URL
  • -T время (–timeout) – таймаут подключения к серверу
  • –limit-rate – ограничить скорость загрузки
  • -w (–wait) – интервал между запросами
  • -Q (–quota) – максимальный размер загрузки
  • -4 (–inet4only) – использовать протокол ipv4
  • -6 (–inet6only) – использовать протокол ipv6
  • -U (–user-agent)– строка USER AGENT отправляемая серверу
  • -r (–recursive)- рекурсивная работа утилиты
  • -l (–level) – глубина при рекурсивном сканировании
  • -k (–convert-links) – конвертировать ссылки в локальные при загрузке страниц
  • -P (–directory-prefix) – каталог, в который будут загружаться файлы
  • -m (–mirror) – скачать сайт на локальную машину
  • -p (–page-requisites) – во время загрузки сайта скачивать все необходимые ресурсы

7) watch

watch – позволяет запускать указанную пользователем команду через определенные промежутки времени и печатать вывод этой команды в окне терминала.

$ watch опции команда_для_вывода

опции:

  • -d (–differences) — служит для выделения тех данных в выводе команды, которые отличаются от предыдущих.
  • -n (–interval seconds) — позволяет установить желаемый интервал запуска команды.
  • -t (–no-title) — выключает отображение заголовков.
  • -b (–beep) — если при выполнении команды возникнет ошибка, будет подан звуковой сигнал.
  • -e (–errexit) — при возникновении ошибки вывод данных будет заморожен, команда watch прекратит работу после нажатия комбинации клавиш.
  • -g (–chgexit) — выход при условии, что в выводе команды обнаружатся изменения.
  • -c (–color) — интерпретирует последовательность цветов и стилей ANSI.
  • -x (–exec) — выполнение команды будет передано интерпретатору sh -c поэтому, возможно, вам придется использовать дополнительные кавычки чтобы добиться желаемого эффекта. При использовании полной версии написания (–exec) команда будет выполняться в с помощью утилиты exec.


8) head

Команда head выводит начальные строки (по умолчанию — 10)  из одного или нескольких документов.

$ head опции файл

опции:

  • -c (–bytes) — позволяет задавать количество текста не в строках, а в байтах. При записи в виде –bytes=[-]NUM выводит на экран все содержимое файла, кроме NUM байт, расположенных в конце документа.
  • -n (–lines) — показывает заданное количество строк вместо 10, которые выводятся по умолчанию. Если записать эту опцию в виде –lines=[-]NUM, будет показан весь текст кроме последних NUM строк.
  • -q (–quiet, –silent) — выводит только текст, не добавляя к нему название файла.
  • -v (–verbose) — перед текстом выводит название файла.
  • -z (–zero-terminated) — символы перехода на новую строку заменяет символами завершения строк.

Переменная NUM, упомянутая выше — это любое число от 0 до бесконечности, задаваемое пользователем.

9) tail

Команда tail, она позволяет выводить заданное количество строк с конца файла, а также выводить новые строки в интерактивном режиме.

$ tail опции файл

опции:

  • -c – выводить указанное количество байт с конца файла;
  • -f – обновлять информацию по мере появления новых строк в файле;
  • -n – выводить указанное количество строк из конца файла;
  • –pid – используется с опцией -f, позволяет завершить работу утилиты, когда завершится указанный процесс;
  • -q – не выводить имена файлов;
  • –retry – повторять попытки открыть файл, если он недоступен;
  • -v – выводить подробную информацию о файле;


10) less

Команда less — позволяет перематывать текст не только вперёд, но и назад, осуществлять поиск в обоих направлениях, переходить сразу в конец или в начало файла.

$ less опции файл

опции:

  • -a, –search-skip-screen — не осуществлять поиск в тексте, который в данный момент отображен на экране;
  • -bn, –buffers=n — задать размер буфера памяти;
  • -c, –clear-screen — листать текст, полностью стирая содержимое экрана (построчная прокрутка работать не будет);
  • -Dxcolor, –color=xcolor — задать цвет отображаемого текста;
  • -E, –QUIT-AT-EOF — выйти, когда утилита достигнет конца файла;
  • -e, –quit-at-eof — выйти, когда утилита второй раз достигнет конца файла;
  • -F, –quit-if-one-screen — выйти, если содержимое файла помещается на одном экране;
  • -f, –force — открыть специальный файл;
  • -hn, –max-back-scroll=n — задать максимальное количество строк для прокрутки назад;
  • -yn, –max-forw-scroll=n — задать максимальное количество строк для прокрутки вперёд;
  • -i, –ignore-case — игнорировать регистр;
  • -I, –IGNORE-CASE — игнорировать регистр, даже если паттерн для поиска содержит заглавные буквы;
  • -jn, –jump-target=n — указать, в какой строке должна быть выведена искомая информация;
  • -J, –status-column — пометить строки, соответствующие результатам поиска;
  • -n, –line-numbers — не выводить номера строк;
  • N, –LINE-NUMBERS — вывести номера строк;
  • -s, –squeeze-blank-lines — заменить множество идущих подряд пустых строк одной пустой строкой;
  • -w, –hilite-unread — выделить первую строку нового фрагмента текста.

Во время просмотра текста утилитой можно управлять при помощи внутренних команд, набирая их на клавиатуре компьютера:

  • h, H — справка;
  • Space, Ctrl+V, f, Ctrl+F — прокрутить текст на один экран вперёд;
  • Enter, Return, Ctrl+N, e, Ctrl+E, j, Ctrl+J — прокрутить текст на n строк вперед, по умолчанию n=1;
  • y, Ctrl+Y, Ctrl+P, k, Ctrl+K — прокрутить текст на n строк назад, по умолчанию n=1;
  • Ctrl+→ — прокрутить текст по горизонтали в конец строки;
  • Ctrl+← — прокрутить текст по горизонтали в начало строки;
  • :d — удалить текущий файл из списка файлов;
  • Ctrl+G, :f — вывести основную информацию о файле;
  • q, Q, :q, :Q, ZZ — выход.


11) cat

Команда cat – читает данные из файла или стандартного ввода и выводит их на экран.

$ cat опции файл1 файл2

опции:

  • -b – нумеровать только непустые строки;
  • -E – показывать символ $ в конце каждой строки;
  • -n – нумеровать все строки;
  • -s – удалять пустые повторяющиеся строки;
  • -T – отображать табуляции в виде ^I;
  • -h – отобразить справку;
  • -v – версия утилиты.


12) touch

Команда touch – используется в Linux для создания файлов.

$ touch опции файл

Опции:

-a Отвечает за изменение времени доступа к указанному файлу
-m Изменяет время модификации
-c Определяет, что объект с указанным именем создан не будет
-r Позволит использовать время доступа и модификации указанного файла
-t Предназначена для изменения даты и времени путем ручного ввода
-d Использует дату и время, заданные в виде строки
–help Даст возможность прочесть официальную документацию
–version Отобразит текущую версию утилиты

 

13) sar

С помощью sar можно наблюдать за производительностью различных подсистем Linux (Процессор, Память, Ввод-Вывод) в реальном времени. Sar является частью пакета sysstat.

$ sar опции interval(in seconds) number of records

Опции:
uСоздание отчета ЦП
r – Создание отчета по памяти
dpСоздание отчета о устройстве – «-d», используется с «-p», чтобы сделать отчет в удобочитаемом формате
S – Создание отчета по использованию SWAP
b – Проверка активности ввода-вывода всей системы.
nKeyword’ (orALL’) – Просмотр сетевой статистики. Используется с ключевым словом, или «ALL»  чтобы просмотреть всю сетевую статистику.
                Ключевые слова:

    • DEV – для статистики сетевого интерфейса,
    • EDEV – отображение статистики отказов сетевого устройства
    • IP – для сетевого трафика IPv4
    • EIP – для сетевых ошибок IPv4
    • ICMP – для сетевого трафика ICMPv4
    • EICMP – для сетевых ошибок ICMPv4
    • TCP – для сетевого трафика TCPv4
    • ETCP – для сетевых ошибок TCPv4
    • UDP – для сетевого трафика UDPv4
    • NFS – для действий клиента NFS
    • NFSD – для активности сервера NFS
    • SOCK – для сокетов, используемых для IPv4 SOCK6, IP6, EIP6, ICMP6, UDP6 для IPv6

14) netstat

Команда netstat – выводит информацию о сетевых подключениях, таблицах маршрутизации, статистике интерфейса, маскарадных подключениях и членстве в многоадресной рассылке.
По умолчанию netstat отображает список открытых сокетов. Если не указывать никаких семейств адресов, то будут напечатаны активные сокеты всех настроенных семейств адресов.

$ netstat опции

Опции:

-a Показывать состояние всех сокетов;
-o Показывать таймен
-i Показывает состояние сетевых интерфейсов
-n Показывать ip адрес, а не сетевое имя
-r Показать таблицы маршрутизации. При использовании с опцией -s показывает статистику маршрутизации.
-s Показать статистическую информацию по протоколам. При использовании с опцией -r показывает статистику маршрутизации.
-f семейство_адресов Ограничить показ статистики или адресов управляющих блоков только указанным семейством_адресов, в качестве которого можно указывать:inet Для семейства адресов AF_INET, или unix Для семейства адресов AF_UNIX.
-I интерфейс Показывать информацию о конкретном интерфейсе.
-p Отобразить идентификатор/название процесса, создавшего сокет (-p, —programs display PID/Program name for sockets)

 

15) tcpdump

Утилита tcpdump – инструмент для перехвата и анализа сетевых пакетов. Позволяет просматривать все входящие и исходящие из определенного интерфейса пакеты и работает в командной строке.

$ tcpdump опции -i интерфейс фильтры

Опции:

  • -A – выводить все пакеты в формате ASCII;
  • -c – закрыть программу после перехвата n-ого количества пакетов;
  • -C – при записи пакетов в файл, проверять размер файла, и если он больше заданного – создать новый файл;
  • -D – вывести список доступных сетевых интерфейсов;
  • -e – выводить информацию уровня соединения для каждого пакета, это может быть полезно, например, для отображения MAC адреса;
  • -f – выводить доменное имя для ip адресов;
  • -F – читать пакеты из файла, а не интерфейса;
  • -G – создавать новый файл лога через указанный промежуток времени;
  • -H – обнаруживать заголовки 802.11s;
  • -i – имя интерфейса для перехвата пакетов. Вы можете захватывать пакеты со всех интерфейсов, для этого укажите any;
  • -I – переключить интерфейс в режим монитора для захвата всех проходящих пакетов;
  • -j – установить формат Timestamp для записи пакетов;
  • -J – посмотреть доступные Timestamp;
  • -K – не проверять контрольные суммы пакетов;
  • -l – добавить поддержку прокрутки к выводу;
  • -L – вывести поддерживаемые протоколы подключения для интерфейса;
  • -n – не отображать доменные имена;
  • -r – прочитать пакеты из файла, созданного с помощью -w;
  • -v, -vv, -vvv – более подробный вывод;
  • -q – выводить минимум информации;
  • -w – записать вывод в файл;
  • -Z – пользователь, от имени которого будут создаваться файлы.


16) lsof

lsof – команда Unix/Linux, которая отображает все открытые файлы или идентифицирует процессы, открытые конкретными файлами.
По умолчанию: без параметров lsof выводит список всех открытых файлов для активных процессов.

$ lsof опции

Опции:
-a – И результаты (вместо ИЛИ)
-l – показать идентификатор пользователя вместо имени пользователя в выводе
-h – получить помощь
-t – получить только идентификаторы процессов
-U – получить адрес сокета UNIX
-F – вывод готов к другой команде, которую можно отформатировать различными способами, например, -F pcfn (для идентификатора процесса, имени команды, дескриптора файла и имени файла с нулевым терминатором)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *