Как найти только два дефиса?

Поскольку это просто сообщения от cron, все метаданные относятся к cron. Пример для пары сообщений о cronjob с использованием--output=json:

{
  "__CURSOR": "s=74429436aba942b6bbfc70cf45bfecc6;i=188d;b=108f80cdd87342bcb9dcafca15c45b57;m=6c13fcb19;t=5697ae32bb8a9;x=d292b55b7b7a140d",
  "__REALTIME_TIMESTAMP": "1523351401773225",
  "__MONOTONIC_TIMESTAMP": "29011987225",
  "_BOOT_ID": "108f80cdd87342bcb9dcafca15c45b57",
  "PRIORITY": "6",
  "_UID": "0",
  "_GID": "0",
  "_CAP_EFFECTIVE": "3fffffffff",
  "_MACHINE_ID": "5a75b95396344578a23193fb7b823946",
  "_HOSTNAME": "muru-1604",
  "_SYSTEMD_SLICE": "system.slice",
  "_TRANSPORT": "syslog",
  "SYSLOG_FACILITY": "10",
  "SYSLOG_IDENTIFIER": "CRON",
  "MESSAGE": "pam_unix(cron:session): session opened for user root by (uid=0)",
  "_COMM": "cron",
  "_EXE": "/usr/sbin/cron",
  "_CMDLINE": "/usr/sbin/CRON -f",
  "_AUDIT_LOGINUID": "0",
  "_SYSTEMD_CGROUP": "/system.slice/cron.service",
  "_SYSTEMD_UNIT": "cron.service",
  "SYSLOG_PID": "22158",
  "_PID": "22158",
  "_AUDIT_SESSION": "110",
  "_SOURCE_REALTIME_TIMESTAMP": "1523351401772733"
}
{
  "__CURSOR": "s=74429436aba942b6bbfc70cf45bfecc6;i=188e;b=108f80cdd87342bcb9dcafca15c45b57;m=6c13fcba9;t=5697ae32bb939;x=33e51a528b0cef96",
  "__REALTIME_TIMESTAMP": "1523351401773369",
  "__MONOTONIC_TIMESTAMP": "29011987369",
  "_BOOT_ID": "108f80cdd87342bcb9dcafca15c45b57",
  "PRIORITY": "6",
  "_UID": "0",
  "_GID": "0",
  "_CAP_EFFECTIVE": "3fffffffff",
  "_MACHINE_ID": "5a75b95396344578a23193fb7b823946",
  "_HOSTNAME": "muru-1604",
  "_SYSTEMD_SLICE": "system.slice",
  "_TRANSPORT": "syslog",
  "SYSLOG_IDENTIFIER": "CRON",
  "_COMM": "cron",
  "_EXE": "/usr/sbin/cron",
  "_CMDLINE": "/usr/sbin/CRON -f",
  "_AUDIT_LOGINUID": "0",
  "_SYSTEMD_CGROUP": "/system.slice/cron.service",
  "_SYSTEMD_UNIT": "cron.service",
  "SYSLOG_FACILITY": "9",
  "MESSAGE": "(root) CMD ([ -x /usr/sbin/dma ] && /usr/sbin/dma -q1)",
  "_AUDIT_SESSION": "110",
  "SYSLOG_PID": "22159",
  "_PID": "22159",
  "_SOURCE_REALTIME_TIMESTAMP": "1523351401773201"
}

Эти два параметра связаны между собой (, см., например, идентификаторы PID или временные метки ), но это отношение нелегко выразить в виде фильтра.

Таким образом, journalctlдля вас мало что можно сделать.


Если вы используете системный таймер, то соответствующий блок, конечно, можно использовать в качестве фильтра дляjournalctl(наряду со всеми другими преимуществами системных таймеров :проверка следующего времени выполнения, немедленное выполнение задания, правильная остановка долгий -запуск cronjob и т. д. ).

1
19.04.2020, 04:49
1 ответ

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

grep -P '(?<!-)--(?!-)' file

или

grep -Pw '(?<!-)--(?!-)' file
2
19.03.2021, 02:27

Теги

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