AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 506833
Accepted
sdht0
sdht0
Asked: 2019-03-18 08:09:42 +0800 CST2019-03-18 08:09:42 +0800 CST 2019-03-18 08:09:42 +0800 CST

Mostrar logs de diário a partir do momento em que um serviço foi reiniciado

  • 772

Existe uma maneira canônica de obter todos os logs do journalctl desde que um serviço foi reiniciado pela última vez? O que eu quero fazer é reiniciar um serviço e ver imediatamente todos os logs desde que iniciei a reinicialização.

Eu vim com:

$ unit=prometheus
$ sudo systemctl restart $unit
$ since=$(systemctl show $unit | grep StateChangeTimestamp= | awk -F= '{print $2}')
$ sudo systemctl status -n0 $unit && sudo journalctl -f -u $unit -S "$since"

Isso provavelmente funcionará, mas eu queria saber se existe uma maneira mais concreta de dizer: reinicie e me dê todos os logs a partir desse ponto.

journalctl systemctl
  • 2 2 respostas
  • 1527 Views

2 respostas

  • Voted
  1. Best Answer
    filbranden
    2019-03-18T14:19:10+08:002019-03-18T14:19:10+08:00

    Você pode usar o id de invocação , que é um identificador exclusivo para uma execução específica de uma unidade de serviço.

    Ele foi introduzido no systemd v232, então você precisa de pelo menos essa versão do systemd para que isso funcione.

    Para obter o id de invocação da execução atual do serviço:

    $ unit=prometheus
    $ systemctl show -p InvocationID --value "$unit"
    0e486642eb5b4caeaa5ed1c56010d5cf
    

    E, em seguida, para pesquisar entradas de diário com esse id de invocação anexado a elas:

    $ journalctl INVOCATION_ID=0e486642eb5b4caeaa5ed1c56010d5cf + _SYSTEMD_INVOCATION_ID=0e486642eb5b4caeaa5ed1c56010d5cf
    

    Descobri que você precisa de INVOCATION_ID e _SYSTEMD_INVOCATION_ID para obter todos os logs. O último é adicionado pelo systemd para saída de logs pela própria unidade (por exemplo, o stdout do processo em execução nesse serviço), enquanto o primeiro é anexado aos eventos obtidos pelo systemd (por exemplo, mensagens "Iniciando" e "Iniciado" para essa unidade. )

    Observe que você também não precisa filtrar pelo nome da unidade. Como o id de invocação é exclusivo, a filtragem pelo próprio id é suficiente para incluir apenas os logs do serviço em que você está interessado.

    • 7
  2. sdht0
    2019-03-25T16:46:57+08:002019-03-25T16:46:57+08:00

    Enquanto aprendi algo novo com a resposta do @filbranden e a aceitei, descobri que a técnica não generaliza. Por exemplo, se eu quiser parar um serviço e ver seus logs de encerramento, essa técnica não funcionará porque um serviço interrompido não possui um invocationID.

    Acabei usando uma técnica mais básica --- simplesmente armazenando o tempo antes dos comandos e mostrando todos os logs desde aquele tempo.

    status_from() { sudo systemctl status -l --no-pager -n0 $1; echo; sudo journalctl -f -u $1 -S "$2"; }
    start() { dt=$(date +'%a %Y-%m-%d %T %Z'); sudo systemctl start $1; status_from $1 "$dt"; }
    stop() { dt=$(date +'%a %Y-%m-%d %T %Z'); sudo systemctl stop $1; status_from $1 "$dt"; }
    restart() { dt=$(date +'%a %Y-%m-%d %T %Z'); sudo systemctl restart $1; status_from $1 "$dt"; }
    
    • 0

relate perguntas

  • Reiniciando o serviço com base nas palavras-chave de saída do log

  • Por que systemctl halt pede senha, mas systemctl reboot e systemctl poweroff não?

  • Laptop acorda quando a tampa está fechada

  • Visualize os tempos originais das mensagens do kernel a partir dos logs históricos do sistema

  • Como ver as últimas linhas x do log de serviço systemctl

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve