busctl - introspekcja i monitorowanie magistrali D-Bus
busctl [OPTIONS...] [COMMAND] [NAME...]
busctl może być używany do introspekcji i monitorowania magistrali D-Bus.
Rozumie się następujące polecenia:
Pokaż wszystkich rówieśników w autobusie według ich nazw usług. Domyślnie pokazuje zarówno unikalne, jak i dobrze znane nazwy, ale można to zmienić za pomocą przełączników --unique i --acquired. Jest to operacja domyślna, jeśli nie określono żadnego polecenia.
Pokaż informacje o procesie i poświadczenia usługi magistrali (jeśli jest określona przez unikalną lub dobrze znaną nazwę), procesu (jeśli jest określony przez numeryczny PID) lub właściciela magistrali (jeśli nie określono żadnego parametru) .
Wymieniane wiadomości zrzutu. Jeśli określono SERVICE, pokaż wiadomości do lub od tego peera, identyfikowane przez dobrze znaną lub unikalną nazwę. W przeciwnym razie pokaż wszystkie wiadomości na magistrali. Użyj klawiszy Ctrl+C, aby zakończyć zrzut.
Podobny do monitora, ale zapisuje dane wyjściowe w formacie pcapng (szczegółowe informacje można znaleźć w Format pliku przechwytywania PCAP Next Generation (pcapng)[1]). Pamiętaj, aby przekierować standardowe wyjście do pliku lub potoku. Narzędzia takie jak wireshark(1) mogą być używane do analizowania i przeglądania plików wynikowych.
Pokazuje drzewo obiektów jednej lub więcej usług. Jeśli określono SERVICE, pokaż drzewo obiektów tylko określonych usług. W przeciwnym razie pokaż wszystkie drzewa obiektów wszystkich usług na magistrali, które uzyskały co najmniej jedną dobrze znaną nazwę.
Pokaż interfejsy, metody, właściwości i sygnały określonego obiektu (identyfikowanego przez jego ścieżkę) w określonej usłudze. Jeśli argument interfejsu zostanie przekazany, dane wyjściowe są ograniczone do członków określonego interfejsu.
Wywołaj metodę i pokaż odpowiedź. Pobiera nazwę usługi, ścieżkę obiektu, nazwę interfejsu i nazwę metody. Jeśli parametry mają zostać przekazane do wywołania metody, wymagany jest ciąg podpisu, po którym następują argumenty, indywidualnie sformatowane jako ciągi. Szczegółowe informacje na temat zastosowanego formatowania znajdują się poniżej. Aby ukryć wyjście zwróconych danych, użyj opcji --quiet.
Wyemituj sygnał. Pobiera ścieżkę obiektu, nazwę interfejsu i nazwę metody. Jeśli parametry mają zostać przekazane, wymagany jest ciąg podpisu, po którym następują argumenty, indywidualnie sformatowane jako ciągi. Szczegółowe informacje na temat zastosowanego formatowania znajdują się poniżej. Aby określić miejsce docelowe sygnału, użyj opcji --destination=.
Pobierz bieżącą wartość jednej lub więcej właściwości obiektu. Pobiera nazwę usługi, ścieżkę obiektu, nazwę interfejsu i nazwę właściwości. Można określić wiele właściwości jednocześnie, w takim przypadku ich wartości będą wyświetlane jedna po drugiej, oddzielone znakami nowej linii. Dane wyjściowe są domyślnie w zwięzłym formacie. Użyj --verbose, aby uzyskać bardziej rozbudowany format wyjściowy.
Ustaw bieżącą wartość właściwości obiektu. Pobiera nazwę usługi, ścieżkę obiektu, nazwę interfejsu, nazwę właściwości, sygnaturę właściwości, a następnie listę parametrów sformatowanych jako ciągi znaków.
Pokaż pomoc dotyczącą składni poleceń.
Rozumie się następujące opcje:
Połącz się z magistralą określoną przez ADRES zamiast używać odpowiednich wartości domyślnych dla magistrali systemowej lub magistrali użytkownika (zobacz opcje --system i --user ).
Podczas wyświetlania listy elementów równorzędnych pokaż kolumnę zawierającą nazwy kontenerów, do których należą. Zobacz systemd-machined.service(8).
Wyświetlając listę peerów, pokazuj tylko „unikatowe” nazwy (w postaci „:liczba.liczba”).
Przeciwieństwo --unique — zostaną pokazane tylko „dobrze znane” nazwiska.
Wyświetlając listę peerów, pokazuj tylko peery, które faktycznie nie zostały jeszcze aktywowane, ale mogą zostać uruchomione automatycznie, jeśli uzyskasz do nich dostęp.
Podczas wyświetlania wymienianych wiadomości pokazuj tylko podzbiór pasujący do POZYCJA. Zobacz sd_bus_add_match(3).
W połączeniu z poleceniem capture określa maksymalny rozmiar komunikatu magistrali do przechwycenia („snaplen”). Domyślnie 4096 bajtów.
W połączeniu z poleceniem tree pokazuje płaską listę ścieżek obiektów zamiast drzewa.
W przypadku użycia z poleceniem call pomija wyświetlanie ładunku komunikatu odpowiedzi. Należy zauważyć, że nawet jeśli ta opcja jest określona, zwrócone błędy będą nadal drukowane, a narzędzie wskaże powodzenie lub niepowodzenie za pomocą kodu zakończenia procesu.
W połączeniu z poleceniem call lub get-property wyświetla dane wyjściowe w bardziej szczegółowym formacie.
W przypadku użycia z wywołaniem introspect zrzuć opis XML otrzymany z wywołania D-Bus org.freedesktop.DBus.Introspectable.Introspect zamiast normalnego wyjścia.
W połączeniu z poleceniem call lub get-property powoduje wyświetlenie danych wyjściowych w formacie JSON. Oczekuje jednego z „krótkich” (dla najkrótszego możliwego wyniku bez zbędnych białych znaków lub podziałów linii) lub „ładnego” (dla ładnej wersji tego samego, z wcięciami i podziałami linii). Należy zauważyć, że transformacja z marshallingu D-Bus do JSON odbywa się w sposób bezstratny, co oznacza, że informacje o typie są osadzone w drzewie obiektów JSON.
Odpowiednik --json=pretty, gdy jest wywoływany interaktywnie z terminala. Poza tym odpowiednik --json=short, w szczególności gdy dane wyjściowe są przekazywane do innego programu.
W przypadku użycia z poleceniem call określa, czy busctl ma czekać na zakończenie wywołania metody, wyświetlać zwrócone dane odpowiedzi metody i zwracać sukces lub niepowodzenie poprzez kod zakończenia procesu . Jeśli ta opcja jest ustawiona na „nie”, wywołanie metody zostanie wywołane, ale nie oczekuje się żadnej odpowiedzi, narzędzie natychmiast kończy działanie, a zatem nie można wyświetlić żadnej odpowiedzi, a kod wyjścia nie zwraca żadnego sukcesu ani niepowodzenia. Aby ukryć tylko dane wyjściowe ładunku wiadomości odpowiedzi, użyj --quiet powyżej. Domyślnie „tak”.
W przypadku użycia z poleceniem call lub emit określa, czy wywołanie metody powinno niejawnie aktywować wywoływaną usługę, jeśli nie jest jeszcze uruchomiona, ale jest skonfigurowana do automatycznego uruchamiania. Domyślnie „tak”.
W przypadku użycia z poleceniem call określa, czy usługi mogą wymuszać interaktywną autoryzację podczas wykonywania operacji, jeśli polityka bezpieczeństwa jest do tego skonfigurowana. Domyślnie „tak”.
W przypadku użycia z poleceniem call określa maksymalny czas oczekiwania na zakończenie wywołania metody. Jeśli nie określono jednostki czasu, przyjmuje się, że są to sekundy. Zwykłe inne jednostki są również rozumiane (ms, us, s, min, h, d, w, miesiąc, y). Pamiętaj, że ten limit czasu nie ma zastosowania, jeśli użyto --expect-reply=no, ponieważ narzędzie nie czeka wtedy na żadną odpowiedź. Jeśli nie określono lub gdy ustawiono na 0, przyjmowana jest domyślna wartość „25s”.
Kontroluje, czy dane uwierzytelniające zgłaszane przez list lub status mają być rozszerzane o dane z /proc/. Gdy ta opcja jest włączona, wyświetlane dane mogą być niespójne, ponieważ dane odczytane z /proc/ mogą być nowsze niż pozostałe informacje uwierzytelniające. Domyślnie „tak”.
Określa, czy czekać, aż określone gniazdo magistrali AF_UNIX pojawi się w systemie plików, zanim się z nim połączy. Domyślnie wyłączone. Po włączeniu narzędzie będzie obserwowało system plików do momentu utworzenia gniazda, a następnie połączy się z nim.
Przyjmuje nazwę usługi. W przypadku użycia z poleceniem emit emitowany jest sygnał do określonej usługi.
Porozmawiaj z kierownikiem serwisu dzwoniącego użytkownika, a nie z kierownikiem serwisu systemu.
Porozmawiaj z kierownikiem serwisu systemu. To jest domniemane ustawienie domyślne.
Wykonaj operację zdalnie. Podaj nazwę hosta lub nazwę użytkownika i nazwę hosta oddzielone znakiem „@”, z którym chcesz się połączyć. Nazwa hosta może być opcjonalnie poprzedzona sufiksem portu, na którym nasłuchuje ssh, oddzielonym znakiem „:”, a następnie nazwą kontenera oddzieloną znakiem „/”, który łączy się bezpośrednio z określonym kontenerem na określonym hoście. Spowoduje to użycie SSH do rozmowy z instancją zdalnego menedżera komputera. Nazwy kontenerów można wyliczać za pomocą machinectl -H HOST. Umieść adresy IPv6 w nawiasach.
Wykonaj operację na kontenerze lokalnym. Określ nazwę kontenera, z którym chcesz się połączyć, opcjonalnie poprzedzoną nazwą użytkownika, z którym chcesz się połączyć, oraz oddzielającym znakiem „@”. Jeśli zamiast nazwy kontenera zostanie użyty specjalny ciąg znaków „.host”, nawiązywane jest połączenie z systemem lokalnym (co jest przydatne do łączenia się z magistralą użytkowników określonych użytkowników: „--user --machine=lennart@.host "). Jeśli składnia „@” nie jest używana, połączenie jest nawiązywane jako użytkownik root. Jeśli używana jest składnia „@”, można pominąć lewą lub prawą stronę (ale nie obie), w takim przypadku implikowana jest lokalna nazwa użytkownika i „.host”.
Nie używaj wielokropka w danych wyjściowych w poleceniu list.
Nie przesyłaj danych wyjściowych do pagera.
Nie drukuj legendy, czyli nagłówków kolumn i stopki z podpowiedziami.
Wydrukuj krótki tekst pomocy i wyjdź.
Wydrukuj krótki ciąg wersji i wyjdź.
Polecenia call i set-property pobierają ciąg podpisu, po którym następuje lista parametrów sformatowana jako łańcuch (szczegółowe informacje na temat ciągów podpisu D-Bus można znaleźć w sekcji Typ rozdział systemowy specyfikacji D-Bus[2]). W przypadku typów prostych każdy parametr następujący po sygnaturze powinien być po prostu wartością parametru sformatowaną jako ciąg znaków. Dodatnie wartości logiczne mogą być sformatowane jako „true”, „yes”, „on” lub „1”; ujemne wartości logiczne mogą być określone jako „false”, „no”, „off” lub „0”. W przypadku tablic należy podać argument liczbowy określający liczbę wpisów, po których następują wpisy. W przypadku wariantów należy podać podpis treści, a następnie treść. W przypadku słowników i struktur ich zawartość powinna być określona bezpośrednio.
Na przykład,
s jawoll
jest formatowaniem pojedynczego łańcucha „jawoll”.
as 3 hello world foobar
to formatowanie tablicy ciągów z trzema wpisami: „hello”, „world” i „foobar”.
a{sv} 3 One s Eins Two u 2 Yes b true
to formatowanie tablicy słownika, która odwzorowuje ciągi na warianty, składające się z trzech wpisów. Ciągowi „One” przypisany jest ciąg „Eins”. Łańcuchowi „Dwa” przypisana jest 32-bitowa liczba całkowita bez znaku 2. Łańcuchowi „Tak” przypisano dodatnią wartość logiczną.
Pamiętaj, że polecenia call, get-property, introspect również wygenerują dane wyjściowe w tym formacie dla zwróconych danych. Ponieważ ten format jest czasami zbyt zwięzły, aby można go było łatwo zrozumieć, polecenia call i get-property mogą generować bardziej szczegółowe, wielowierszowe dane wyjściowe po przekazaniu - opcja -verbose.
Przykład 1. Zapisywanie i odczytywanie właściwości
Następujące dwa polecenia najpierw zapisują właściwość, a następnie odczytują ją z powrotem. Właściwość znajduje się w obiekcie „/org/freedesktop/systemd1” usługi „org.freedesktop.systemd1”. Nazwa właściwości to „LogLevel” w interfejsie „org.freedesktop.systemd1.Manager”. Właściwość zawiera pojedynczy ciąg znaków:
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"
Przykład 2. Zwięzłe i szczegółowe dane wyjściowe
Poniższe dwa polecenia odczytują właściwość zawierającą tablicę łańcuchów i najpierw wyświetlają ją w formacie zwięzłym, a następnie pełnym:
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"; };
Przykład 3. Wywołanie metody
Następujące polecenie wywołuje metodę „StartUnit” w interfejsie „org.freedesktop.systemd1.Manager” obiektu „/org/freedesktop/systemd1” usługi „org.freedesktop.systemd1” i przekazuje jej dwa ciągi znaków „cups .serwis” i „wymień”. W wyniku wywołania metody odbierany i pokazywany jest pojedynczy parametr ścieżki obiektu:
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) Format pliku przechwytywania: https://github.com/pcapng/pcapng/
Rozdział dotyczący systemu typów w specyfikacji D-Bus: https://dbus.freedesktop.org/doc/dbus-specification.html#type-system
D-Bus: https://www.freedesktop.org/wiki/Software/dbus