Kate и kwrite разрешают это по умолчанию. Вы также можете использовать Ctrl + колесо прокрутки для увеличения и уменьшения масштаба.
Libreoffice не позволяет связывать клавиши, но вы можете использовать колесо прокрутки, как указано выше.
Если вы используете gvim
, вы можете легко привязать нажатия клавиш для увеличения.
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
Имя службы доступно в пятом столбце файла журнала системного журнала (, который можно найти на компьютере 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
необходимо это учитывать.