BUSCTL(1) busctl BUSCTL(1)

busctl - درون‌نگری و نظارت بر گذرگاه D-Bus

busctl [OPTIONS...] [COMMAND] [NAME...]

busctl می‌تواند برای درون‌نگری و نظارت بر گذرگاه D-Bus استفاده شود.

دستورات زیر پشتیبانی می‌شوند:

list

نمایش تمامی همتایان (peers) روی گذرگاه بر اساس نام سرویس آن‌ها. به‌طور پیش‌فرض، هر دو نام‌های یکتا (unique) و شناخته‌شده (well-known) را نمایش می‌دهد، اما این رفتار می‌تواند با سوییچ‌های --unique و --acquired تغییر کند. در صورت عدم تعیین دستور، این عملیات پیش‌فرض است.

افزوده شده در نگارش 209.

status [SERVICE]

اطلاعات پردازش و اعتبارنامه‌های یک سرویس گذرگاه (در صورتی که با نام یکتا یا شناخته‌شده‌اش مشخص شده باشد)، یک پردازش (در صورتی که با PID عددی‌اش مشخص شده باشد)، یا مالک گذرگاه (در صورت عدم تعیین پارامتر) را نمایش می‌دهد.

افزوده شده در نگارش 209.

monitor [SERVICE...]

پیام‌های در حال مبادله را استخراج و نمایش می‌دهد (dump می‌کند). اگر SERVICE مشخص شده باشد، پیام‌های ارسالی به این همتا یا دریافتی از آن را که با نام شناخته‌شده یا یکتایش شناسانده شده، نمایش می‌دهد. در غیر این صورت، تمام پیام‌های روی گذرگاه را نمایش می‌دهد. برای پایان دادن به نمایش از Ctrl+C استفاده کنید یا با گزینهٔ --limit-messages= آن را محدود نمایید.

افزوده شده در نگارش 209.

capture [SERVICE...]

مشابه monitor است اما خروجی را در قالب pcapng می‌نویسد (برای جزئیات، به قالب فایل ضبط PCAP نسل بعدی (pcapng)[1] مراجعه کنید). حتماً خروجی استاندارد را به یک فایل یا لوله (pipe) هدایت کنید. ابزارهایی مانند wireshark(1) می‌توانند برای تحلیل و مشاهده فایل‌های حاصل استفاده شوند.

افزوده شده در نگارش 218.

tree [SERVICE...]

درخت شیء (object tree) یک یا چند سرویس را نمایش می‌دهد. اگر SERVICE مشخص شده باشد، فقط درخت شیء سرویس‌های مشخص‌شده را نمایش می‌دهد. در غیر این صورت، درخت شیء تمام سرویس‌های روی گذرگاه را که حداقل یک نام شناخته‌شده به دست آورده‌اند، نمایش می‌دهد.

افزوده شده در نگارش 218.

introspect SERVICE OBJECT [INTERFACE]

رابط‌ها، متدها، ویژگی‌ها و سیگنال‌های شیء مشخص‌شده (شناسایی‌شده با مسیر آن) روی سرویس مشخص‌شده را نمایش می‌دهد. در صورت ارسال آرگومان رابط، خروجی به اعضای رابط مشخص‌شده محدود می‌شود.

افزوده شده در نگارش 218.

call SERVICE OBJECT INTERFACE METHOD [SIGNATURE [ARGUMENT...]]

یک متد را فراخوانی کرده و پاسخ را نمایش می‌دهد. یک نام سرویس، مسیر شیء، نام رابط و نام متد را می‌گیرد. اگر قرار است پارامترهایی به فراخوانی متد ارسال شوند، یک رشته امضا (signature string) الزامی است که پس از آن آرگومان‌ها که به‌صورت جداگانه در قالب رشته قالب‌بندی شده‌اند می‌آیند. برای جزئیات قالب‌بندی استفاده‌شده، به بخش زیر مراجعه کنید. برای جلوگیری از نمایش داده‌های بازگردانده‌شده، از گزینهٔ --quiet استفاده کنید.

افزوده شده در نگارش 218.

emit OBJECT INTERFACE SIGNAL [SIGNATURE [ARGUMENT...]]

