Вопрос или проблема
journalctl -u ssh
выводит все записи, связанные с юнитом ssh. Но как мне получить все записи, не связанные с юнитом ssh? Варианты, которые не работают: journalctl -u '!ssh'
; journalctl '!_SYSTEMD_UNIT=ssh'
; journalctl '_SYSTEMD_UNIT!=ssh'
. Документация не утверждает, что это возможно, но я все еще надеюсь. 😉
Ответ или решение
Чтобы просмотреть записи системного журнала с использованием journalctl
, исключая записи, связанные с определённой единицей (например, с ssh
), необходимо использовать подходы, которые не подкрепляются стандартными флагами. Ваша задача усложняется тем, что journalctl
не предоставляет прямой возможности фильтровать записи по принципу "всё, кроме". Тем не менее, это можно сделать с помощью других средств и методов.
Способы исключения единиц из вывода journalctl
-
Фильтрация через
grep
:
Вы можете воспользоваться утилитой командной строкиgrep
для фильтрации выводаjournalctl
. Вот команда, которая позволит вам вывести все записи, за исключением связанных сssh
:journalctl | grep -v 'ssh'
В данном случае
-v
говоритgrep
исключить все строки, содержащие словоssh
. Однако имейте в виду, что такой подход не идеален, так как он не учитывает уникальные идентификаторы служебных единиц, а просто отсекает все строки с вхождениемssh
, что может привести к потере некоторой информации. -
Использование
journalctl
с фильтрацией системных единиц:
Другая, более точная команда заключается в использовании-t
(tag) вместе с возможностью указать конкретные идентификаторы для других единиц. Это потребует знания о доступных единицах:journalctl -t [другие_единицы]
Этот метод не исключает
ssh
, но позволяет явно задать, какие единицы вы хотите включить в вывод. -
Создание кастомного скрипта:
Если вышеуказанные методы не дают желаемого результата, можно создать bash-скрипт, который будет использоватьjournalctl
, объединять вывод, а затем исключать ненужные записи. Пример такого скрипта:#!/bin/bash journalctl --no-pager | grep -v 'ssh'
Сохраняя этот скрипт, вы можете запускать его каждый раз, когда вам нужно исключить записи
ssh
из вывода.
Заключение
Несмотря на то что возможности стандартных опций journalctl
не позволяют напрямую исключать единицы из вывода, вы можете использовать фильтрацию через grep
или создать скрипт для большей автоматизации. Такой подход поможет вам не только избегать записи единиц, которые вас не интересуют, но и получать целенаправленную и более управляемую информацию из системного журнала.
Для поддержания эффективности этой работы всегда следите за обновлениями документации systemd
и journalctl
, так как новые функции могут быть добавлены в будущем.