find и grep в Linux как инструмент для администрирования

Всем доброго времени суток и всяческих таких прочих разностей.

Команды Linux для навигации в терминале

  1. &&. Строго говоря, это не команда. Если вы хотите выполнить сразу несколько команд, поставьте между ними двойной амперсанд вот так: первая_команда && вторая_команда. Терминал выполнит команды по порядку. Вы можете ввести столько команд, сколько захотите.
  2. alias. Присваивает созданные вами названия длинным командам, которые вы не можете запомнить. Введите alias длинная_команда короткая_команда.
  3. cd. Изменяет текущую терминальную папку. Когда вы запускаете терминал, он использует вашу домашнюю папку. Введите cd адрес_папки, и терминал будет работать с файлами, которые там находятся.
  4. clear. Очищает окно терминала от всех сообщений.
  5. history. Отображает все недавно введённые вами команды. Кроме того, вы можете переключаться между недавними командами с помощью клавиш «Вверх» и «Вниз». Если вы не хотите, чтобы введённая вами команда была записана, поставьте перед ней пробел так: ваша_команда.
  6. man. Отображает руководство по программам и командам Linux. Введите man имя_пакетаили man ваша_команда.
  7. whatis. Отображает краткое описание какой-либо программы. Введите команду и название программы whatis имя_пакета.
Команды Linux для навигации в терминале

Просмотр очень больших логов в Linux: комментария

  1. Николай: в 15:16

    Эти заклинания должны быть доступны лишь самым могущественным чародеям. Не нужно публиковать их. Прав был Галеон Мистик, когда создал систему, в которой уровень исполняемого заклинания зависит от уровня познания школы. А ведь до него любой нуб мог сотворить огромадный огненный шар 200 птс на 200 секунд! Обладая могущественными инструментами вроде того же пресловутого Far Manager!!!

    Ответить

  2. Ярослав: в 23:01

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

    Как минимум необходимо настроить rolling либо по датам (обычный случай), либо по размеру (в случае если логов пишется очень много).

    Еще можно все говно складывать в какой-нибудь эластик.

    Не зачет.

    Ответить

ОПЦИИ

Давайте рассмотрим самые основные опции утилиты grep, которые помогут нам выполнять поиск текста в файлах:

  • -b — показывать номер блока перед строкой;
  • -c — подсчитать количество вхождений шаблона;
  • -h — не выводить имя файла в результатах поиска внутри файлов Linux;
  • -r — рекурсивный поиск;
  • -i — не учитывать регистр;
  • — l — отобразить имена файлов, в которых найден шаблон;
  • -n — показывать номер строки в файле;
  • -s — не показывать сообщения об ошибках;
  • -v — инвертировать поиск, выдавать все строки кроме тех, что содержат шаблон;
  • -w — искать шаблон как слово, окружённое пробелами;
  • -e — использовать регулярные выражения при поиске;
  • -An — показать вхождение и n строк до него;
  • -Bn — показать вхождение и n строк после него;
  • -Cn — показать n строк до и после вхождения.

Просмотр содержимого командой cat

И так, открывает наш список утилита под названием “cat”. Для просмотра содержимого файла необходимо ввести саму команду “cat”, а затем название файла, который вы хотите просмотреть. Для примера мы возьмем файл под названием “testfile”, в нем содержится текст “Lorem Ipsum“. Данный текст применяется обычно как заглушка в веб разработке. Давайте посмотрим данный текст при помощи команды “cat”:

cat testfile

Просмотр содержимого командой cat

Как видите, содержимое файла “testfile” вывелось в терминале. Пролистав вниз можно прочесть весь текст, который содержится в данном файле. А в том случае если у вас нет графического интерфейса, пролистать содержимое можно сочетанием клавиш “shift + page up” и “shift + page down”.

Что именно является символической ссылкой?

Обычно называемые symlink(символической ссылкой) или soft link(мягкой ссылкой), символические ссылки представляют собой очень маленькие файлы. На самом деле символическая ссылка содержит только имя любого файла, на который она указывает, обычно вместе с путем к файловой системе (относительно текущего местоположения или абсолютного значения).