یک سیگنال ساطع (منتشر) می‌کند. یک مسیر شیء، نام رابط و نام متد را می‌گیرد. اگر قرار است پارامترهایی ارسال شوند، یک رشته امضا الزامی است که پس از آن آرگومان‌ها که به‌صورت جداگانه در قالب رشته قالب‌بندی شده‌اند می‌آیند. برای جزئیات قالب‌بندی استفاده‌شده، به بخش زیر مراجعه کنید. برای تعیین مقصد سیگنال، از گزینهٔ --destination= استفاده کنید.

افزوده شده در نگارش 242.

wait [SERVICE] OBJECT INTERFACE SIGNAL

منتظر یک سیگنال می‌ماند. یک مسیر شیء، نام رابط و نام سیگنال را می‌گیرد. برای انتظار برای بیش از یک سیگنال قبل از خروج، از گزینهٔ --limit-messages= استفاده کنید. برای جلوگیری از نمایش داده‌های بازگردانده‌شده، از گزینهٔ --quiet استفاده کنید. نام سرویس را می‌توان نادیده گرفت، که در این صورت busctl سیگنال‌های ارسالی از هر فرستنده‌ای را مطابقت خواهد داد.

افزوده شده در نگارش 257.

get-property SERVICE OBJECT INTERFACE PROPERTY...

مقدار فعلی یک یا چند ویژگی شیء را بازیابی می‌کند. یک نام سرویس، مسیر شیء، نام رابط و نام ویژگی را می‌گیرد. چند ویژگی را می‌توان به‌طور همزمان مشخص کرد که در این صورت مقادیر آن‌ها یکی پس از دیگری و جداشده با خطوط جدید نمایش داده می‌شوند. خروجی به‌طور پیش‌فرض در قالب مختصر است. برای قالب خروجی با جزئیات بیشتر از --verbose استفاده کنید.

افزوده شده در نگارش 218.

set-property SERVICE OBJECT INTERFACE PROPERTY SIGNATURE ARGUMENT...

مقدار فعلی ویژگی یک شیء را تنظیم می‌کند. یک نام سرویس، مسیر شیء، نام رابط، نام ویژگی، امضای ویژگی و به‌دنبال آن فهرستی از پارامترهای قالب‌بندی‌شده به‌صورت رشته را می‌گیرد.

افزوده شده در نگارش 218.

help

راهنمای ساختار نحوی دستورات را نمایش می‌دهد.

افزوده شده در نگارش 209.

گزینه‌های زیر پشتیبانی می‌شوند:

--address=ADDRESS

به گذرگاه مشخص‌شده با ADDRESS متصل می‌شود، به‌جای اینکه از پیش‌فرض‌های مناسب برای گذرگاه سیستم یا کاربر استفاده کند (گزینه‌های --system و --user را ببینید).

افزوده شده در نگارش 209.

--show-machine

هنگام نمایش فهرست همتایان، ستونی شامل نام کانتینرهایی که به آن‌ها تعلق دارند را نمایش می‌دهد. به systemd-machined.service(8) مراجعه کنید.

افزوده شده در نگارش 209.

--unique

هنگام نمایش فهرست همتایان، فقط نام‌های "یکتا" (به فرم ":number.number") را نمایش می‌دهد.

افزوده شده در نگارش 209.

--acquired

نقطهٔ مقابل --unique — فقط نام‌های "شناخته‌شده" نمایش داده می‌شوند.

افزوده شده در نگارش 209.

--activatable

هنگام نمایش فهرست همتایان، فقط همتایانی را نمایش می‌دهد که در واقع هنوز فعال نشده‌اند، اما در صورت دسترسی ممکن است به‌طور خودکار آغاز به کار کنند.

افزوده شده در نگارش 209.

--match=MATCH

هنگام نمایش پیام‌های در حال مبادله، فقط زیرمجموعه‌ای را که با MATCH مطابقت دارد نمایش می‌دهد. به sd_bus_add_match(3) مراجعه کنید.

افزوده شده در نگارش 209.

--size=

هنگامی که همراه با دستور capture استفاده شود، حداکثر اندازهٔ پیام گذرگاه را برای ضبط تعیین می‌کند ("snaplen"). پیش‌فرض 4096 بایت است.

افزوده شده در نگارش 218.

--list

هنگامی که همراه با دستور tree استفاده شود، یک فهرست تخت از مسیرهای اشیاء را به‌جای درخت نمایش می‌دهد.

افزوده شده در نگارش 218.

-q, --quiet

