Команда Linux для поиска файлов с помощью каналов

Kate и kwrite разрешают это по умолчанию. Вы также можете использовать Ctrl + колесо прокрутки для увеличения и уменьшения масштаба.

Libreoffice не позволяет связывать клавиши, но вы можете использовать колесо прокрутки, как указано выше.

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

0
21.08.2018, 03:47
2 ответа

trтранслитерирует символы без разбора, здесь это не совсем уместно. tr -d 0-9удалит все десятичные цифры, в том числе в именах сервисов. Однако может быть полезно сжать последовательности разделителей в одну, чтобы можно было использовать cut.

Вам нужно найти столбец, содержащий имя службы, и извлечь из него имя службы.

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

Вы можете видеть такие вещи, как:

2018-03-13T07:17:01.506581-07:00 host CRON[26456]: (root) CMD (...)

Если имя службы находится в третьем столбце или:

Mar 14 00:35:01 host CRON[19234]: (root) CMD (...)

Где это в пятой колонке.

В этом последнем формате между столбцами месяца и дня может быть 1 или 2 пробела (, где вы должны использовать tr -s ' ', если хотите использовать cutна нем ). Также обратите внимание, что наличие части [pid]не гарантируется (, как и для журналов ядра или журналов, полученных по сети (, последние могут даже не иметь столбца «сервис» )).

Метод, который будет работать для этих двух разных форматов,с GNU grep или совместимым с поддержкой PCRE будет:

grep -Po '^.{7}\S+ \S+ \K[^\s:[]+' /var/log/syslog |
  sort |
  uniq -c |
  sort -rn |
  head -n 5

То есть пропустить первые 7 символов и все символы без пробелов -после этого (, которые охватывают метку времени для обоих форматов )и дополнительный столбец(\S+между двумя пробелами :имя хоста ), а затем сопоставить последовательность символов, отличных от пробела, двоеточия и ], после этого (\K, отмечая начало совпадающей части ).

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

</var/log/syslog cut -c 8- |
  cut -d ' ' -f3 |
  cut -d : -f 1 |
  cut -d '[' -f 1 |
  sort |
  uniq -c |
  sort -rn |
  head -n 5
1
28.01.2020, 02:24

Имя службы доступно в пятом столбце файла журнала системного журнала (, который можно найти на компьютере Ubuntu с настройкой системного журнала по умолчанию ). Обычно указывается как servicename[pid]:, например CRON[1233]:или ntpd[9283]:и т. д.

Чтобы получить пятое поле:

awk '{ print $5 }' /var/log/syslog

Чтобы удалить все из этого поля, начиная с [и далее:

awk '{ sub("[[].*", "", $5); print $5 }' /var/log/syslog

Теперь вы получите список вроде

dhclient
dhclient
dhclient
CRON
ntpd
CRON
CRON
ntpd

Теперь вам просто нужно отсортировать их и посчитать, а лучшие оставить:

awk '{ sub("[[].*", "", $5); print $5 }' /var/log/syslog |
sort | uniq -c | sort -rn | head -n 5

Это может вывести что-то вроде

 27 dhclient
 23 CRON
 13 ntpd

(только три службы на этой конкретной машине ).

Чтобы удалить числа, отфильтруйте их с помощью awk '{ print $2 }'.


Вы также можете использовать trи cut, но это слишком "простые" инструменты для этой работы, ИМХО. cutв частности, необходимо точно знать, сколько символов-разделителей следует обрезать, поэтому, если столбец ограничен более чем одним пробелом, cutнеобходимо это учитывать.

2
28.01.2020, 02:24

Теги

Похожие вопросы