Правила использования операторов grep и find в Linux

Как посмотреть логи в Linux?

Большинство логов в Linux генерируются системными демонами syslogd или rsyslogd и хранятся в обычном текстовом файле ASCII в каталоге /var/log. Этот каталог содержит лог-файлы самой ОС, служб и различных приложений, запущенных в системе. Вот как этот каталог выглядит в типичной системе Debian Linux:

Если вы попробуете просмотреть какой-нибудь лог-файл от имени обычного пользователя, то в 99% случаев система ответит вам сообщением о нехватке прав доступа. Поэтому я заранее переключился на пользователя root (команда su –) и все дальнейшие действия будут выполняться от его имени.

Как вы можете заметить, команда вывела последние 10 строк лог-файла, которые дают нам информацию о последовательном запуске различных сервисов, а также отображает их статус.

Как уже было сказано выше, многие лог-файлы хранятся в виде обычных текстовых файлов, поэтому их можно просматривать с помощью следующих стандартных команд:

   tail — вывод последних 10 строк;

   head — вывод первых 10 строк;

   cat — вывод содержимого всего лог-файла;

   grep — поиск в лог-файле всех вхождений заданного выражения или фильтрация лог-файла по заданному выражению;

   zcat — отображает всё содержимое сжатых лог-файлов (с расширением *.gz);

   zmore — постраничный просмотр сжатых лог-файлов, без их распаковки;

   zgrep — поиск внутри сжатого лог-файла.

Grep несколько строк

Буквальные строки — это самые простые шаблоны.

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

Если искомая строка содержит пробелы, заключите ее в двойные кавычки.

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

По умолчанию чувствителен к регистру. Это означает, что символы верхнего и нижнего регистра рассматриваются как разные.

Чтобы игнорировать регистр при поиске, вызовите параметром (или ):

При поиске строки отобразит все строки, в которых строка встроена в строки большего размера. Поэтому, если вы искали «error», также напечатает строки, где «error» встроено в слова большего размера, например, «errorless» или «antiterrorists».

Чтобы вернуть только те строки, в которых указанная строка представляет собой целое слово (заключенное в символы, отличные от слов), используйте параметр (или ):

Символы слова включают буквенно-цифровые символы (az, AZ и 0–9) и символы подчеркивания (_). Все остальные символы считаются несловесными символами.

Чтобы узнать больше о параметрах , посетите нашу статью Команда Grep .

Синтаксис grep и find

Начнём с оператора find. Синтаксис файловой поисковой команды выглядит так:

Некоторые употребительные параметры:

  • -depth : поиск в текущей папке и подкаталогах;
  • -version : вывести версию команды;
  • -print : показывать полные имена файлов (в Linux они могут быть сколь угодно большими);
  • -type f : поиск исключительно файлов;
  • -type d – поиск только директорий (папок).

Перечень доступных опций (указываются через дефис):

  • name : файловый поиск по имени;
  • user : поиск по имени владельца файла;
  • perm : по атрибуту «режим доступа»;
  • mtime : по времени последнего изменения (редактирования) файла;
  • group : по группе;
  • atime : по дате последнего открытия файла;
  • newer : поиск файла с датой, более новой, чем заданная в шаблоне директивы;
  • size : по размеру файла в байтах;
  • nouser : поиск файлов, не имеющих введённого атрибута «владелец».

Синтаксис grep:

Под опциями следует понимать дополнительные уточняющие параметры, например, использование инверсного режима или поиск заданного количество строк.

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

Возможность использования регулярных выражений позволяет существенно расширить возможности поиска. Указание стандартного вывода может оказаться полезным, если стоит задача отфильтровать ошибки, записанные в логи, или для поиска PID процесса в результатах выполнения команды ps, которые могут быть многостраничными.

Рассмотрим наиболее употребительные параметры grep:

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

Теперь имеет смысл перейти от теоретической части к практической.3

1.2 Общие параметры и примеры команды find

-perm: Найти файлы в соответствии с правами доступа.

-prune: Используйте эту опцию, чтобы команда поиска не выполняла поиск в указанном каталоге. Если вы также используете опцию -depth, то команда -prune будет игнорироваться командой поиска.

-user: Найти файл в соответствии с владельцем файла.

