क्या केवल "X" पर क्लिक करके या "ctrl + d" का उपयोग करके शेल को बंद करना सुरक्षित है?


11

क्या केवल "X" पर क्लिक करके या "ctrl + d" का उपयोग करके शेल को बंद करना सुरक्षित है, जबकि su के साथ रूट के रूप में लॉग इन किया गया है या "एक्जिट" टाइप करके इसे बंद करना सुरक्षित है? क्या कोई अंतर (सुरक्षा-वार) है या यह एक ही है और इससे कोई फर्क नहीं पड़ता कि आप किस तरह का उपयोग करते हैं?

जवाबों:


13

Ctrl-D या exitसमान है।

यदि आप "X" का उपयोग कर रहे हैं, तो विंडो मैनेजर शेल को टर्मिनेट सिग्नल भेजता है। जिसका अंत उसी परिणाम में होता है। यदि शेल प्रतिक्रिया नहीं करता है, तो उपयोगकर्ता को आमतौर पर एक चेतावनी मिलती है और फिर शेल को समाप्त करने के लिए मजबूर कर सकता है (बराबर kill -9 $PID)।

यदि आप zshशेल के रूप में उपयोग कर रहे हैं, तो "X" - और निकास-विधि के बीच एक छोटा सा अंतर है : यदि आपके पास एक पृष्ठभूमि प्रक्रिया चल रही है, exit/ ctrl-D पहली बार केवल एक चेतावनी संदेश उत्पन्न करता है "आपके पास काम चल रहा है", सबसे अच्छा दूसरी बार शेल बंद हो गया है। "एक्स" बटन के साथ, शेल बिना किसी चेतावनी के तुरंत समाप्त हो जाता है।


5
साथ ही बैश में भी अंतर है। यदि आप ctrl + d करते हैं, तो पृष्ठभूमि वाली कोई भी प्रक्रिया &चालू रहेगी। यदि आप "X" करते हैं, तो वे समाप्त हो जाएंगे।
पैट्रिक

3
@ पैट्रिक यह शेल के बजाय टर्मिनल एमुलेटर पर निर्भर करता है। जब तक एमुलेटर स्पष्ट रूप से पृष्ठभूमि वाली प्रक्रियाओं को मारता है, जहां तक ​​मुझे पता है कि बैश मैं उन्हें बाहर जाने के लिए कोई फर्क नहीं पड़ता कि उन्हें कैसे भेजा जाएगा। मैं सिर्फ मैक ओएस एक्स 10.7.3 पर यह कोशिश की। टर्मिनल पृष्ठभूमि वाली प्रक्रियाओं को नहीं मारता है, लेकिन Xterm (X11 में चल रहा है) करता है। मुझे नहीं पता कि यह विशेष रूप से Xterm का व्यवहार है या X11।
क्रिस पेज

@ जोफेल यह सच नहीं है, मेरा जवाब देखें।
पैट्रिक

@ पैट्रिक इस ओर इशारा करने के लिए धन्यवाद। मैं अपना उत्तर संपादित करूंगा या हटा दूंगा।
जोफेल

@ जोफेल नाह, न हटाओ, zsh जानकारी अभी भी उपयोगी है। मैं zsh में केवल एक noob हूँ, इसलिए मैं वहाँ टिप्पणी नहीं कर सकता। लेकिन यह एक अच्छा बिंदु लाता है, इसलिए मैंने अपना उत्तर इस बात पर ध्यान देने के लिए संपादित किया कि अलग-अलग गोले अलग-अलग व्यवहार कर सकते हैं, और मैंने जो डिफ़ॉल्ट व्यवहार वर्णित किया है वह आश्रित है, जबकि ओपी ने अपने खोल को निर्दिष्ट नहीं किया है।
पैट्रिक

4

टर्मिनल एमुलेटर को बंद करना दबाने के समान नहीं है CTRL + D(जब तक कि विकल्प huponexitसेट न हो)।

  • जब आप टर्मिनल को बंद करते हैं ("X" पर क्लिक करते हैं), तो टर्मिनल एमुलेटर शेल में एक SIGHUP भेजता है। जब bash एक SIGHUP प्राप्त करता है, तो यह आपकी सभी नौकरियों के लिए एक SIGHUP भी भेजता है।

  • जब आप टर्मिनल के साथ CTRL+Dया logoutउससे exitबाहर निकलते हैं, तो शेल सभी नौकरियों में SITEUP भेजे बिना बाहर निकल जाता है। यह डिफ़ॉल्ट व्यवहार है, लेकिन बैश shoptसेटिंग को सेट करके बदला जा सकता है huponexit

तो आखिरकार अगर आपका लक्ष्य यह सुनिश्चित करना है कि पृष्ठभूमि में कुछ भी नहीं चल रहा है, तो इसके बाद "X" पर क्लिक करें।

उनकी टिप्पणी में जोफेल द्वारा दी गई जानकारी गलत है (सॉरी जोफेल)। टर्मिनल एमुलेटर का कोई सुराग नहीं है कि शेल के तहत कौन सी नौकरियां चल रही हैं, इस प्रकार यह उन्हें समाप्त नहीं कर सकता है।

नोट :
यह व्यवहार पूरी तरह से शेल पर निर्भर है। यह पूरी तरह से संभव है कि विभिन्न गोले अलग-अलग डिफ़ॉल्ट व्यवहार करते हैं।


जब Ctrl+dप्रक्रिया PPID 1 = प्रणाली द्वारा विरासत में मिली है
EdiD

1

इसमें कोई फर्क नही है। इतना है कि, जब आप ^ D दबाते हैं, तो आप एक ही काम कर रहे हैं जैसे 'बाहर निकलें' टाइप करें:

$ su -
Password:
# [press ^D]
logout

हाँ, CTRL+Dऔर exitएक ही हैं, सवाल खिड़की को बंद करने के लिए विंडो प्रबंधक के "X" पर क्लिक करने के बारे में था, टाइपिंग नहीं exit:-)
पैट्रिक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.