انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: مشکل با ترمینال root  (دفعات بازدید: 1364 بار)

0 کاربر و 2 مهمان درحال مشاهده موضوع.

آفلاین پیام

  • Sr. Member
  • *
  • ارسال: 348
مشکل با ترمینال root
« : 04 مهر 1393، 12:45 ق‌ظ »
سلام من وقتی میخوام برنامه ای رو با روت اجرا کنم این ارور رو میده

root#payam:/home/payam# kate
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
No protocol specified
kate: cannot connect to X server :0

ولی وقتی با دستور sudo kate  تو یوزرم میزنم مشکلی نداره

آفلاین پیام

  • Sr. Member
  • *
  • ارسال: 348
پاسخ : مشکل با ترمینال root
« پاسخ #1 : 06 مهر 1393، 01:49 ب‌ظ »
مثل همیشه سوالای من بدون جواب میمونه ها


آفلاین QSBuntu

  • High Sr. Member
  • *
  • ارسال: 613
  • جنسیت : پسر
پاسخ : مشکل با ترمینال root
« پاسخ #2 : 06 مهر 1393، 03:34 ب‌ظ »
به این مطلب یه نگاه بندازید
زندگی خواهم کرد... خواهم زیست ... و میجنگم حتی اگر........................

آفلاین پیام

  • Sr. Member
  • *
  • ارسال: 348
پاسخ : مشکل با ترمینال root
« پاسخ #3 : 07 مهر 1393، 10:26 ب‌ظ »
من از خیرش گذشتم چون با روت وارد میشدم این مشکلو نداشتم ولی با یوزر میومدم مشکل داشتم  ممنون به هر حال

آفلاین جادی

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 1604
    • در دفاع از آزادی بیان
پاسخ : مشکل با ترمینال root
« پاسخ #4 : 08 مهر 1393، 05:39 ب‌ظ »
فرض کن دو تا لایه داری.. یک لایه گرافیکی و یک لایه متنی. بعد وقتی یک برنامه رو در محیط متنی اجرا می کنی که به محیط گرافیکی نیاز داره، به عبارتی اجرای برنامه kate در محیط متنی دستوری مثل این رو می ده: «یک پنجره بکش که این دگمه ها رو داشته باشه»

اما کی به این دستور گوش می ده؟ وقتی با یک کاربر عادی در محیط گرافیکی لاگین کردی و بعد یک محیط متنی باز کردی، اون محیط گرافیکی با این محیط متنی در ارتباطه (هر دو متعلق به یک کاربر هستن، رابط گرافیکی می دونه که به این محیط متنی وصله) پس وقتی در محیط متنی می زنی kate، یک رابط گرافکیی هست که بفهمه عبارت «یک پنجره گرافیکی بکش» با اون کار داره.

اما وقتی در همون محیط گرافیکی که با یوزر معمولی اجرا شده، ترمینال باز می کنی و روت می شی ، این روت دیگه یک سشن متنی جدا است و ربطی به محیط گرافیکی تو نداره پس گفتن kate، باعث می شه ارور بگیری که «من که به هیچ محیط گرافیکی ای وصل نیستم» اما اگر به جای روت شدن بزنی sudo kate در اصل داری می گی «برنامه فلان رو با دسترسی روت اجرا کن» پس هنوز همون کاربر قبلی هستی و در نتیجه به محیط گرافیکی وصل و همه چیز هم خوب کار می کنه.

در نهایت! اگر با روت لاگین کرده باشی معلومه که یک محیط گرافیکی با روت داری که وصله به محیط متنی روت و در نتیجه kate درست اجرا می شه.

جایزه:

حالا که تا اینجا خوندی می شه توضیحی فنی تر داد. متغیری محیطی هست به اسم DISPLAY که می گه برنامه گرافیکی قراره در کدوم هاست، کدوم دیسپلی و کدوم سیکوئنس نشون داده بشه. با فوروراد کردن این حتی می تونی برنامه ها رو روی سرورهای دور اجرا کنی اما نتیجه گرافیکی اش رو روی کامپیوتر خودت ببینی. مثلا در حال حاضر دیسپلی کامپیوتر من رو این است:
jadi@funlife:~$ echo $DISPLAY
:0
که می گه روی همین کامپیوتر و همین صفحه نمایش باید خروجی دستورات گرافیکی رو نشون بده. حالا اگر من با این دستور به یک سرور دیگه اس اس اچ کنم، اتفاق جالبی می افته:
ssh -X testserver.ir
xclock
برنامه xlock روی کامپیوتر مقصد اجرا می شه ولی خروجی اش روی یک دیسپلی دیگه می یاد که از طریق یک تونل به کامپیوتر من وصله و در نتیجه خروجی گرافیکی اون برنامه می افته روی کامپیوتر من.

این یکی از مفاهیمی بود که اون اول ها کلی لینوکس رو جلو انداخت، بر خلاف سیستم عامل هایی که حتی تی سی پی آی پی توشون یک سرویس اضافه بر هسته است، در لینوکس حتی محیط گرافیکی هم از طریق یک رابط شبکه، به برنامه ها وصل می شه (: برای اطلاعات بیشتر احتمالا می تونی دنبال عبارت DISPLAY x server بگردی.
آزادی کیبورد حق هر انسان است - جادی