-group: Найти файлы в соответствии с группой, к которой они принадлежат.

-mtime -n +n: Найти файл в соответствии со временем изменения файла, -n означает, что время изменения файла находится в течение n дней, + n означает, что время изменения файла составляет n дней назад.

-nogroupНайти файл без допустимой группы, то есть группа, к которой принадлежит файл, не существует в / etc / groups.

-nouser: Найти файл без действительного владельца, то есть владелец файла не существует в / etc / passwd.

  • -newer file1 ! file2: Найти файлы, время изменения которых новее, чем file1, но старше, чем file2.
  • -typeНайдите файл определенного типа, например:

-size n: Найдите файл, длина файла которого составляет n блоков, с c означает, что длина файла в байтах.

-depth: При поиске файла сначала найдите файл в текущем каталоге, а затем выполните поиск в его подкаталогах.

-mount: Не пересекать точки монтирования файловой системы при поиске файлов.

-follow: если команда find встречает файл символьной ссылки, она будет следовать за файлом, на который указывает ссылка.

Поиск без учета регистра

По умолчанию чувствителен к регистру. Это означает, что символы верхнего и нижнего регистра рассматриваются как разные.

Чтобы игнорировать регистр при поиске, вызовите с параметром (или ).

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

Но если вы выполните поиск без учета регистра с использованием параметра , он будет соответствовать как заглавным, так и строчным буквам:

Указание «Зебра» будет соответствовать «зебре», «ZEbrA» или любой другой комбинации букв верхнего и нижнего регистра для этой строки.

Команды Linux для управления сетью

39. ip

Если список команд Linux для управления сетью вам кажется слишком коротким, скорее всего вы не знакомы с утилитой ip. В пакете net-tools содержится множество других утилит: ipconfig, netstat и прочие устаревшие, вроде iproute2. Всё это заменяет одна утилита – ip. Вы можете рассматривать её как швейцарский армейский нож для работы с сетью или как непонятную массу, но в любом случае за ней будущее. Просто смиритесь с этим.

40. ping

Ping – это ICMP ECHO_REQUEST дейтаграммы, но на самом деле это неважно. Важно то, что утилита ping может быть очень полезным диагностическим инструментом

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

41. nethogs

Если у вас медленный интернет, то вам, наверное, было бы интересно знать, сколько трафика использует какая-либо программа в Linux или какая программа потребляет всю скорость. Теперь это можно сделать с помощью утилиты nethogs. Для того чтобы задать сетевой интерфейс используйте опцию -i.

42. traceroute

Это усовершенствованная версия ping. Мы можем увидеть не только полный маршрут сетевых пакетов, но и доступность узла, а также время доставки этих пакетов на каждый из узлов. Подробнее – тут.

Примеры использования find

Поиск файла по имени

1. Простой поиск по имени:

find / -name “file.txt”

* в данном примере будет выполнен поиск файла с именем file.txt по всей файловой системе, начинающейся с корня .

2. Поиск файла по части имени:

find / -name “*.tmp”

* данной командой будет выполнен поиск всех папок или файлов в корневой директории /, заканчивающихся на .tmp

3. Несколько условий. 

а) Логическое И. Например, файлы, которые начинаются на sess_ и заканчиваются на cd:

find . -name “sess_*” -a -name “*cd”

б) Логическое ИЛИ. Например, файлы, которые начинаются на sess_ или заканчиваются на cd:

find . -name “sess_*” -o -name “*cd”

в) Более компактный вид имеют регулярные выражения, например:

find . -regex ‘.*/\(sess_.*cd\)’

find . -regex ‘.*/\(sess_.*\|.*cd\)’

* где в первом поиске применяется выражение, аналогичное примеру а), а во втором — б).

4. Найти все файлы, кроме .log:

find . ! -name “*.log”

* в данном примере мы воспользовались логическим оператором !.

Поиск по дате

1. Поиск файлов, которые менялись определенное количество дней назад:

find . -type f -mtime +60

* данная команда найдет файлы, которые менялись более 60 дней назад.

2. Поиск файлов с помощью newer. Данная опция доступна с версии 4.3.3 (посмотреть можно командой find –version).

а) дате изменения:

find . -type f -newermt “2019-11-02 00:00”

