regex - journalctl使用正则表达式搜索元数据

标签 regex linux

是否可以通过带有模式的元数据在journalctl中搜索。我现在要做的是像journalctl CONTAINER_NAME=cranky.hello --lines=100 -f那样搜索。但我想实现的是在那之后搜索所有东西。一些搜索模式,如journalctl CONTAINER_NAME=cranky.* --lines=100 -f。它还将搜索容器名元数据,如:
古怪的世界
暴躁,活泼
下面是执行journalctl时的输出示例:
journalctl container_name=cranky.hello--lines=100-f
Oct 17 14:33:35 lottery-staging docker[55587]: chdir: /usr/src/app Oct 17 14:33:35 lottery-staging docker[55587]: daemon: False Oct 17 14:33:35 lottery-staging docker[55587]: raw_env: [] Oct 17 14:33:35 lottery-staging docker[55587]: pidfile: None Oct 17 14:33:35 lottery-staging docker[55587]: worker_tmp_dir: None
journalctl container_name=cranky.hello--lines=100-f-o json
{ "__CURSOR" : "s=d98b3d664a71409d9a4d6145b0f8ad93;i=731e;b=2f9d75ec91044d52b8c5e5091370bcf7;m=285b067a063;t=55bbf0361352a;x=64b377c33c8fba96", "__REALTIME_TIMESTAMP" : "1508250837136682", "__MONOTONIC_TIMESTAMP" : "2773213487203", "_BOOT_ID" : "2f9d75ec91044d52b8c5e5091370bcf7", "CONTAINER_TAG" : "", "_TRANSPORT" : "journal", "_PID" : "55587", "_UID" : "0", "_GID" : "0", "_COMM" : "docker", "_EXE" : "/usr/bin/docker", "_CMDLINE" : "/usr/bin/docker daemon -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 --userland-proxy=false --tlscert /etc/dockercloud/agent/cert.pem --tlskey /etc/dockercloud/agent/key.pem --tlscacert /etc/dockercloud/agent/ca.pem --tlsverify --log-driver journald", "_SYSTEMD_CGROUP" : "/", "_SELINUX_CONTEXT" : [ 117, 110, 99, 111, 110, 102, 105, 110, 101, 100, 10 ], "_MACHINE_ID" : "0a80624bd4c45a792b0a857c59a858d6", "_HOSTNAME" : "lottery-staging", "PRIORITY" : "6", "MESSAGE" : "Running migrations:", "CONTAINER_ID_FULL" : "c8f60546e9d50f034f364259c409760b3390d979d57a773eccd8d852e1c3553f", "CONTAINER_NAME" : "ghost-1.lottery-staging-stack.c6118be4", "CONTAINER_ID" : "c8f60546e9d5", "_SOURCE_REALTIME_TIMESTAMP" : "1508250837135650" } { "__CURSOR" : "s=d98b3d664a71409d9a4d6145b0f8ad93;i=731f;b=2f9d75ec91044d52b8c5e5091370bcf7;m=285b067a2a2;t=55bbf0361376a;x=6c87fea4ea155d00", "__REALTIME_TIMESTAMP" : "1508250837137258", "__MONOTONIC_TIMESTAMP" : "2773213487778", "_BOOT_ID" : "2f9d75ec91044d52b8c5e5091370bcf7", "CONTAINER_TAG" : "", "_TRANSPORT" : "journal", "_PID" : "55587", "_UID" : "0", "_GID" : "0", "_COMM" : "docker", "_EXE" : "/usr/bin/docker", "_CMDLINE" : "/usr/bin/docker daemon -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 --userland-proxy=false --tlscert /etc/dockercloud/agent/cert.pem --tlskey /etc/dockercloud/agent/key.pem --tlscacert /etc/dockercloud/agent/ca.pem --tlsverify --log-driver journald", "_SYSTEMD_CGROUP" : "/", "_SELINUX_CONTEXT" : [ 117, 110, 99, 111, 110, 102, 105, 110, 101, 100, 10 ], "_MACHINE_ID" : "0a80624bd4c45a792b0a857c59a858d6", "_HOSTNAME" : "lottery-staging", "PRIORITY" : "6", "MESSAGE" : " No migrations to apply.", "CONTAINER_ID_FULL" : "c8f60546e9d50f034f364259c409760b3390d979d57a773eccd8d852e1c3553f", "CONTAINER_NAME" : "ghost-1.lottery-staging-stack.c6118be4", "CONTAINER_ID" : "c8f60546e9d5", "_SOURCE_REALTIME_TIMESTAMP" : "1508250837135667" }

最佳答案

journalctl不接受除单元名以外的任何模式(在-u参数中)。根据需要,可以使用json输出和grep执行一些筛选,如:

journalctl -u docker -o json -n1000 | grep 'CONTAINER_NAME.*cranky\.'

关于regex - journalctl使用正则表达式搜索元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46793142/

相关文章:

javascript - 如何使用javascript随机使用and或&替换一个标点符号

linux - Bash 解析路由命令中的输出

linux - dos 或 linux 多行搜索和多行替换/添加

linux - 无法弄清楚这个段错误

python - 在 Python 中使用正则表达式识别数字列表

regex - 为什么/\w+ :/and/\S+:/handle backtracking differently?

c - 什么时候需要 F_GETFL fcntl 命令的参数?

linux - 无法在linux中编译opencv

regex - 捕获由单词绑定(bind)且包含特定单词的组

python:如何使用正则表达式编写此代码?