هنگامی که همراه با دستور call استفاده شود، نمایش بار دادهٔ پیام پاسخ را فرومی‌نشاند. توجه داشته باشید که حتی در صورت تعیین این گزینه، خطاهای بازگردانده‌شده همچنان چاپ می‌شوند و ابزار موفقیت یا شکست را با کد خروج پردازش نشان می‌دهد.

افزوده شده در نگارش 218.

--verbose

هنگامی که همراه با دستورهای call یا get-property استفاده شود، خروجی را در قالبی با جزئیات بیشتر نمایش می‌دهد.

افزوده شده در نگارش 218.

--xml-interface

هنگامی که با فراخوانی introspect استفاده شود، توصیف XML دریافت شده از فراخوانی D-Bus org.freedesktop.DBus.Introspectable.Introspect را به‌جای خروجی عادی استخراج و نمایش می‌دهد.

افزوده شده در نگارش 243.

--expect-reply=BOOL

هنگامی که همراه با دستور call استفاده شود، مشخص می‌کند آیا busctl باید منتظر تکمیل فراخوانی متد بماند، داده‌های پاسخ متد بازگردانده‌شده را خروجی دهد، و موفقیت یا شکست را از طریق کد خروج پردازش بازگرداند یا خیر. اگر این مقدار روی "no" تنظیم شود، فراخوانی متد صادر می‌شود اما هیچ پاسخی انتظار نمی‌رود، ابزار بلافاصله خاتمه می‌یابد و بنابراین پاسخی قابل نمایش نخواهد بود و هیچ موفقیتی یا شکستی از طریق کد خروج بازگردانده نمی‌شود. برای صرفاً جلوگیری از نمایش بار دادهٔ پیام پاسخ، از گزینهٔ --quiet در بالا استفاده کنید. پیش‌فرض "yes" است.

افزوده شده در نگارش 218.

--auto-start=BOOL

هنگامی که همراه با دستور call یا emit استفاده شود، مشخص می‌کند که آیا فراخوانی متد باید سرویس فراخوانی‌شده را به‌طور ضمنی فعال کند، در صورتی که هنوز در حال اجرا نباشد اما برای شروع خودکار پیکربندی شده باشد. پیش‌فرض "yes" است.

افزوده شده در نگارش 218.

--allow-interactive-authorization=BOOL

هنگامی که همراه با دستور call استفاده شود، مشخص می‌کند که آیا در صورت پیکربندی سیاست امنیتی برای این منظور، سرویس‌ها می‌توانند در حین اجرای عملیات مجوزدهی تعاملی را اعمال کنند یا خیر. پیش‌فرض "yes" است.

افزوده شده در نگارش 218.

--timeout=SECS

هنگامی که همراه با دستور call استفاده شود، حداکثر زمان انتظار برای تکمیل فراخوانی متد را تعیین می‌کند. هنگامی که همراه با دستور monitor استفاده شود، از نسخه v257، حداکثر زمان انتظار برای پیام‌ها را قبل از خروج خودکار تعیین می‌کند. اگر واحد زمانی مشخص نشده باشد، ثانیه در نظر گرفته می‌شود. سایر واحدهای معمول نیز قابل فهم هستند (ms، us، s، min، h، d، w، month، y). توجه داشته باشید در صورتی که گزینهٔ --expect-reply=no همراه با دستور call استفاده شود این مهلت زمانی اعمال نخواهد شد، زیرا ابزار منتظر دریافت هیچ پیام پاسخی نمی‌ماند. در صورت عدم تعیین یا تنظیم روی 0، مقدار پیش‌فرض "25s" برای دستور call در نظر گرفته می‌شود، و برای دستور monitor غیرفعال است.

افزوده شده در نگارش 218.

--limit-messages=NUMBER, -N NUMBER

هنگامی که همراه با دستور monitor استفاده شود، در صورت فعال بودن باعث می‌شود busctl پس از دریافت و چاپ تعداد پیام مشخص‌شده خارج شود. این در ترکیب با --match=، برای انتظار برای تعداد رخداد مشخصی از پیام‌های خاص D-Bus مفید است. در حالی که اگر مشخص نشده باشد یا روی مقدار ویژهٔ "infinity" تنظیم شود، پیش‌فرض ادامهٔ نظارت بدون محدودیت است.

هنگامی که همراه با دستور wait استفاده شود، باعث می‌شود busctl پس از دریافت و چاپ تعداد مشخصی از سیگنال‌های DBus خارج شود. تنظیم آن روی مقدار ویژهٔ "infinity" باعث پایداری busctl برای دریافت و چاپ پیوستهٔ سیگنال‌ها بدون محدودیت می‌شود. در صورت عدم تعیین، پیش‌فرض خروج فوری پس از دریافت و چاپ اولین سیگنال است.

