| DBUS-LAUNCH(1) | دستورهای کاربر | DBUS-LAUNCH(1) |
نام (NAME)
dbus-launch - ابزار راهاندازی یک گذرگاه پیام از اسکریپت شل
خلاصه دستور (SYNOPSIS)
dbus-launch [--version] [--help] [--sh-syntax] [--csh-syntax] [--auto-syntax] [--binary-syntax] [--close-stderr] [--exit-with-session] [--exit-with-x11] [--autolaunch=MACHINEID] [--config-file=FILENAME] [PROGRAM] [ARGS...]
توضیحات (DESCRIPTION)
دستور dbus-launch برای راهاندازی یک نمونه از گذرگاه نشست dbus-daemon از طریق یک اسکریپت شل استفاده میشود. این دستور معمولاً از اسکریپتهای ورود کاربر فراخوانی میگردد. بر خلاف خود دیمن، dbus-launch پس از اجرا خارج میشود، بنابراین میتوان از علامتهای نقلقول وارونه (backticks) یا ساختار $() برای خواندن اطلاعات خروجی از dbus-launch استفاده کرد.
بدون هیچ آرگومانی، dbus-launch یک نمونه از گذرگاه نشست را راهاندازی کرده و نشانی و شناسه فرایند (PID) آن نمونه را در خروجی استاندارد چاپ میکند.
میتوانید برنامهای را برای اجرا مشخص کنید؛ در این حالت، dbus-launch یک نمونه گذرگاه نشست را راهاندازی میکند، متغیرهای محیطی مناسب را به گونهای تنظیم میکند که برنامه مشخصشده بتواند گذرگاه را پیدا کند، و سپس برنامه مشخصشده را با آرگومانهای تعیینشده اجرا مینماید. برای نمونهها به بخش زیر مراجعه کنید.
اگر برنامهای را اجرا کنید، dbus-launch اطلاعات مربوط به گذرگاه جدید را در خروجی استاندارد چاپ نخواهد کرد.
هنگامی که dbus-launch اطلاعات گذرگاه را در خروجی استاندارد چاپ میکند، به طور پیشفرض در قالب جفتهای کلید-مقدار ساده است. با این حال، میتوانید با استفاده از گزینههای --sh-syntax، --csh-syntax، --binary-syntax یا --auto-syntax شیوههای نگارش متناوبی را درخواست کنید. تعدادی از این گزینهها باعث میشوند dbus-launch کدهای شل را برای برپایی متغیرهای محیطی تولید کند.
با گزینه --auto-syntax، دستور dbus-launch به مقدار متغیر محیطی SHELL نگاه میکند تا مشخص کند کدام نحو شل باید استفاده شود. اگر SHELL به "csh" ختم شود، کد سازگار با csh تولید میشود؛ در غیر این صورت، کد سازگار با شل بورن (Bourne shell) منتشر میگردد. به جای ارسال --auto-syntax، میتوانید با استفاده از --sh-syntax برای نحو Bourne، یا --csh-syntax برای نحو csh، به صراحت یک نحو خاص را تعیین کنید. در اسکریپتها، پایدارتر است که از --auto-syntax اجتناب کنید، چرا که قاعدتاً مشخص است اسکریپت شما با چه شلی نوشته شده است.
برای اطلاعات بیشتر درباره D-Bus به نشانی https://www.freedesktop.org/wiki/Software/dbus مراجعه کنید. همچنین صفحه راهنمای dbus-daemon را ببینید.
مثالها (EXAMPLES)
توزیعهایی که dbus-launch را به عنوان بخشی از یک نشست استاندارد X اجرا میکنند، باید پس از راهاندازی کارساز X و در دسترس قرار گرفتن آن، دستور dbus-launch --exit-with-session را به عنوان یک پوشش (wrapper) پیرامون کلاینت اصلی X (معمولاً یک مدیر نشست یا مدیر پنجره) اجرا کنند، مانند این مثالها:
dbus-launch --exit-with-session gnome-session
dbus-launch --exit-with-session openbox
dbus-launch --exit-with-session ~/.xsession
اگر توزیع شما این کار را انجام نمیدهد، میتوانید با اجرای مدیر نشست یا مدیر پنجره خود به همان روش در اسکریپتی که توسط نشست X شما اجرا میشود، مانند ~/.xsession، ~/.xinitrc یا ~/.Xclients، به نتایج مشابهی دست یابید.
برای راهاندازی یک نشست D-Bus درون یک نشست حالت متنی، از dbus-launch استفاده نکنید. به جای آن، dbus-run-session(1) را ببینید.
## بررسی وجود دیمن گذرگاه برای اطمینان
if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then
## در صورت پیدا نشدن، یک نمونه جدید راهاندازی شود
eval `dbus-launch --sh-syntax`
echo "D-Bus per-session daemon address is: $DBUS_SESSION_BUS_ADDRESS"
fi
توجه داشته باشید که در این حالت، dbus-launch خارج میشود و dbus-daemon به هنگام خروج از سیستم (logout) به طور خودکار متوقف نخواهد شد.
راهاندازی خودکار (AUTOMATIC LAUNCHING)
اگر متغیر DBUS_SESSION_BUS_ADDRESS برای فرایندی که تلاش میکند از D-Bus استفاده کند تنظیم نشده باشد، فرایند به طور پیشفرض تلاش خواهد کرد dbus-launch را با گزینه --autolaunch فراخوانی کند تا یک گذرگاه نشست جدید راهاندازی کند یا نشانی گذرگاه موجود را روی نمایشگر X یا در فایلی در ~/.dbus/session-bus/ پیدا نماید.
هر زمان که راهاندازی خودکار رخ دهد، برنامهای که ناچار به راهاندازی یک گذرگاه جدید شده است در دنیای کوچک و مجزای خود قرار میگیرد؛ در صورتی که این برنامه بخواهد از خدمات متعددی در گذرگاه استفاده کند، این وضعیت میتواند عملاً به راهاندازی یک نشست کاملاً جدید منجر شود. بسته به برنامه و کاری که قصد انجام آن را دارد، این حالت میتواند نامطلوب یا حتی کاملاً معیوب باشد.
دو دلیل متداول برای راهاندازی خودکار وجود دارد. یکی اتصال ssh به یک ماشین راه دور است. راهکار ایدهآل برای این حالت، بازفرستی DBUS_SESSION_BUS_ADDRESS به همان روشی است که DISPLAY هدایت میشود. در این فاصله، اگر مایل باشید میتوانید فایل پیکربندی session.conf را ویرایش کنید تا گذرگاه نشست شما روی TCP گوش دهد، و متغیر DBUS_SESSION_BUS_ADDRESS را به صورت دستی تنظیم نمایید.
دومین دلیل رایج برای راهاندازی خودکار، دستور su به کاربری دیگر و نمایش برنامههای X در حال اجرا با هویت کاربر دوم روی نمایشگر متعلق به کاربر اول است. شاید راهحل ایدهآل در این حالت اجازه دادن به کاربر دوم برای اتصال به گذرگاه نشست کاربر اول باشد، همانطور که میتوانند به نمایشگر کاربر اول متصل شوند. با این وجود، سازوکاری برای این کار توسعه داده نشده است.
شما همیشه میتوانید با تنظیم دستی DBUS_SESSION_BUS_ADDRESS از راهاندازی خودکار جلوگیری کنید. راهاندازی خودکار به این دلیل اتفاق میافتد که نشانی پیشفرض در صورت تنظیم نشدن هیچ مقداری، "autolaunch:" است؛ بنابراین اگر هر نشانی دیگری تنظیم شده باشد، هیچ راهاندازی خودکاری رخ نخواهد داد. با این حال میتوانید راهاندازی خودکار را در یک نشانی گذرگاه نشست صریح به عنوان گزینه یدکی (fallback) بگنجانید، برای نمونه DBUS_SESSION_BUS_ADDRESS="something:,autolaunch:" - در این حالت اگر نشانی اول کار نکند، فرایندها به طور خودکار راهاندازی میشوند. (متغیر نشانی گذرگاه حاوی فهرستی از نشانیها برای آزمایش است که با کاما از هم جدا شدهاند.)
گزینه --autolaunch یک جزئیات پیادهسازی داخلی از libdbus در نظر گرفته میشود و در واقع برنامههایی برای تغییر آن وجود دارد. در هر صورت دلیل موجهی برای استفاده از آن در خارج از پیادهسازی libdbus وجود ندارد.
گزینهها (OPTIONS)
گزینههای زیر پشتیبانی میشوند:
--auto-syntax
--binary-syntax
--close-stderr
--config-file=FILENAME
--csh-syntax
--exit-with-x11
--exit-with-session
--autolaunch=MACHINEID
--sh-syntax
--version
--help
یادداشتها (NOTES)
اگر دستور dbus-launch myapp را (همراه با هر گزینه دیگری) اجرا کنید، با خاتمه یافتن myapp دیمن dbus-daemon خارج نخواهد شد؛ زیرا اینگونه فرض میشود که myapp بخشی از یک نشست بزرگتر است، نه اینکه خود به تنهایی یک نشست مستقل باشد.
نویسندگان (AUTHOR)
مراجعه کنید به:
گزارش باگها (BUGS)
لطفاً گزارشهای باگ را به فهرست پستی یا سامانه پیگیری باگ D-Bus ارسال کنید؛ مراجعه کنید به:
همچنین ببینید (SEE ALSO)
dbus-daemon(1)، dbus-run-session(1)، dbus-send(1)، dbus-monitor(1)
| 03/02/2025 | D-Bus 1.16.2 |