busctl - introspeccione e monitore o barramento D-Bus
busctl [OPTIONS...] [COMMAND] [NAME...]
busctl pode ser usado para introspecção e monitoramento do barramento D-Bus.
Os seguintes comandos são entendidos:
Mostre todos os pares no barramento, por seus nomes de serviço. Por padrão, mostra nomes exclusivos e conhecidos, mas isso pode ser alterado com as opções --unique e --acquired. Esta é a operação padrão se nenhum comando for especificado.
Mostrar informações de processo e credenciais de um serviço de barramento (se for especificado por seu nome exclusivo ou conhecido), um processo (se for especificado por seu PID numérico) ou o proprietário do barramento (se nenhum parâmetro for especificado) .
Mensagens de despejo sendo trocadas. Se SERVICE for especificado, mostra mensagens de ou para este par, identificadas por seu nome conhecido ou exclusivo. Caso contrário, mostra todas as mensagens no barramento. Use Ctrl+C para encerrar o despejo.
Semelhante ao monitor, mas grava a saída no formato pcapng (para obter detalhes, consulte Formato de arquivo de captura PCAP Next Generation (pcapng)[1]). Certifique-se de redirecionar a saída padrão para um arquivo ou pipe. Ferramentas como wireshark(1) podem ser usadas para dissecar e visualizar os arquivos resultantes.
Mostra uma árvore de objetos de um ou mais serviços. Se SERVICE for especificado, mostra a árvore de objetos apenas dos serviços especificados. Caso contrário, mostre todas as árvores de objetos de todos os serviços no barramento que adquiriram pelo menos um nome conhecido.
Mostrar interfaces, métodos, propriedades e sinais do objeto especificado (identificado por seu caminho) no serviço especificado. Se o argumento de interface for passado, a saída será limitada aos membros da interface especificada.
Invoque um método e mostre a resposta. Leva um nome de serviço, caminho de objeto, nome de interface e nome de método. Se os parâmetros devem ser passados para a chamada do método, uma string de assinatura é necessária, seguida dos argumentos, formatados individualmente como strings. Para obter detalhes sobre a formatação usada, consulte abaixo. Para suprimir a saída dos dados retornados, use a opção --quiet.
Emita um sinal. Toma um caminho de objeto, nome de interface e nome de método. Se for necessário passar parâmetros, é necessária uma string de assinatura, seguida dos argumentos, formatados individualmente como strings. Para obter detalhes sobre a formatação usada, consulte abaixo. Para especificar o destino do sinal, use a opção --destination=.
Recupere o valor atual de uma ou mais propriedades do objeto. Leva um nome de serviço, caminho de objeto, nome de interface e nome de propriedade. Várias propriedades podem ser especificadas de uma só vez, caso em que seus valores serão mostrados um após o outro, separados por novas linhas. A saída é, por padrão, em formato conciso. Use --verbose para um formato de saída mais elaborado.
Defina o valor atual de uma propriedade de objeto. Toma um nome de serviço, caminho de objeto, nome de interface, nome de propriedade, assinatura de propriedade, seguido por uma lista de parâmetros formatados como strings.
Mostrar ajuda de sintaxe de comando.
As seguintes opções são compreendidas:
Conecte-se ao barramento especificado por ADDRESS em vez de usar padrões adequados para o sistema ou barramento do usuário (consulte as opções --system e --user ).
Ao mostrar a lista de pares, mostre uma coluna contendo os nomes dos contêineres aos quais eles pertencem. Consulte systemd-machined.service(8).
Ao mostrar a lista de pares, mostre apenas nomes "exclusivos" (no formato ":número.número").
O oposto de --unique — apenas nomes "conhecidos" serão mostrados.
Ao mostrar a lista de peers, mostre apenas os peers que ainda não foram ativados, mas podem ser iniciados automaticamente se acessados.
Ao mostrar as mensagens sendo trocadas, mostre apenas o subconjunto MATCH correspondente. Consulte sd_bus_add_match(3).
Quando usado com o comando capture, especifica o tamanho máximo da mensagem de barramento a ser capturada ("snaplen"). O padrão é 4096 bytes.
Quando usado com o comando tree, mostra uma lista plana de caminhos de objeto em vez de uma árvore.
Quando usado com o comando call, suprime a exibição da carga útil da mensagem de resposta. Observe que mesmo que esta opção seja especificada, os erros retornados ainda serão impressos e a ferramenta indicará sucesso ou falha com o código de saída do processo.
Quando usado com o comando call ou get-property, mostra a saída em um formato mais detalhado.
Quando usado com a chamada introspect, despeja a descrição XML recebida da chamada org.freedesktop.DBus.Introspectable.Introspect do D-Bus em vez da saída normal.
Quando usado com o comando call ou get-property, mostra a saída formatada como JSON. Espera um de "short" (para a saída mais curta possível sem qualquer espaço em branco redundante ou quebras de linha) ou "bonito" (para uma versão bonita do mesmo, com recuo e quebras de linha). Observe que a transformação de D-Bus marshalling para JSON é feita de maneira sem perdas, o que significa que as informações de tipo são incorporadas à árvore de objetos JSON.
Equivalente a --json=pretty quando chamado interativamente de um terminal. Caso contrário, equivalente a --json=short, em particular quando a saída é canalizada para algum outro programa.
Quando usado com o comando call, especifica se busctl deve aguardar a conclusão da chamada do método, exibir os dados de resposta do método retornados e retornar sucesso ou falha por meio do código de saída do processo . Se for definido como "não", a chamada do método será emitida, mas nenhuma resposta é esperada, a ferramenta é encerrada imediatamente e, portanto, nenhuma resposta pode ser mostrada e nenhum sucesso ou falha é retornado por meio do código de saída. Para suprimir apenas a saída da carga da mensagem de resposta, use --quiet acima. O padrão é "sim".
Quando usado com o comando call ou emit, especifica se a chamada do método deve ativar implicitamente o serviço chamado, caso ainda não esteja em execução, mas esteja configurado para ser iniciado automaticamente. O padrão é "sim".
Quando usado com o comando call, especifica se os serviços podem impor autorização interativa durante a execução da operação, se a política de segurança estiver configurada para isso. O padrão é "sim".
Quando usado com o comando call, especifica o tempo máximo de espera pela conclusão da chamada do método. Se nenhuma unidade de tempo for especificada, assume segundos. As outras unidades usuais também são compreendidas (ms, us, s, min, h, d, w, mês, y). Observe que esse tempo limite não se aplica se --expect-reply=no for usado, pois a ferramenta não espera por nenhuma mensagem de resposta. Quando não especificado ou definido como 0, o padrão de "25s" é assumido.
Controla se os dados de credenciais relatados por lista ou status devem ser aumentados com dados de /proc/. Quando ativado, os dados mostrados possivelmente são inconsistentes, pois os dados lidos de /proc/ podem ser mais recentes do que o restante das informações de credencial. O padrão é "sim".
Controla se deve esperar que o soquete de barramento AF_UNIX especificado apareça no sistema de arquivos antes de se conectar a ele. O padrão é desativado. Quando habilitada, a ferramenta observará o sistema de arquivos até que o soquete seja criado e, em seguida, conecte-se a ele.
Leva um nome de serviço. Quando usado com o comando emit, um sinal é emitido para o serviço especificado.
Fale com o gerente de serviço do usuário chamador, em vez do gerente de serviço do sistema.
Fale com o gerente de serviço do sistema. Este é o padrão implícito.
Execute a operação remotamente. Especifique um nome de host ou um nome de usuário e nome de host separados por "@" para se conectar. O nome do host pode opcionalmente ser sufixado por uma porta que o ssh está escutando, separado por ":" e, em seguida, um nome de contêiner, separado por "/", que se conecta diretamente a um contêiner específico no host especificado. Isso usará o SSH para conversar com a instância do gerenciador de máquina remota. Os nomes dos contêineres podem ser enumerados com machinectl -H HOST. Coloque os endereços IPv6 entre colchetes.
Execute a operação em um contêiner local. Especifique um nome de contêiner ao qual se conectar, opcionalmente prefixado por um nome de usuário para se conectar e um caractere "@" de separação. Se a string especial ".host" for usada no lugar do nome do contêiner, uma conexão com o sistema local é feita (o que é útil para conectar-se a um barramento de usuário de usuários específicos: "--user --machine=lennart@.host "). Se a sintaxe "@" não for usada, a conexão será feita como usuário root. Se a sintaxe "@" for usada, o lado esquerdo ou o lado direito podem ser omitidos (mas não ambos), caso em que o nome do usuário local e ".host" estão implícitos.
Não elipse a saída no comando list.
Não canalize a saída para um pager.
Não imprima a legenda, ou seja, cabeçalhos de coluna e rodapé com dicas.
Imprima um pequeno texto de ajuda e saia.
Imprima uma string de versão curta e saia.
Os comandos call e set-property pegam uma string de assinatura seguida por uma lista de parâmetros formatados como string (para detalhes sobre as strings de assinatura do D-Bus, veja o Tipo capítulo do sistema da especificação D-Bus[2]). Para tipos simples, cada parâmetro após a assinatura deve ser simplesmente o valor do parâmetro formatado como string. Valores booleanos positivos podem ser formatados como "true", "yes", "on" ou "1"; valores booleanos negativos podem ser especificados como "falso", "não", "desligado" ou "0". Para arrays, um argumento numérico para o número de entradas seguido pelas entradas deve ser especificado. Para variantes, a assinatura do conteúdo deve ser especificada, seguida do conteúdo. Para dicionários e structs, o conteúdo deles deve ser especificado diretamente.
Por exemplo,
s jawoll
é a formatação de uma única string "jawoll".
as 3 hello world foobar
é a formatação de um array de strings com três entradas, "hello", "world" e "foobar".
a{sv} 3 One s Eins Two u 2 Yes b true
é a formatação de uma matriz de dicionário que mapeia strings para variantes, consistindo em três entradas. A string "One" é atribuída à string "Eins". A string "Two" é atribuída ao inteiro não assinado de 32 bits 2. A string "Yes" é atribuída a um booleano positivo.
Observe que os comandos call, get-property, introspect também gerarão saída neste formato para os dados retornados. Como esse formato às vezes é muito conciso para ser facilmente entendido, os comandos call e get-property podem gerar uma saída mais detalhada e de várias linhas quando passados pelo - opção -verbose.
Exemplo 1. Escrever e ler uma propriedade
Os dois comandos a seguir primeiro escrevem uma propriedade e depois a lêem de volta. A propriedade é encontrada no objeto "/org/freedesktop/systemd1" do serviço "org.freedesktop.systemd1". O nome da propriedade é "LogLevel" na interface "org.freedesktop.systemd1.Manager". A propriedade contém uma única string:
busctl set-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager LogLevel s debug busctl get-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager LogLevel s "debug"
Exemplo 2. Saída concisa e detalhada
Os dois comandos a seguir leem uma propriedade que contém uma matriz de strings e primeiro a mostram em formato conciso, seguido de formato detalhado:
busctl get-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager Environment as 2 "LANG=en_US.UTF-8" "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin" busctl get-property --verbose org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager Environment ARRAY "s" { STRING "LANG=en_US.UTF-8"; STRING "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"; };
Exemplo 3. Chamando um método
O seguinte comando chama o método "StartUnit" na interface "org.freedesktop.systemd1.Manager" do objeto "/org/freedesktop/systemd1" do serviço "org.freedesktop.systemd1" e passa duas strings "cups .service" e "substituir". Como resultado da chamada do método, um único parâmetro de caminho de objeto é recebido e mostrado:
busctl call org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager StartUnit ss "cups.service" "replace" o "/org/freedesktop/systemd1/job/42684"
dbus-daemon(1), D-Bus[3], sd-bus(3), systemd(1), machinectl(1), wireshark(1)
PCAP Next Generation (pcapng) Formato de arquivo de captura: https://github.com/pcapng/pcapng/
Capítulo do sistema de tipos da especificação D-Bus: https://dbus.freedesktop.org/doc/dbus-specification.html#type-system
D-Bus: https://www.freedesktop.org/wiki/Software/dbus