busctl - Introspeksi dan pantau bus D-Bus
busctl [OPTIONS...] [COMMAND] [NAME...]
busctl dapat digunakan untuk mengintrospeksi dan memantau bus D-Bus.
Perintah berikut dipahami:
Tampilkan semua rekan di bus, dengan nama layanan mereka. Secara default, tampilkan nama unik dan terkenal, tetapi ini dapat diubah dengan tombol --unique dan --acquired. Ini adalah operasi default jika tidak ada perintah yang ditentukan.
Tampilkan informasi proses dan kredensial layanan bus (jika ditentukan dengan namanya yang unik atau terkenal), proses (jika ditentukan dengan PID numeriknya), atau pemilik bus (jika tidak ada parameter yang ditentukan).
Pesan dump sedang dipertukarkan. Jika SERVICE ditentukan, tampilkan pesan ke atau dari peer ini, yang diidentifikasi dengan namanya yang terkenal atau unik. Jika tidak, tampilkan semua pesan di bus. Gunakan Ctrl+C untuk mengakhiri dump.
Mirip dengan monitor tetapi menulis output dalam format pcapng (untuk detailnya, lihat PCAP Next Generation (pcapng) Capture File Format[1]). Pastikan untuk mengarahkan output standar ke file atau pipa. Alat seperti wireshark(1) dapat digunakan untuk membedah dan melihat file yang dihasilkan.
Menampilkan pohon objek dari satu atau lebih layanan. Jika SERVICE ditentukan, tampilkan pohon objek dari layanan yang ditentukan saja. Jika tidak, tunjukkan semua pohon objek dari semua layanan di bus yang memperoleh setidaknya satu nama terkenal.
Tampilkan antarmuka, metode, properti, dan sinyal dari objek yang ditentukan (diidentifikasi oleh jalurnya) pada layanan yang ditentukan. Jika argumen antarmuka diteruskan, output terbatas pada anggota antarmuka yang ditentukan.
Panggil metode dan tunjukkan responsnya. Mengambil nama layanan, jalur objek, nama antarmuka, dan nama metode. Jika parameter harus diteruskan ke pemanggilan metode, string tanda tangan diperlukan, diikuti oleh argumen, yang diformat secara individual sebagai string. Untuk detail tentang pemformatan yang digunakan, lihat di bawah. Untuk menekan output dari data yang dikembalikan, gunakan opsi --quiet.
Memancarkan sinyal. Mengambil jalur objek, nama antarmuka, dan nama metode. Jika parameter harus diteruskan, string tanda tangan diperlukan, diikuti oleh argumen, yang diformat secara individual sebagai string. Untuk detail tentang pemformatan yang digunakan, lihat di bawah. Untuk menentukan tujuan sinyal, gunakan opsi --destination=.
Ambil nilai saat ini dari satu atau lebih properti objek. Mengambil nama layanan, jalur objek, nama antarmuka, dan nama properti. Beberapa properti dapat ditentukan sekaligus, dalam hal ini nilainya akan ditampilkan satu demi satu, dipisahkan oleh baris baru. Outputnya, secara default, dalam format singkat. Gunakan --verbose untuk format keluaran yang lebih rumit.
Tetapkan nilai properti objek saat ini. Mengambil nama layanan, jalur objek, nama antarmuka, nama properti, tanda tangan properti, diikuti dengan daftar parameter yang diformat sebagai string.
Tampilkan bantuan sintaks perintah.
Opsi berikut dipahami:
Sambungkan ke bus yang ditentukan oleh ADDRESS alih-alih menggunakan default yang sesuai untuk sistem atau bus pengguna (lihat opsi --system dan --user).
Saat menampilkan daftar peer, tampilkan kolom yang berisi nama container tempatnya. Lihat systemd-machined.service(8).
Saat menampilkan daftar peer, tampilkan hanya nama "unik" (dalam bentuk ":angka.angka").
Kebalikan dari --unique — hanya nama "terkenal" yang akan ditampilkan.
Saat menampilkan daftar peer, tampilkan hanya peer yang sebenarnya belum diaktifkan, tetapi dapat dimulai secara otomatis jika diakses.
Saat menampilkan pesan yang sedang dipertukarkan, tampilkan hanya subset yang cocok MATCH. Lihat sd_bus_add_match(3).
Saat digunakan dengan perintah capture, tentukan ukuran pesan bus maksimum yang akan diambil ("snaplen"). Default ke 4096 byte.
Saat digunakan dengan perintah tree, tampilkan daftar datar jalur objek, bukan pohon.
Saat digunakan dengan perintah call, menekan tampilan payload pesan tanggapan. Perhatikan bahwa meskipun opsi ini ditentukan, kesalahan yang dikembalikan akan tetap dicetak dan alat akan menunjukkan keberhasilan atau kegagalan dengan kode keluar proses.
Saat digunakan dengan perintah call atau get-property, tampilkan keluaran dalam format yang lebih bertele-tele.
Saat digunakan dengan panggilan introspeksi, buang deskripsi XML yang diterima dari panggilan org.freedesktop.DBus.Introspektabel.Introspeksi D-Bus alih-alih output normal.
Saat digunakan dengan perintah call atau get-property, menampilkan output yang diformat sebagai JSON. Mengharapkan salah satu dari "pendek" (untuk keluaran sesingkat mungkin tanpa spasi putih atau jeda baris yang berlebihan) atau "cantik" (untuk versi cantik yang sama, dengan lekukan dan jeda baris). Perhatikan bahwa transformasi dari marshalling D-Bus ke JSON dilakukan dengan cara tanpa kerugian, yang berarti informasi jenis disematkan ke dalam pohon objek JSON.
Setara dengan --json=pretty saat dipanggil secara interaktif dari terminal. Jika tidak, setara dengan --json=short, khususnya saat output disalurkan ke beberapa program lain.
Ketika digunakan dengan perintah panggilan, tentukan apakah busctl harus menunggu penyelesaian pemanggilan metode, mengeluarkan data respons metode yang dikembalikan, dan mengembalikan keberhasilan atau kegagalan melalui kode keluar proses. Jika ini disetel ke "tidak", pemanggilan metode akan dikeluarkan tetapi tidak ada respons yang diharapkan, alat akan segera berhenti, sehingga tidak ada respons yang dapat ditampilkan, dan tidak ada keberhasilan atau kegagalan yang dikembalikan melalui kode keluar. Untuk hanya menahan output payload pesan balasan, gunakan --quiet di atas. Default untuk "ya".
Saat digunakan dengan perintah call atau emit, menentukan apakah pemanggilan metode harus secara implisit mengaktifkan layanan yang dipanggil, jika belum berjalan tetapi dikonfigurasi untuk dimulai secara otomatis. Default untuk "ya".
Saat digunakan dengan perintah call, menentukan apakah layanan dapat memberlakukan otorisasi interaktif saat menjalankan operasi, jika kebijakan keamanan dikonfigurasi untuk ini. Default untuk "ya".
Saat digunakan dengan perintah panggilan, tentukan waktu maksimum untuk menunggu penyelesaian pemanggilan metode. Jika tidak ada satuan waktu yang ditentukan, asumsikan detik. Satuan lain yang biasa juga dipahami (ms, us, s, min, h, d, w, month, y). Perhatikan bahwa batas waktu ini tidak berlaku jika --expect-reply=no digunakan, karena alat tidak menunggu pesan balasan apa pun. Saat tidak ditentukan atau saat disetel ke 0, default "25s" diasumsikan.
Mengontrol apakah data kredensial yang dilaporkan oleh daftar atau status harus ditambah dengan data dari /proc/. Saat diaktifkan, data yang ditampilkan mungkin tidak konsisten, karena data yang dibaca dari /proc/ mungkin lebih baru daripada informasi kredensial lainnya. Default untuk "ya".
Mengontrol apakah menunggu soket bus AF_UNIX yang ditentukan muncul di sistem file sebelum menghubungkannya. Default ke nonaktif. Saat diaktifkan, alat akan mengawasi sistem file hingga soket dibuat dan kemudian menyambungkannya.
Mengambil nama layanan. Saat digunakan dengan perintah emit, sinyal dipancarkan ke layanan yang ditentukan.
Bicaralah dengan manajer layanan pengguna panggilan, bukan manajer layanan sistem.
Bicaralah dengan manajer layanan sistem. Ini adalah default tersirat.
Jalankan operasi dari jarak jauh. Tentukan nama host, atau nama pengguna dan nama host yang dipisahkan dengan "@", untuk terhubung. Nama host secara opsional dapat diakhiri dengan port ssh yang mendengarkan, dipisahkan oleh ":", dan kemudian nama wadah, dipisahkan oleh "/", yang terhubung langsung ke wadah tertentu pada host yang ditentukan. Ini akan menggunakan SSH untuk berbicara dengan instance manajer mesin jarak jauh. Nama penampung dapat disebutkan dengan machinectl -H HOST. Masukkan alamat IPv6 dalam tanda kurung.
Jalankan operasi pada wadah lokal. Tentukan nama penampung yang akan dihubungkan, secara opsional diawali dengan nama pengguna yang akan dihubungkan sebagai dan karakter "@" pemisah. Jika string khusus ".host" digunakan sebagai pengganti nama wadah, sambungan ke sistem lokal dibuat (yang berguna untuk menyambungkan ke bus pengguna pengguna tertentu: "--user --machine=lennart@.host "). Jika sintaks "@" tidak digunakan, koneksi dibuat sebagai pengguna root. Jika sintaks "@" digunakan, sisi kiri atau sisi kanan dapat dihilangkan (tetapi tidak keduanya) dalam hal ini nama pengguna lokal dan ".host" tersirat.
Jangan elipskan keluaran dalam perintah list.
Jangan menyalurkan output ke pager.
Jangan cetak legenda, yaitu header kolom dan footer dengan petunjuk.
Cetak teks bantuan singkat dan keluar.
Cetak string versi pendek dan keluar.
Perintah panggilan dan set-properti menggunakan string tanda tangan diikuti dengan daftar parameter yang diformat sebagai string (untuk detail tentang string tanda tangan D-Bus, lihat Jenis bab sistem dari spesifikasi D-Bus[2]). Untuk tipe sederhana, setiap parameter yang mengikuti tanda tangan harus berupa nilai parameter yang diformat sebagai string. Nilai boolean positif dapat diformat sebagai "true", "yes", "on", atau "1"; nilai boolean negatif dapat ditentukan sebagai "false", "no", "off", atau "0". Untuk array, argumen numerik untuk jumlah entri yang diikuti oleh entri harus ditentukan. Untuk varian, tanda tangan isi harus ditentukan, diikuti isinya. Untuk kamus dan struct, isinya harus ditentukan secara langsung.
Misalnya,
s jawoll
adalah pemformatan string tunggal "jawoll".
as 3 hello world foobar
adalah pemformatan array string dengan tiga entri, "hello", "world" dan "foobar".
a{sv} 3 One s Eins Two u 2 Yes b true
adalah pemformatan larik kamus yang memetakan string ke varian, yang terdiri dari tiga entri. String "One" diberi string "Eins". String "Dua" diberi bilangan bulat 32-bit unsigned 2. String "Ya" diberi boolean positif.
Perhatikan bahwa perintah panggilan, dapatkan-properti, introspeksi juga akan menghasilkan keluaran dalam format ini untuk data yang dikembalikan. Karena format ini terkadang terlalu singkat untuk dipahami dengan mudah, perintah call dan get-property dapat menghasilkan output multi-baris yang lebih bertele-tele ketika melewati opsi --verbose.
Contoh 1. Tulis dan Baca Properti
Dua perintah berikut pertama menulis properti dan kemudian membacanya kembali. Properti ini ditemukan di objek "/org/freedesktop/systemd1" dari layanan "org.freedesktop.systemd1". Nama properti adalah "LogLevel" pada antarmuka "org.freedesktop.systemd1.Manager". Properti berisi string tunggal:
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"
Contoh 2. Output Singkat dan Verbose
Dua perintah berikut membaca properti yang berisi larik string, dan pertama menampilkannya dalam format singkat, diikuti dengan format verbose:
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"; };
Contoh 3. Memanggil Metode
Perintah berikut memanggil metode "StartUnit" pada antarmuka "org.freedesktop.systemd1.Manager" dari objek "/org/freedesktop/systemd1" dari layanan "org.freedesktop.systemd1", dan meneruskannya dengan dua string "cangkir .service" dan "ganti". Sebagai hasil dari pemanggilan metode, satu parameter jalur objek diterima dan ditampilkan:
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 File Tangkap: https://github.com/pcapng/pcapng/
Ketik bab sistem dari spesifikasi D-Bus: https://dbus.freedesktop.org/doc/dbus-specification.html#type-system
D-Bus: https://www.freedesktop.org/wiki/Software/dbus