Если файл с именем file1 указывает на файл с именем /apps/files/file-2020, длина file1 будет составлять 21 символ, даже если размер файла file-2020 составляет 2 терабайта. Если он указывает на ./file-2020, длина его будет всего 11 символов. Если указывает на file-2020, то только девять.

Если вы выполните команду, подобную «vi file1» (где file1 — имя символической ссылки), вы в конечном итоге отредактируете любой файл, на который указывает file1, а не содержимое самой символической ссылки. Системы Linux знают, как работать с символическими ссылками, и просто делают правильные вещи. Точно так же, если вы используете такие команды, как cat, more, head или tail, вы будете просматривать содержимое указанного файла.

Если вы удалите символическую ссылку, с другой стороны, вы удалите ссылку, а не ссылочный файл. Опять же, Linux делает то, что имеет смысл. Симлинки предназначены для упрощения использования и обмена файлами — не более того.

find — синтаксис и зачем оно нужно

find — утилита поиска файлов по имени и другим свойствам, используемая в UNIX‐подобных операционных системах. С лохматых тысячелетий есть и поддерживаться почти всеми из них.

Базовый синтаксис ключей (забран с Вики):

  • -name — искать по имени файла, при использовании подстановочных образцов параметр заключается в кавычки. Опция `-name‘ различает прописные и строчные буквы; чтобы использовать поиск без этих различий, воспользуйтесь опцией `-iname‘;
  • -type — тип искомого: f=файл, d=каталог, l=ссылка (link), p=канал (pipe), s=сокет;
  • -user — владелец: имя пользователя или UID;
  • -group — владелец: группа пользователя или GID;
  • -perm — указываются права доступа;
  • -size — размер: указывается в 512-байтных блоках или байтах (признак байтов — символ «c» за числом);
  • -atime — время последнего обращения к файлу (в днях);
  • -amin — время последнего обращения к файлу (в минутах);
  • -ctime — время последнего изменения владельца или прав доступа к файлу (в днях);
  • -cmin — время последнего изменения владельца или прав доступа к файлу (в минутах);
  • -mtime — время последнего изменения файла (в днях);
  • -mmin — время последнего изменения файла (в минутах);
  • -newer другой_файл — искать файлы созданные позже, чем другой_файл;
  • -delete — удалять найденные файлы;
  • -ls — генерирует вывод как команда ls -dgils;
  • -print — показывает на экране найденные файлы;
  • -print0 — выводит путь к текущему файлу на стандартный вывод, за которым следует символ ASCII NULL (код символа 0);
  • -exec command {} \; — выполняет над найденным файлом указанную команду; обратите внимание на синтаксис;
  • -ok — перед выполнением команды указанной в -exec, выдаёт запрос;
  • -depth или -d — начинать поиск с самых глубоких уровней вложенности, а не с корня каталога;
  • -maxdepth — максимальный уровень вложенности для поиска. «-maxdepth 0» ограничивает поиск текущим каталогом;
  • -prune — используется, когда вы хотите исключить из поиска определённые каталоги;
  • -mount или -xdev — не переходить на другие файловые системы;
  • -regex — искать по имени файла используя регулярные выражения;
  • -regextype тип — указание типа используемых регулярных выражений;
  • -P — не разворачивать символические ссылки (поведение по умолчанию);
  • -L — разворачивать символические ссылки;
  • -empty — только пустые каталоги.
find - синтаксис и зачем оно нужно

Примерно тоже самое, только больше и в не самом удобочитаемом виде, т.к надо делать запрос по каждому ключу отдельно, можно получить по

find -help

Результатам будет нечто такое из чего можно вычленять справку по отдельному ключу или команде (кликабельно):

В качестве развлечения можно использовать:

man find

find - синтаксис и зачем оно нужно

Дабы получить мануал из самой системы по базису и ключам (тоже кликабельно);

Немного о примерах использования. Точно так же, оттуда же и тп. Просто для понимания как оно работает вообще. Наиболее просто, конечно, осознать это потренировавшись в той же консоли на реальной системе.

Поиск файлов

  • find
  • locate
  • whereis

Первая команда с которой мы ознакомимся, это команда «find«. Позволяет выполнять поиск файлов в каталогах. Синтаксис команды очень просто и имеет вид:

find путь -опции

Эта команда имеет очень мощный функционал и позволяет осуществлять очень гибкий поиск файлов. В путь мы указываем путь к каталогу в котором будем искать файлы и после этого указываем опции:

-name — поиск файла согласно шаблону

-user — поиск файлов определенного пользователя

-type — поиск по типу файла

-mtime — поиск по времени создания или модификации

Теперь рассмотрим пару примеров использования команды find.

find ~ -type f -size +100M

Этой командой мы выполним поиск всех файлов в домашнем каталоге пользователя размером больше 100 мегабайт. Опция -type f указывает, что искать мы будем файлы, опция -size +100M указывает, что искать файлы размер которых больше 100 мегабайт.

find ~ -type f -mtime +300

Теперь мы ищем файлы которые были изменены или созданы более 30ти дней назад. Опция —mtime +30 указывает нам а то, что нужно искать файлы старше 30ти дней.

Поиск файлов

Также есть опция которая указывает глубину поиска в каталогах -maxdepth. Так как команда find ищет только в том каталоге в котором вы указали. С помощью переменно -maxdepth можно задать глубину поиска в подкаталогах.

locate

locate не имеет такого сильного функционала как find, однако обладает другими преимуществами. Если вам нужно очень быстро найти файл, то используя команду locate вы это сделаете в разы быстрее чем при помощи команды find. Дело в том, что locate использует специальную базу и поиск производится не по файловой системе, а по базе. Для начала работы c командой locate вам нужно обновить базу данных, делается это командой updatedb. Выполнять нужно от имени суперпользователя. Также базу нужно периодически обновлять, так как в неё не будут добавлены файлы, которые были созданы после момента последнего выполнения обновления базы.

Пару примеров использования locate

  • locate file — поиск файла с именем file
  • locate .txt — найти все файлы с расширением txt
  • locate file -i — регистр файлов учитывает поэтому, чтобы снять это ограничение, вводим опцию -i
  • locate file -c — вывод количества найденных файлов
  • locate file -n 5 — ограничение вывода в 5 результатов

Довольно простой синтаксис и очень быстрый поиск. Только не забывайте использовать updatedb.

whereis

Не совсем поиск файлов, однако тоже полезная команда. Позволяет найти бинарные файлы, исходники и страницы документации программы установленной в системе. Синтаксис очень простой: whereis имя_программы.

При помощи этих 3х команд вы сможете эффективно и быстро искать файлы в вашей системе. Запомните основные опции(ключи) и приемы работы с командами, таким образом ваша работа станет еще эффективней

Возможно вам будет интересно: Просмотр содержимого файлов. Linux для начинающих. Создание, удаление, копирование файлов. Linux для начинающих.

Команды head и tail

Если нужно открыть в терминале Linux большой файл, то вместо команды «cat» можно использовать «head» или «tail». Данные команды выводят в терминал только часть файла. В случае «head» выводится только начало документа, а в случае «tail» только конец.

Чтобы открыть файл с помощью данной команды просто введите «head» или «tail» и название файла:

Команды head и tail

head file_ tail file_

По умолчанию команды «head» и «tail» выводят по 10 строк с начала или конца файла. Но, при необходимости это значение можно изменить при помощи параметра «-n». Для этого вводим «-n» и число строк (не отделяя пробелом). Выглядит это примерно так:

head -n3 file_ tail -n5 file_

Команды head и tail

Кроме этого, вы можете ограничить количество информации, которую выводят команды «head» и «tail», указав значение в байтах. Для этого нужно использовать параметр «-c». Например, чтобы вывести 100 байт нужно добавить параметр «-c» и указать значение 100 (не отделяя пробелом). Выглядит это примерно так:

head -c100 file_ tail -c200 file_

Команды «head» и «tail» имеют общий набор параметров, но у «tail» есть уникальный параметр «-f», которого нет у «head». При вызове «tail -f file_» выводимая информация будет автоматически обновляться. Это может быть удобно для наблюдения за логами.

Команды head и tail
Читайте также:  Установка Linux Mint Debian Edition 4 (LMDE)