* покажет все файлы, которые менялись, начиная с 02.11.2019 00:00.

find . -type f -newermt 2019-10-31 ! -newermt 2019-11-02

* найдет все файлы, которые менялись в промежутке между 31.10.2019 и 01.11.2019 (включительно).

б) дате обращения:

find . -type f -newerat 2019-10-08

* все файлы, к которым обращались с 08.10.2019.

find . -type f -newerat 2019-10-01 ! -newerat 2019-11-01

* все файлы, к которым обращались в октябре.

в) дате создания:

find . -type f -newerct 2019-09-07

* все файлы, созданные с 07 сентября 2019 года.

find . -type f -newerct 2019-09-07 ! -newerct “2019-09-09 07:50:00”

* файлы, созданные с 07.09.2019 00:00:00 по 09.09.2019 07:50

Искать в текущей директории и всех ее подпапках только файлы:

find . -type f

* f — искать только файлы.

Поиск по правам доступа

1. Ищем все справами на чтение и запись:

find / -perm 0666

2. Находим файлы, доступ к которым имеет только владелец:

find / -perm 0600

Поиск файла по содержимому

find / -type f -exec grep -i -H “content” {} \;

* в данном примере выполнен рекурсивный поиск всех файлов в директории и выведен список тех, в которых содержится строка content.

С сортировкой по дате модификации

find /data -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r

* команда найдет все файлы в каталоге /data, добавит к имени дату модификации и отсортирует данные по имени. В итоге получаем, что файлы будут идти в порядке их изменения.

Лимит на количество выводимых результатов

Самый распространенный пример — вывести один файл, который последний раз был модифицирован. Берем пример с сортировкой и добавляем следующее:

find /data -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r | head -n 1

Поиск с действием (exec)

1. Найти только файлы, которые начинаются на sess_ и удалить их:

find . -name “sess_*” -type f -print -exec rm {} \;

* -print использовать не обязательно, но он покажет все, что будет удаляться, поэтому данную опцию удобно использовать, когда команда выполняется вручную.

2. Переименовать найденные файлы:

find . -name “sess_*” -type f -exec mv {} new_name \;

или:

find . -name “sess_*” -type f | xargs -I ‘{}’ mv {} new_name

3. Вывести на экран количество найденных файлов и папок, которые заканчиваются на .tmp:

find . -name “*.tmp” | wc -l

4. Изменить права:

find /home/user/* -type d -exec chmod 2700 {} \;

* в данном примере мы ищем все каталоги (type d) в директории /home/user и ставим для них права 2700.

5. Передать найденные файлы конвееру (pipe):

find /etc -name ‘*.conf’ -follow -type f -exec cat {} \; | grep ‘test’

* в данном примере мы использовали find для поиска строки test в файлах, которые находятся в каталоге /etc, и название которых заканчивается на .conf. Для этого мы передали список найденных файлов команде grep, которая уже и выполнила поиск по содержимому данных файлов.

6. Произвести замену в файлах с помощью команды sed:

find /opt/project -type f -exec sed -i -e “s/test/production/g” {} \;

* находим все файлы в каталоге /opt/project и меняем их содержимое с test на production.

Выражения в скобках

Выражения в квадратных скобках позволяют сопоставить группу символов, заключив их в квадратные скобки . Например, найдите строки, содержащие «принять» или «акцент», вы можете использовать следующее выражение:

Если первый символ внутри скобок — это курсор , то он соответствует любому одиночному символу, не заключенному в скобки. Следующий шаблон будет соответствовать любой комбинации строк, начинающихся с «co», за которыми следует любая буква, кроме «l», за которой следует «la», например «coca», «cobalt» и т. Д., Но не будет соответствовать строкам, содержащим «cola». ”:

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

Следующее выражение соответствует каждой строке, начинающейся с заглавной буквы:

также поддерживает предопределенные классы символов, заключенные в скобки. В следующей таблице показаны некоторые из наиболее распространенных классов символов:

Квантификатор Классы персонажей
Буквенно-цифровые символы.
Буквенные символы.
Пробел и табуляция.
Цифры.
Строчные буквы.
Заглавные буквы.

Основное регулярное выражение

GNU Grep имеет три набора функций регулярных выражений : базовый, расширенный и Perl-совместимый.

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

Ниже приведен список наиболее часто используемых метасимволов:

  • Используйте символ (каретка) для сопоставления выражения в начале строки. В следующем примере строка будет соответствовать только в том случае, если она встречается в самом начале строки.

  • Используйте символ (доллар), чтобы найти выражение в конце строки. В следующем примере строка будет соответствовать только в том случае, если она встречается в самом конце строки.

  • Используйте расширение (точка) символ, соответствующий любому одиночному символу. Например, чтобы сопоставить все, что начинается с затем имеет два символа и заканчивается строкой , вы можете использовать следующий шаблон:

  • Используйте (скобки) для соответствия любому одиночному символу, заключенному в квадратные скобки. Например, найдите строки, содержащие или « , вы можете использовать следующий шаблон:

  • Используйте для соответствия любому одиночному символу, не заключенному в квадратные скобки. Следующий шаблон будет соответствовать любой комбинации строк, содержащих , например , и т. Д., Но не будет соответствовать строкам, содержащим ,

Чтобы избежать специального значения следующего символа, используйте символ (обратная косая черта).

Оператор перенаправления

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

Для создания файла используйте:

Давайте посмотрим, как вы можете >перенаправить вывод в новый файл. Мы перечислим все файлы и каталоги в Donuts, и результат будет перенаправлен в output.txt.

Чтобы просмотреть output.txt, мы можем распечатать его содержимое в терминале, используя:

Cat command

Мы рассмотрели, как можно использовать команду cat для чтения файлов. Теперь давайте посмотрим, как мы можем использовать его для его создания. Выполните команду:

Нажмите Enter, затем введите текст, который вы хотите добавить в файл, а затем нажмите CTRL+D.

Теперь давайте используем cat для добавления к файлам. В приведенном ниже примере мы добавляем содержимое из Boston_kreme_pie.txtи glazed_donut.txtв jelly_donut.txt. Затем мы используем cat для просмотра содержимого jelly_donut.txt.

Синтаксис grep

Синтаксис команды выглядит следующим образом:

$ grep шаблон

Или:

$ команда | grep шаблон

  • Опции – это дополнительные параметры, с помощью которых указываются различные настройки поиска и вывода, например количество строк или режим инверсии.
  • Шаблон – это любая строка или регулярное выражение, по которому будет вестись поиск
  • Файл и команда – это то место, где будет вестись поиск. Как вы увидите дальше, grep позволяет искать в нескольких файлах и даже в каталоге, используя рекурсивный режим.

Возможность фильтровать стандартный вывод пригодится,например, когда нужно выбрать только ошибки из логов или найти PID процесса в многочисленном отчёте утилиты ps.

Как перемещаться по файлам

Теперь, когда вы увидели терминал, давайте попробуем несколько основных команд. Команды — это инструкции, которые вы даете своему компьютеру что-то делать.

Щелкните окно, чтобы убедиться, что нажатия клавиш попадают туда. Нечетный текст, который вы видите на терминале, называется приглашением. Это способ компьютера сказать, что он готов принять команду.

pwd

Введите команду ниже и нажмите Enter.

Когда вы запускаете терминал, вы попадаете в домашний каталог вашего пользователя. Обычно это выглядит примерно так: «/ home / username». Команда pwdprint working directory позволяет узнать, в каком каталоге вы находитесь.

Путь, который он дает, — это абсолютный путь. Абсолютный путь начинается с корня, который является основой файловой системы Linux. Это обозначено косой чертой /.

ls

Другая распространенная команда — это ls. Эта команда используется для отображения всех каталогов и файлов в вашем текущем каталоге, введите lsи нажмите Enter.

Чтобы просмотреть любые скрытые файлы, добавьте —aв команду.

Вы можете добавить в команду дополнительные параметры для просмотра конкретной информации.

ПараметрыОписание
ls -Xсортировать по имени расширения
ls -tсортировать по времени и дате
ls -sразмер файла списка
ls -Sсортировать по размеру файла
ls -rсписок в обратном порядке
ls -Rрекурсивно перечислить дерево каталогов
ls -lsсписок в длинном формате с размером файла
ls -lhсписок длинного формата с читаемым размером файла
ls -laсписок длинного формата, включая скрытые файлы
ls -lсписок с длинным форматом — показать разрешения
ls -dсписок каталогов — с помощью ‘* /’

cd

Далее, мы будем смотреть на cd, команды смены каталога. В нашем случае ваш текущий каталог — это то место, где вы сейчас работаете /home/maryam. Прежде чем мы начнем с изменения каталогов, давайте рассмотрим, что такое абсолютные и относительные пути.

Абсолютный путь начинается с корневой системой и относительного пути от текущего каталога. Таким образом, абсолютный путь для документов будет /home/Maryam/Documents, тогда как относительный путь будет Documents.

Чтобы изменить каталоги, используйте:

Давайте изменим наш каталог на Documents, используя как относительный, так и абсолютный путь соответственно.

Вы можете вернуться в предыдущий каталог, используя:

Ваш родительский каталог — это каталог, расположенный непосредственно над текущим. Чтобы перейти в родительский каталог, используйте:

Чтобы перейти на два уровня вверх, используйте:

Чтобы перейти в домашний каталог, используйте:

Самые важные команды, которые нужно знать

Мы рассмотрели некоторые основные команды в предыдущих разделах. В этом разделе мы рассмотрим некоторые другие важные команды.

Find command

Вы можете использовать команды find, locate и grep с помощью команды find.

Команда find ищет файлы на вашем диске. Это позволяет вам искать файлы и каталоги на основе групп пользователей, времени изменения файлов или доступа к ним, прав доступа к файлам, дат и размера.

Чтобы игнорировать регистр, используйте:

Раньше мы говорили о диких картах. Здесь мы используем их для поиска определенных файлов. Эта команда перечисляет все имена файлов, оканчивающиеся на donut.txt.

И эта команда перечисляет все имена файлов, начинающиеся с c.

Вы можете искать файлы по размеру, используя:

Используйте команду ниже для поиска файлов по дате их последнего изменения:

Чтобы найти каталог, используйте команду:

Locate command

По сравнению с поиском locateработает быстрее, так как считывает пути к файлам, хранящиеся в mlocate.dbбазе данных. Прежде чем приступить к работе, вам необходимо установитьlocate.

Команда для установки locate:

Первый шаг — это ввод пароля. После ввода пароля начнется установка.

После установки необходимо обновить поисковую базу. Locateполагается на эту базу данных, поэтому ее регулярное обновление обеспечивает эффективность. Для обновления mlocateбазы данных необходимы права суперпользователя.

Чтобы искать файлы по их именам, используйте:

Примечание. Функция Locate чувствительна к регистру, поэтому CreamPuffs.txtи creamPuffs.txtне одно и то же.

Чтобы игнорировать регистр, добавьте в команду —i.

grep command

Печать глобального регулярного выражения (grep) используется в Linux для поиска строк в конкретном файле. Если grep находит эти символы, он печатает строку. Команда такая:

Вы распечатываете номера строк вместе со строкой соответствия, добавляя —nк команде:

Примечание: Grep чувствителен к регистру, поэтому glazedи Glazedне одно и то же.

Чтобы игнорировать регистр, используйте:

Для поиска чего-либо в каталоге используйте:

chmod

Команда chmod, изменить режим, используется для просмотра разрешений на чтение, запись и выполнение, связанных с файлом. У вас есть три разных типа пользователей: пользователь (владелец), группа и другие (все остальные), которые могут читать, писать или выполнять файл.

Чтобы просмотреть разрешения, связанные с файлом, используйте:

Посмотрим, что означает вывод:

  • -означает, что это обычный файл. Если бы это был каталог, то так и было бы d.
  • rw-rw-r— показывает права доступа к файлу.

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

Вы можете просмотреть обновленные разрешения, используя:

Вы также можете использовать команду chmod с числовым методом. Разрешения имеют следующие числовые значения:

  • Читать = 4
  • Написать = 2
  • Выполнить = 1
  • Нет разрешений = 0

Разрешения, которые получает определенный пользователь, представляют собой сумму этих чисел, поэтому, если вы хотите дать разрешение на чтение, запись и выполнение, это будет 4 + 2 + 1 = 74 + 2 + 1 = 7. Прочитать и выполнить будет4 + 0 + 1 = 54 + 0 + 1 = 5, и просто читать будет 4 + 0 + 0 = 44 + 0 + 0 = 4.

ping command

Команда ping используется для проверки статуса вашего соединения с сервером.

Вы можете проверить, смогли ли вы подключиться, и посмотреть время ответа. Команда продолжает выполняться, пока вы ее не остановите нажатием CTRL+C.

free command

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

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

gzip

Для сжатия файлов через терминал используйте gzipкоманду. Если вы хотите сохранить как исходный файл, так и сжатую версию, добавьте —k, в противном случае исходный файл будет удален.

mv

Чтобы переместить файлы из одного каталога в другой, используйте mv. Вы также можете переименовывать файлы с помощью этой команды.

Чтобы переименовать файл, используйте:

Чтобы переименовать файл при его перемещении, используйте:

man

Чтобы узнать больше о любой команде, используйте man. Вы попадете в руководство, где сможете просмотреть описание и все параметры команды. Давайте рассмотрим команду ls более подробно.

Якорь

Якоря — это метасимволы, которые позволяют указать, где в строке должно быть найдено совпадение.

Символ (каретка) соответствует пустой строке в начале строки. В следующем примере строка «linux» будет соответствовать только в том случае, если она встречается в самом начале строки.

Символ (доллар) соответствует пустой строке в начале строки. Чтобы найти строку, заканчивающуюся строкой «linux», вы должны использовать:

Вы также можете создать регулярное выражение, используя оба якоря. Например, чтобы найти строки, содержащие только «linux», выполните:

Еще один полезный пример — шаблон , который соответствует всем пустым строкам.

Ротация лог-файлов

Если учесть, что информация в лог-файлы поступает регулярно и по любому поводу, то в скором времени они должны были бы стать просто гигантскими, занимая при этом огромную кучу места на диске. А работать с ними было бы просто невозможно. Но этого не происходит благодаря ротации лог-файлов.

Цель ротации заключается в сжатии устаревших лог-файлов, которые занимают много места. Лог-файлы, в конце имен которых добавлены нули, являются ротируемыми (их имена были автоматически изменены системой). Ротацию лог-файлов можно выполнить с помощью команды logrotate, например:

Настройки ротации лог-файлов хранятся в соответствующем файле конфигурации /etc/logrotate.conf:

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

    — указывает команде не выводить ошибку, если лог-файл отсутствует.

    — если лог-файл пуст, то ротации не будет.

    — лог-файл необходимо сжать.

    — гарантирует, что лог-файл не превышает заданного размера, в противном случае производится его ротация.

    — ротация лог-файлов по ежедневному расписанию. Также можно задавать ежечасный (), еженедельный (), ежемесячный () или ежегодный () график.

    — создает экземпляр лог-файла, владельцем и группой которого является root.

Теперь, разобравшись с тем, что означает каждый параметр, можно каждому лог-файлу задавать соответствующий индивидуальный параметр ротации.

Основные команды grep

Вывести все упоминания слова

Предположим вы запустили

CentOS Linux

и хотите посмотреть все установленные пакеты в названии которых есть слово
kernel

yum list installed | grep kernel

abrt-addon-kerneloops.x86_64 2.1.11-60.el7.centos @base
kernel.x86_64 3.10.0-1160.el7 @anaconda
kernel.x86_64 3.10.0-1160.2.2.el7 @updates
kernel.x86_64 3.10.0-1160.6.1.el7 @updates
kernel-devel.x86_64 3.10.0-1160.2.2.el7 @updates
kernel-devel.x86_64 3.10.0-1160.6.1.el7 @updates
kernel-headers.x86_64 3.10.0-1160.6.1.el7 @updates
kernel-tools.x86_64 3.10.0-1160.6.1.el7 @updates
kernel-tools-libs.x86_64 3.10.0-1160.6.1.el7 @updates

И наоборот, можно посмотреть все строки где нет слова kernel
: нужно добавить опцию -v

yum list installed | grep -v kernel

Если вам нужно найти что-то в файле, можно вместо | воспользоваться выражением

grep ‘\bkernel\b’ huge_file

Где huge_file это имя файла в текущей директории в котором мы ищем отдельные слова kernel.

То есть слова akernel или kernelz найдены не будут

Вывести всё, что начинается со слова

Если нам теперь не нужны пакеты, в которых слово
kernel
в середине, а только те, которые начинаются с
kernel добавим перед словом знак ^

yum list installed | grep ^kernel

kernel.x86_64 3.10.0-1160.el7 @anaconda
kernel.x86_64 3.10.0-1160.2.2.el7 @updates
kernel.x86_64 3.10.0-1160.6.1.el7 @updates
kernel-devel.x86_64 3.10.0-1160.2.2.el7 @updates
kernel-devel.x86_64 3.10.0-1160.6.1.el7 @updates
kernel-headers.x86_64 3.10.0-1160.6.1.el7 @updates
kernel-tools.x86_64 3.10.0-1160.6.1.el7 @updates
kernel-tools-libs.x86_64 3.10.0-1160.6.1.el7 @updates

grep -E ‘ion$’ huge_file

compensation

generation

Допустим вы знаете только начало и конец слова

grep -E ‘^to..le$’ huge_file

topbicycle

Несколько символов подряд

Найти слова с пятью гласными подряд

grep -E ‘{5}’ /usr/share/dict/words

cadiueio
Chaouia
cooeeing
euouae
Guauaenok
miaoued
miaouing
Pauiie
queueing

Команды Linux для работы с локальными дисками

Эти команды используются для просмотра статистики диска.

89. df

Команда df отображает использование дискового пространства для файловых систем Linux. Она так же отображает общий объем и свободное дисковое пространство, доступное в смонтированных файловых системах.

90. fdisk

Команда Fdisk используется в Linux для просмотра существующих разделов, создания нового раздела, удаления или изменения существующих разделов.

91. du

du (использование диска) — эта команда, используемая в Linux для проверки размера каталога, включая его другое содержимое, а также размер отдельных файлов.

92. findmnt

Команда findmnt используется для перечисления смонтированных файловых систем в Linux. Эта команда будет искать конкретную файловую систему в /etc/fstab, /etc/mtab или /proc/self/mountinfo.

93. mount

mount — это команда, используемая в Linux для подключенных файловых систем и дисков, а команда umount используется для отсоединения (размонтирования) любых подключенных файловых систем или устройств.

Основные параметры команды find

Я не буду перечислять здесь все параметры, рассмотрим только самые полезные.

-P – никогда не открывать символические ссылки.

-L – получает информацию о файлах по символическим ссылкам

Важно для дальнейшей обработки, чтобы обрабатывалась не ссылка, а сам файл.

-maxdepth – максимальная глубина поиска по подкаталогам, для поиска только в текущем каталоге установите 1.

-depth – искать сначала в текущем каталоге, а потом в подкаталогах.

-mount искать файлы только в этой файловой системе.

-version – показать версию утилиты find.

-print – выводить полные имена файлов.

-type f – искать только файлы.

-type d – поиск папки в Linux.

Как использовать команду Grep?

Принадлежащая к семейству Unix команда grep является одним из самых универсальных и полезных инструментов. Эта утилита выполняет поиск в текстовом файле за заданным нами паттерном. Другими словами, с помощью grep вы можете найти необходимое вам слово или значение. А содержащие ваш запрос строки или строка будут выведены в терминал.

На первый взгляд, может показаться, что эта утилита имеет слишком узкое применение. Однако она способна значительно облегчить жизнь системным администраторам, которым приходится обрабатывать множество служб с различными файлами конфигурации. С помощью команды они могут быстро найти необходимые им строки в этих файлах.

Сначала давайте подключимся к VPS с помощью SSH. Вот статья, в которой показано, как это сделать с помощью PuTTY SSH.

ssh vash-user@vash-server

Если на вашем компьютере вы используете Linux, просто откройте терминал.

Синтаксис команды grep при поиске в одном файле выглядит следующим образом:

grep  значение 
  • grep — команда
  • — модификаторы команды
  • значение — поисковый запрос
  • — файл, в котором вы выполняете поиск

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

grep –help

Как видите, команда предлагает нам множество опций. Однако наиболее важными и часто используемыми являются параметры:

  • -i — поиск не будет чувствителен к регистру. То есть, если вы хотите найти слово «автомобиль», написанные как «АВТОМОБИЛЬ» слова тоже будут найдены.
  • -c — покажет только количество строк, содержащих поисковый запрос
  • -r — включает рекурсивный поиск в текущем каталоге
  • -n — выведет номера строк, содержащих поисковый запрос
  • -v — обратный поиск, выводит только строки, в которых нет указанного поискового запроса

2.1, общие параметры и примеры команды grep

Команда grep используется для поиска шаблона, указанного параметром Pattern, и записи каждой соответствующей строки в стандартный вывод. Эти шаблоны являются ограниченными регулярными выражениями, они используют стиль команд ed или egrep. Если в параметре File указано несколько имен, команда grep отобразит имя файла, содержащего совпадающую строку.

Персонажи с особым значением для раковины Он должен быть заключен в двойные кавычки, когда он появляется в параметре Pattern. Если параметр Pattern не является простой строкой, обычно весь шаблон должен быть заключен в одинарные кавычки. В таких какВ таких выражениях, как,(Знак минус) Вы можете указать диапазон в соответствии с последовательностью, которая сортируется в данный момент. Последовательность упорядочения может определять эквивалентные классы для использования в диапазонах символов. Если файл не указан, grep примет стандартный ввод.

Основное регулярное выражение

GNU Grep имеет два набора функций регулярных выражений, Basic и Extended. По умолчанию интерпретирует шаблон как основное регулярное выражение.

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

Используйте символ ^ (символ каретки), чтобы сопоставить выражение в начале строки. В следующем примере строка ^kangaroo будет соответствовать только в том случае, если она встречается в самом начале строки.
grep “^kangaroo” file.txt
Используйте символ $ (доллар), чтобы соответствовать выражению в конце строки. В следующем примере строка kangaroo$ будет соответствовать только в том случае, если она встречается в самом конце строки.
grep “kangaroo$” file.txt
Используйте . (точка) символ для соответствия любому отдельному символу. Например, чтобы сопоставить все, что начинается с kan затем имеет два символа и заканчивается строкой roo, вы можете использовать следующий шаблон:
grep “kan..roo” file.txt
использование (скобки) для соответствия любому отдельному символу, заключенному в скобки. Например, найдите строки, которые содержат accept или « accent, вы можете использовать следующий шаблон:
grep “accet” file.txt
использование (скобки) для соответствия любому отдельному символу, заключенному в скобки. Следующий шаблон будет соответствовать любой комбинации строк, содержащих co(any_letter_except_l)a, такой как coca, cobalt и т. Д., Но не будет совпадать со строками, содержащими cola,
grep “coa” file.txt

Чтобы избежать специального значения следующего символа, используйте символ (обратная косая черта).

Назначение операторов find и grep

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

Команда grep в Linux также относится к поисковым, но внутри файлов. Буквальный перевод команды – «глобальная печать регулярных выражений», но под печатью здесь понимается вывод результатов работы на устройство по умолчанию, каковым обычно является монитор. Обладая огромным потенциалом, оператор используется достаточно часто и позволяет производить поиск внутри одного или нескольких файлов по заданным фрагментам (шаблонам). Поскольку терминология в Linuxе существенно отличается от таковой в среде Windows, очень многие пользователи испытывают значительные трудности с использованием этих команд. Постараемся устранить этот недостаток.

find примеры использования

Ищем все файлы, начиная с текущей директории, название которых начинается на sonikelf:

Найти все файлы, начиная с корневой директории, название которых начинается на sonikelf:

Поиск в директориях /usr/local/man и /opt/local/man файлов, название которых начинается на sonikelf

Ищем все файлы, начиная с текущей директории, название которых начинается на sonikelf или qu

Обратите внимание, что по умолчанию все аргументы соединены с помощью логического и (опция ‘-a’). Если необходимо объединить несколько аргументов логическим или — используйте ключ ‘-o’:

Ищем графические файлы, начиная с текущего каталога (см.на кавычки):

Вывести список файлов (см. на / ) во всей файловой системе, чей размер больше 100 Мб:

Ищем файлы в указанных каталогах:

Поделитесь в социальных сетях:FacebookXВКонтакте
Напишите комментарий