افزوده شده در نگارش 257.

--augment-creds=BOOL

کنترل می‌کند که آیا داده‌های اعتبارنامه گزارش‌شده توسط list یا status باید با داده‌های حاصل از /proc/ تکمیل شوند یا خیر. هنگامی که این گزینه فعال باشد، داده‌های نمایش داده شده احتمالاً ناسازگار هستند، زیرا داده‌های خوانده‌شده از /proc/ ممکن است تازه‌تر از بقیه اطلاعات اعتبارنامه باشند. پیش‌فرض "yes" است.

افزوده شده در نگارش 218.

--watch-bind=BOOL

کنترل می‌کند که آیا قبل از اتصال به سوکت گذرگاه AF_UNIX مشخص‌شده، منتظر ظاهر شدن آن در سیستم فایل بماند یا خیر. پیش‌فرض خاموش است. هنگامی که فعال باشد، ابزار سیستم فایل را تا زمان ایجاد سوکت نظارت کرده و سپس به آن متصل می‌شود.

افزوده شده در نگارش 237.

--destination=SERVICE

یک نام سرویس را می‌گیرد. هنگامی که همراه با دستور emit استفاده شود، یک سیگنال به سرویس مشخص‌شده ارسال می‌شود.

افزوده شده در نگارش 242.

--user

به‌جای مدیر سرویس‌های سیستم، با مدیر سرویس‌های کاربر فراخواننده ارتباط برقرار می‌کند.

--system

با مدیر سرویس‌های سیستم ارتباط برقرار می‌کند. این حالت پیش‌فرض ضمنی است.

-H, --host=

عملیات را از راه دور اجرا می‌کند. برای اتصال، یک نام میزبان یا یک نام کاربری و نام میزبان جداشده با "@" را مشخص کنید. نام میزبان می‌تواند به‌طور اختیاری با یک درگاه که ssh روی آن گوش می‌دهد، جداشده با ":"، و سپس نام یک کانتینر، جداشده با "/" دنبال شود که مستقیماً به یک کانتینر خاص روی میزبان مشخص‌شده متصل می‌شود. این کار از SSH برای ارتباط با نمونهٔ مدیر ماشین راه دور استفاده می‌کند. نام‌های کانتینر را می‌توان با machinectl -H HOST فهرست کرد. نشانی‌های IPv6 را داخل کروشه قرار دهید.

-M, --machine=

عملیات را روی یک کانتینر محلی اجرا می‌کند. نام کانتینری را برای اتصال مشخص کنید، که به‌طور اختیاری با یک نام کاربری برای اتصال و نویسهٔ جداکنندهٔ "@" پیشوند می‌شود. اگر رشتهٔ ویژهٔ ".host" به‌جای نام کانتینر استفاده شود، اتصالی به سیستم محلی برقرار می‌شود (که برای اتصال به گذرگاه کاربری یک کاربر خاص مفید است: "--user --machine=lennart@.host"). اگر نحو "@" استفاده نشود، اتصال به‌عنوان کاربر ریشه برقرار می‌شود. اگر نحو "@" استفاده شود، می‌توان سمت چپ یا سمت راست را نادیده گرفت (اما نه هر دو را) که در این صورت نام کاربر محلی و ".host" ضمنی در نظر گرفته می‌شوند.

-C, --capsule=

عملیات را روی یک کپسول اجرا می‌کند. نام کپسولی را برای اتصال مشخص کنید. برای جزئیات در مورد کپسول‌ها به capsule@.service(5) مراجعه کنید.

افزوده شده در نگارش 256.

-l, --full

خروجی دستور list را خلاصه نمی‌کند.

افزوده شده در نگارش 245.

--json=MODE

خروجی را در قالب JSON نمایش می‌دهد. یکی از مقادیر زیر را می‌پذیرد: "short" (برای کوتاه‌ترین خروجی ممکن بدون هیچ فاصله یا شکست خط اضافی)، "pretty" (برای نگارش آراسته‌شده از همان خروجی، همراه با تورفتگی و شکست خط) یا "off" (برای خاموش کردن خروجی JSON، که حالت پیش‌فرض است).

-j

معادل --json=pretty در صورت اجرا روی یک ترمینال، و --json=short در غیر این صورت است.

