busctl - introspectar y monitorear el bus D-Bus
busctl [OPTIONS...] [COMMAND] [NAME...]
busctl se puede usar para realizar una introspección y monitorear el bus D-Bus.
Se entienden los siguientes comandos:
Muestre a todos los pares en el bus, por sus nombres de servicio. De forma predeterminada, muestra nombres únicos y conocidos, pero esto se puede cambiar con los modificadores --unique y --acquired. Esta es la operación predeterminada si no se especifica ningún comando.
Muestra la información del proceso y las credenciales de un servicio de bus (si se especifica uno por su nombre único o conocido), un proceso (si se especifica por su PID numérico) o el propietario del bus (si no se especifica ningún parámetro) .
Volcar los mensajes que se intercambian. Si se especifica SERVICE, muestra los mensajes hacia o desde este par, identificado por su nombre conocido o único. De lo contrario, muestra todos los mensajes en el bus. Utilice Ctrl+C para finalizar el volcado.
Similar a monitor pero escribe la salida en formato pcapng (para obtener más información, consulte Formato de archivo de captura de próxima generación (pcapng) PCAP[1]). Asegúrese de redirigir la salida estándar a un archivo o tubería. Se pueden usar herramientas como wireshark(1) para diseccionar y ver los archivos resultantes.
Muestra un árbol de objetos de uno o más servicios. Si se especifica SERVICE, muestra el árbol de objetos de los servicios especificados únicamente. De lo contrario, muestre todos los árboles de objetos de todos los servicios en el bus que adquirieron al menos un nombre conocido.
Muestra interfaces, métodos, propiedades y señales del objeto especificado (identificado por su ruta) en el servicio especificado. Si se pasa el argumento de la interfaz, la salida se limita a los miembros de la interfaz especificada.
Invoca un método y muestra la respuesta. Toma un nombre de servicio, una ruta de objeto, un nombre de interfaz y un nombre de método. Si se deben pasar parámetros a la llamada al método, se requiere una cadena de firma, seguida de los argumentos, formateados individualmente como cadenas. Para obtener detalles sobre el formato utilizado, consulte a continuación. Para suprimir la salida de los datos devueltos, utilice la opción --quiet.
Emite una señal. Toma una ruta de objeto, un nombre de interfaz y un nombre de método. Si se deben pasar parámetros, se requiere una cadena de firma, seguida de los argumentos, formateados individualmente como cadenas. Para obtener detalles sobre el formato utilizado, consulte a continuación. Para especificar el destino de la señal, utilice la opción --destination=.
Recuperar el valor actual de una o más propiedades de objeto. Toma un nombre de servicio, una ruta de objeto, un nombre de interfaz y un nombre de propiedad. Se pueden especificar varias propiedades a la vez, en cuyo caso sus valores se mostrarán uno tras otro, separados por saltos de línea. La salida es, por defecto, en formato conciso. Utilice --verbose para obtener un formato de salida más elaborado.
Establece el valor actual de una propiedad de objeto. Toma un nombre de servicio, ruta de objeto, nombre de interfaz, nombre de propiedad, firma de propiedad, seguido de una lista de parámetros formateados como cadenas.
Mostrar ayuda de sintaxis de comandos.
Se entienden las siguientes opciones:
Conéctese al bus especificado por DIRECCIÓN en lugar de usar los valores predeterminados adecuados para el bus del sistema o del usuario (consulte las opciones --system y --user ).
Cuando muestre la lista de pares, muestre una columna que contenga los nombres de los contenedores a los que pertenecen. Consulte systemd-machined.service(8).
Cuando muestre la lista de pares, muestre solo nombres "únicos" (de la forma ":número.número").
Lo contrario de --unique: solo se mostrarán los nombres "bien conocidos".
Al mostrar la lista de pares, muestre solo los pares que aún no se han activado, pero que pueden iniciarse automáticamente si se accede a ellos.
Cuando muestre los mensajes que se intercambian, muestre solo el subconjunto que coincida con MATCH. Ver sd_bus_add_match(3).
Cuando se usa con el comando capture, especifica el tamaño máximo de mensaje de bus para capturar ("snaplen"). El valor predeterminado es 4096 bytes.
Cuando se usa con el comando árbol, muestra una lista plana de rutas de objetos en lugar de un árbol.
Cuando se usa con el comando llamar, suprime la visualización de la carga útil del mensaje de respuesta. Tenga en cuenta que incluso si se especifica esta opción, los errores devueltos seguirán imprimiéndose y la herramienta indicará el éxito o el fracaso con el código de salida del proceso.
Cuando se usa con el comando llamar o obtener-propiedad, muestra la salida en un formato más detallado.
Cuando se utiliza con la llamada introspect, descargue la descripción XML recibida de la llamada D-Bus org.freedesktop.DBus.Introspectable.Introspect en lugar de la salida normal.
Cuando se usa con el comando llamar o get-property, muestra la salida con formato JSON. Espera uno de "corto" (para la salida más corta posible sin espacios en blanco redundantes o saltos de línea) o "bonito" (para una versión bonita de lo mismo, con sangría y saltos de línea). Tenga en cuenta que la transformación de clasificación de D-Bus a JSON se realiza sin pérdidas, lo que significa que la información de tipo está incrustada en el árbol de objetos JSON.
Equivalente a --json=pretty cuando se invoca de forma interactiva desde una terminal. De lo contrario, equivalente a --json=short, en particular cuando la salida se canaliza a algún otro programa.
Cuando se usa con el comando call, especifica si busctl debe esperar a que se complete la llamada al método, generar los datos de respuesta del método devueltos y devolver el éxito o el fracaso a través del código de salida del proceso. . Si se establece en "no", se emitirá la llamada al método pero no se espera una respuesta, la herramienta finaliza inmediatamente y, por lo tanto, no se puede mostrar ninguna respuesta y no se devuelve ningún éxito o falla a través del código de salida. Para suprimir solo la salida de la carga útil del mensaje de respuesta, use --quiet arriba. El valor predeterminado es "sí".
Cuando se usa con el comando llamar o emitir, especifica si la llamada al método debe activar implícitamente el servicio llamado, si aún no se está ejecutando pero está configurado para iniciarse automáticamente. El valor predeterminado es "sí".
Cuando se usa con el comando llamar, especifica si los servicios pueden imponer una autorización interactiva mientras se ejecuta la operación, si la política de seguridad está configurada para esto. El valor predeterminado es "sí".
Cuando se usa con el comando llamar, especifica el tiempo máximo de espera para que se complete la llamada al método. Si no se especifica ninguna unidad de tiempo, asume segundos. También se entienden las otras unidades habituales (ms, us, s, min, h, d, w, month, y). Tenga en cuenta que este tiempo de espera no se aplica si se usa --expect-reply=no, ya que la herramienta no espera ningún mensaje de respuesta en ese momento. Cuando no se especifica o cuando se establece en 0, se asume el valor predeterminado de "25 s".
Controla si los datos de credenciales informados por lista o estado se deben aumentar con datos de /proc/. Cuando está activado, es posible que los datos mostrados sean inconsistentes, ya que los datos leídos de /proc/ pueden ser más recientes que el resto de la información de credenciales. El valor predeterminado es "sí".
Controla si esperar a que aparezca el conector de bus AF_UNIX especificado en el sistema de archivos antes de conectarse a él. Por defecto está desactivado. Cuando está habilitada, la herramienta observará el sistema de archivos hasta que se cree el socket y luego se conectará a él.
Toma un nombre de servicio. Cuando se usa con el comando emit, se emite una señal al servicio especificado.
Hable con el administrador de servicios del usuario que llama, en lugar del administrador de servicios del sistema.
Hable con el administrador de servicios del sistema. Este es el valor predeterminado implícito.
Ejecutar la operación de forma remota. Especifique un nombre de host, o un nombre de usuario y un nombre de host separados por "@", para conectarse. Opcionalmente, el nombre de host puede tener como sufijo un puerto en el que ssh está escuchando, separado por ":", y luego un nombre de contenedor, separado por "/", que se conecta directamente a un contenedor específico en el host especificado. Esto usará SSH para hablar con la instancia del administrador de la máquina remota. Los nombres de contenedores se pueden enumerar con machinectl -H HOST. Ponga las direcciones IPv6 entre paréntesis.
Ejecutar operación en un contenedor local. Especifique un nombre de contenedor al que conectarse, opcionalmente con el prefijo de un nombre de usuario para conectarse y un carácter "@" de separación. Si se usa la cadena especial ".host" en lugar del nombre del contenedor, se establece una conexión con el sistema local (que es útil para conectarse al bus de usuario de un usuario específico: "--user --machine=lennart@.host "). Si no se utiliza la sintaxis "@", la conexión se realiza como usuario root. Si se usa la sintaxis "@", se puede omitir el lado izquierdo o el lado derecho (pero no ambos), en cuyo caso el nombre de usuario local y ".host" están implícitos.
No elipse la salida en el comando list.
No canalice la salida a un buscapersonas.
No imprima la leyenda, es decir, los encabezados de columna y el pie de página con sugerencias.
Imprima un breve texto de ayuda y salga.
Imprima una cadena de versión corta y salga.
Los comandos call y set-property toman una cadena de firma seguida de una lista de parámetros formateados como cadena (para obtener detalles sobre las cadenas de firma de D-Bus, consulte el Type capítulo del sistema de la especificación D-Bus[2]). Para tipos simples, cada parámetro que sigue a la firma debe ser simplemente el valor de los parámetros con formato de cadena. Los valores booleanos positivos pueden formatearse como "verdadero", "sí", "encendido" o "1"; los valores booleanos negativos se pueden especificar como "falso", "no", "desactivado" o "0". Para matrices, se especificará un argumento numérico para el número de entradas seguido de las entradas. Para las variantes, se especificará la firma del contenido, seguida del contenido. Para diccionarios y estructuras, se especificará directamente el contenido de los mismos.
Por ejemplo,
s jawoll
es el formateo de una sola cadena "jawoll".
as 3 hello world foobar
es el formateo de una matriz de cadenas con tres entradas, "hola", "mundo" y "foobar".
a{sv} 3 One s Eins Two u 2 Yes b true
es el formato de una matriz de diccionario que asigna cadenas a variantes, que consta de tres entradas. A la cadena "Uno" se le asigna la cadena "Eins". A la cadena "Dos" se le asigna el entero sin signo 2 de 32 bits. A la cadena "Sí" se le asigna un valor booleano positivo.
Tenga en cuenta que los comandos llamar, obtener propiedad, introspección también generarán resultados en este formato para los datos devueltos. Dado que este formato a veces es demasiado conciso para ser entendido fácilmente, los comandos llamar y obtener-propiedad pueden generar una salida de varias líneas más detallada cuando se pasa el comando - -opción detallada.
Ejemplo 1. Escribir y leer una propiedad
Los siguientes dos comandos primero escriben una propiedad y luego la vuelven a leer. La propiedad se encuentra en el objeto "/org/freedesktop/systemd1" del servicio "org.freedesktop.systemd1". El nombre de la propiedad es "LogLevel" en la interfaz "org.freedesktop.systemd1.Manager". La propiedad contiene una sola cadena:
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"
Ejemplo 2. Salida concisa y detallada
Los siguientes dos comandos leen una propiedad que contiene una matriz de cadenas y primero la muestran en formato conciso, seguido de formato detallado:
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"; };
Ejemplo 3. Invocación de un método
El siguiente comando invoca el método "StartUnit" en la interfaz "org.freedesktop.systemd1.Manager" del objeto "/org/freedesktop/systemd1" del servicio "org.freedesktop.systemd1" y le pasa dos cadenas "cups .servicio" y "reemplazar". Como resultado de la llamada al método, se recibe y se muestra un único parámetro de ruta de objeto:
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)
Formato de archivo de captura de próxima generación (pcapng) de PCAP: https://github.com/pcapng/pcapng/
Escriba el capítulo del sistema de la especificación D-Bus: https://dbus.freedesktop.org/doc/dbus-specification.html#type-system
D-Bus: https://www.freedesktop.org/wiki/Software/dbus