जब मैं GUI से "शट डाउन" दबाता हूं तो क्या होता है?


15

मैं काफी समय से इसके खिलाफ अपना सिर पीट रहा हूं। यह इस प्रश्न से संबंधित है । मैं यह जानना चाहूंगा कि जब मैं GUI से अपने लिनक्स बॉक्स को बंद करना चाहता हूं तो वास्तव में क्या होता है। यह खराब लगता है (यदि बिल्कुल भी) प्रलेखित है।

आदर्श रूप से, मैं DE- और OS-agnostic उत्तर की उम्मीद कर रहा हूं। यह कहते हुए कि, मैं Mandriva 2010.1 और डेबियन 6.x (स्क्वीज़) और 7.0 (व्हीज़ी) के सभी गनोम चलाने के विशिष्ट मामले में दिलचस्पी रखता हूं। (यदि आप पूरा ध्यान दे रहे हैं, तो हां यह सूक्ति 2 और सूक्ति 3 है)

मूल रूप से, मैं जानना चाहूंगा कि स्क्रिप्ट के कौन से कमांड / स्क्रिप्ट / अनुक्रम को शुरू किया जाता है जब मैं "शट डाउन" या "रीस्टार्ट" दबाता हूं, तो मैं उनके व्यवहार को संशोधित कर सकता हूं। कुछ फ़ोरम पोस्ट जिन्हें मैंने हैक करने का सुझाव दिया था, /etc/polkit-1/*लेकिन यह निर्देशिका संरचना मेरे डेबियन (स्क्वीज़) बॉक्स पर केवल एक कंकाल है, उदाहरण के लिए।

क्या कोई मदद कर सकता है?


संपादित करें

मैंने अब तक क्या कोशिश की है

  • shutdownअपनी खुद की एक स्क्रिप्ट के साथ निष्पादन योग्य को बदल दिया । यह काम नहीं करता है: जब मैं shutdownअपनी स्क्रिप्ट को निष्पादित किए बिना सूक्ति लॉग आउट करता हूं।
  • सूक्ति 2 मेनू का संपादन करने की कोशिश की। कोई खुशी नहीं: मेनू संपादक में "शटडाउन", "लॉग आउट" और "लॉक स्क्रीन" विकल्प दिखाई नहीं देते हैं।
  • देखा /usr/share/menu, वहाँ कुछ भी मददगार नहीं है।

समाधान के लिए संभावित रास्ते

  • straceजीयूआई विकल्प आईएनजी (क्या यह भी संभव है?)
  • shutdownस्रोत कोड को देखते हुए
  • gnome-sessionस्रोत कोड को देखते हुए

अपडेट करें

नीचे दिए गए उत्तर के बारे में मेरी टिप्पणी के अनुसार, मैंने polkitकार्रवाई को देखा /usr/share/polkit-1/actions/और पाया (फ़ाइल में org.freedesktop.consolekit.policy) एक कार्रवाई जिसे org.freedesktop.consolekit.system.stop-multiple-usersसंदेश कहा जाता है

System policy prevents stopping the system when other users are logged in

मैं सोच रहा हूं ( org.freedesktop.*नामकरण सम्मेलन के कारण ) कि यह डी-बस के माध्यम से डीएम को भेजा गया संकेत है। इसके अलावा, यह संदेश तब दिखाई देता है जब अन्य उपयोगकर्ताओं को लॉग इन करते समय ग्राफ़िकल रूप से शटडाउन करने की कोशिश की जाती है, इसलिए यह जो ट्रिगर करता है, वही सिस्टम ट्रिगर होना चाहिए जब "शट डाउन" या "पावर ऑफ" जीयूआई से चुना जाता है।

क्या कोई पुष्टि / खंडन कर सकता है? क्या किसी तरह इस संकेत को बाधित करने या इसे संशोधित करने की संभावना है?


आप क्या खत्म करने की कोशिश कर रहे हैं? रोक दिए जाने पर स्क्रिप्ट/etc/init.d/rc.local को कॉल करने के लिए आप एडिट जोड़ सकते हैं ।
depquid

@depquid मैं जो पूरा करने की कोशिश कर रहा हूं वह मेरे पुराने प्रश्न में जुड़ा हुआ है: मैं स्थानीय स्तर पर लॉग-इन करने वाले उपयोगकर्ता को किसी अन्य उपयोगकर्ता के SSH सत्र को रोकने से रोकने की कोशिश कर रहा हूं।
जोसेफ आर।

जवाबों:


9

यह आपके डिस्प्ले मैनेजर पर निर्भर करता है! (यानी केडीएम, जीडीएम)

कृपया ध्यान रखें कि आपका DM रूट के रूप में चलता है! (यह आपके उपयोगकर्ता द्वारा लॉग इन के रूप में अपनी सत्र प्रक्रिया को चलाने के लिए रूट विशेषाधिकारों की आवश्यकता है)

जब आप केडीई या गनोम में शटडाउन पर क्लिक करते हैं, तो सत्र समाप्त होने के बाद आपका डीई आपके डीएम को बिजली बंद या फिर से चालू करने के लिए एक संकेत भेजता है। फिर, आपका DE प्रत्येक कार्यक्रम को समाप्त करने के लिए कहता है और एक बार अन्य सभी प्रक्रिया समाप्त हो गई है (या एक समय समाप्त हो गया है), आपके DE की अंतिम प्रक्रिया - सत्र प्रक्रिया - समाप्त हो जाती है।

सत्र प्रक्रिया एक X11 सत्र में शुरू की गई पहली प्रक्रिया है। जब यह मारा जाता है या यह समाप्त हो जाता है, तो सत्र समाप्त हो जाता है। क्या आपने कभी X को डे के बिना X चलाते हुए देखा है? यह एक सत्र प्रक्रिया है। इस प्रक्रिया को kdeinitकेडीई और gnome-sessionगनोम में कहा जाता है ।

एक बार सत्र समाप्त हो जाने के बाद, नियंत्रण आपके DM (जो X प्रक्रिया के समाप्त होने की प्रतीक्षा कर रहा है) में वापस आ जाता है, और यह जाँच करता है कि DE ने उसे क्या करने के लिए कहा था। अगर उसने इसे बंद करने या फिर से शुरू करने के लिए कहा, तो वह ऐसा करेगा। अन्य स्थिति में, यह X में एक नई लॉगिन स्क्रीन शुरू करेगा।

यह उन समस्याओं से भी संबंधित है, जो आपको अतीत में हो सकती थीं, कुछ डे के साथ बिजली बंद करने या फिर से शुरू करने में सक्षम नहीं होने के कारण, जब कुछ अन्य डीएम के साथ संयोजन में उपयोग किया जाता है।

किसी भी मामले में, यह इतना बुरा दस्तावेज नहीं है। जीडीएम के पास एक कमांड का मैनुअल पेज होता है जो आपको इसे बंद करने की अनुमति देता है जैसे मैंने पहले बताया था ( gdm-control)। केडीएम के पास उत्कृष्ट दस्तावेज भी हैं और एक समान (थोड़ी अधिक जटिल) उपयोगिता है kdmctl


शटडाउन और पुनरारंभ पॉलिसीकीट के बिना संभव है, लेकिन पॉलिसीकीट आजकल के सिस्टम पर आवश्यक कई उद्देश्यों को पूरा करता है जैसे कि कंप्यूटर को रूट, सस्पेंड या हाइबरनेट किए बिना बढ़ते डिस्क। और यह न तो खराब दस्तावेज है!

यदि आप पॉलिसीकिट क्या है और यह कैसे काम करता है, इसके बारे में अधिक जानना चाहते हैं, तो इसे देखें : http://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html


आशाजनक लगता है। डॉक्स के लिंक के लिए धन्यवाद। मुझे कोई संदेह नहीं है कि ये मैनुअल व्यापक और स्पष्ट हैं, लेकिन वे मौजूद नहीं हैं। आपका जवाब पहली बार है जब मैंने डिस्प्ले मैनेजर को इस मुद्दे के साथ संयोजन में देखा है, इसलिए यह बिल्कुल सामान्य ज्ञान नहीं है। मैं यह कोशिश करूंगा और आपको
जोसेफ आर।

ठीक। gdm-controlकोई मदद नहीं थी। पॉलिसीकिट पर आपके द्वारा प्रदान किया गया प्रलेखन अधिक आशाजनक लगता है। मैं उसमें खुदाई करूंगा और देखूंगा कि क्या मैं एक कस्टम नियम लागू कर सकता हूं। जारी रखने के लिए ...
जोसेफ आर।

1
मैंने कुछ पढ़ने (स्किमिंग, अधिक पसंद) और कृपया मुझे सही कर दिया अगर मैं गलत हूं: डीई, जब बंद करने का अनुरोध किया गया, तो डी-बस पर पोलकिट के माध्यम से डीएम को एक संदेश भेजेगा। प्रमाणीकरण लंबित, सत्र या तो समाप्त हो सकता है या अनुरोध निरस्त हो सकता है। इसे एक polkitएक्शन में परिभाषित किया गया है जिसे इट कहा जाता है org.freedesktop.consolekit.system.stop-multiple-usersजो /usr/share/polkit-1/actionsनिष्क्रिय उपयोगकर्ताओं के लिए अनुरोध auth_admin_keepको सक्रिय करने और सक्रिय उपयोगकर्ता के लिए सेट करने के लिए सेट है । सवाल यह है कि इस कार्रवाई को क्या परिभाषित करता है? वास्तव में यह क्या निष्पादित करता है?
जोसेफ़ आर।

@don_crissti यह अब मैं समझता हूं। मैं जिस चीज में दिलचस्पी रखता हूं वह ठीक यही "सिग्नल" है। वह क्लाइंट क्या है जो इसे भेजता है?
जोसेफ़ आर।

@don_crissti इस टिप्पणी को फॉलो करने के लिए मेरे अन्य प्रश्न पर जाएं ?
जोसेफ़ आर।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.