--no-pager

خروجی را به یک صفحه‌بند (pager) هدایت نمی‌کند.

--no-legend

راهنما را چاپ نمی‌کند، یعنی سرستون‌ها و پانوشت با نکات راهنما چاپ نمی‌شوند.

-h, --help

یک متن راهنمای کوتاه را چاپ کرده و خارج می‌شود.

--version

یک رشتهٔ کوتاه نسخه را چاپ کرده و خارج می‌شود.

دستورات call و set-property یک رشته امضا و به‌دنبال آن فهرستی از پارامترهای قالب‌بندی‌شده به‌صورت رشته را دریافت می‌کنند (برای جزئیات در مورد رشته‌های امضای D-Bus، به فصل سامانهٔ انواع در مشخصات D-Bus[2] مراجعه کنید). برای انواع ساده، هر پارامتر پس از امضا باید صرفاً مقدار پارامتر قالب‌بندی‌شده به‌صورت رشته باشد. مقادیر بولی مثبت ممکن است به‌صورت "true"، "yes"، "on" یا "1" قالب‌بندی شوند؛ مقادیر بولی منفی ممکن است به‌صورت "false"، "no"، "off" یا "0" تعیین شوند. برای آرایه‌ها، یک آرگومان عددی برای تعداد ورودی‌ها و به‌دنبال آن خود ورودی‌ها باید مشخص شود. برای مقادیر متغیر (variants)، امضای محتویات و به‌دنبال آن خود محتویات باید مشخص شود. برای دیکشنری‌ها و ساختارها (structs)، محتویات آن‌ها باید مستقیماً مشخص گردد.

به‌عنوان مثال،

s jawoll

قالب‌بندی یک رشتهٔ منفرد "jawoll" است.

as 3 hello world foobar

قالب‌بندی یک آرایهٔ رشته با سه ورودی "hello"، "world" و "foobar" است.

a{sv} 3 One s Eins Two u 2 Yes b true

قالب‌بندی یک آرایه دیکشنری است که رشته‌ها را به مقادیر متغیر نگاشت می‌کند و شامل سه ورودی است. به رشتهٔ "One" رشتهٔ "Eins" اختصاص داده شده است. به رشتهٔ "Two" عدد صحیح بدون علامت ۳۲ بیتی 2 اختصاص داده شده است. به رشتهٔ "Yes" یک مقدار بولی مثبت اختصاص داده شده است.

توجه داشته باشید که دستورات call، get-property، و introspect نیز برای داده‌های بازگردانده‌شده، خروجی را در همین قالب تولید خواهند کرد. از آنجایی که این قالب گاهی برای درک آسان بیش از حد مختصر است، دستورات call و get-property در صورت استفاده از گزینهٔ --verbose می‌توانند خروجی چندخطی با جزئیات بیشتری تولید کنند.

مثال 1. نوشتن و خواندن یک ویژگی

دو دستور زیر ابتدا یک ویژگی را می‌نویسند و سپس آن را بازخوانی می‌کنند. ویژگی روی شیء "/org/freedesktop/systemd1" از سرویس "org.freedesktop.systemd1" یافت می‌شود. نام ویژگی "LogLevel" روی رابط "org.freedesktop.systemd1.Manager" است. ویژگی شامل یک رشتهٔ منفرد است:

# 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"

مثال 2. خروجی مختصر و مفصل

دو دستور زیر ویژگی‌ای را می‌خوانند که شامل آرایه‌ای از رشته‌ها است، و ابتدا آن را در قالب مختصر و سپس در قالب مفصل نمایش می‌دهند:

$ 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";
};

مثال 3. فراخوانی یک متد

دستور زیر متد "StartUnit" را روی رابط "org.freedesktop.systemd1.Manager" از شیء "/org/freedesktop/systemd1" مربوط به سرویس "org.freedesktop.systemd1" فراخوانی می‌کند و دو رشتهٔ "cups.service" و "replace" را به آن ارسال می‌نماید. در نتیجهٔ فراخوانی متد، یک پارامتر منفرد از نوع مسیر شیء دریافت شده و نمایش داده می‌شود:

# 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), varlinkctl(1), systemd(1), machinectl(1), wireshark(1)

1.
قالب فایل ضبط PCAP نسل بعدی (pcapng)
2.
فصل سامانهٔ انواع در مشخصات D-Bus
3.
D-Bus
systemd 261.2