लॉग आउट किए बिना पैरेंट शेल पर स्विच करें


29

मान लें कि मैं अपने स्थानीय खाते में शुरू करता हूं:

avindra@host:~>

तो मैं रूट करने के लिए स्विच:

host:~ #

फिर मैं ओरकल में जाता हूं:

[ oracle@host:~]

क्या ओरेकल शेल से लॉग आउट किए बिना मेरे लिए रूट शेल (पैरेंट) में वापस जाने का कोई तरीका है?

यह इस मामले में सुविधाजनक होगा, क्योंकि ओरेकल खाते में sudo विशेषाधिकार नहीं हैं। उदाहरण के लिए, मैं / oracle में कुछ / वास्तव में / गहराई से / नेस्टेड / डायरेक्टरी में हूं, और मेरे पास सभी प्रकार के विशेष पर्यावरण संस्करण हैं। लेकिन मुझे कुछ सिस्टम फ़ाइलों को छूने के लिए रूट में वापस आने की आवश्यकता है।

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

यह कहा जा रहा है, क्या कोई तरीका है जो मैं पूछ रहा हूं?


यदि आप एक gui डेस्कटॉप का उपयोग कर रहे हैं, तो आप बस एक टर्मिनल विंडो या टैब खोल सकते हैं या किसी अन्य वर्चुअल कंसोल पर भी स्विच कर सकते हैं। यदि नहीं, तो एक उत्तर में बताए अनुसार स्क्रीन का उपयोग करें।
जो

मैं स्क्रीन पर देखूंगा, मैंने पहले इसका उपयोग नहीं किया है। टैब के लिए, मैं होस्ट के लिए एक टैब का उपयोग करना पसंद करता हूं। मुझे एक वर्कफ़्लो मिला है जो प्रति मेजबान कई टैब को बोझिल होने के लिए मजबूर करता है। मैं क्लस्टर्ड होस्ट / डिस्ट्रिब्यूटेड सिस्टम में बहुत काम करता हूं, इसलिए क्लस्टर में प्रति नोड एक टैब होने पर भी भ्रमित हो सकता है। मेरे दिमाग में, एक टैब = एक असतत मेजबान।
Avindra Goolcharan

जवाबों:


41

आप कमांड CTRL-Zका उपयोग करके एक (जो आप आमतौर पर एक प्रक्रिया को अस्थायी रूप से पृष्ठभूमि के लिए उपयोग कर सकते हैं) अनुकरण कर सकते हैं kill:

[tsa20@xxx01:/home/tsa20/software]$ kill -19 $$

[1]+  Stopped                 sudo -iu tsa20
[root@xxx01 ~]# fg
sudo -iu tsa20
[tsa20@xxx01:/home/tsa20/software]$

bashबस CTRL-Zकुंजी संयोजन जाल । प्रक्रिया को kill -19भेजता SIGSTPहै जो प्रभावी रूप से एक ही बात है।


1
में zshआप बस चला सकते हैं suspend
मिकेल

3
@ मिकेल, zshया csh, tcshया bash, या बॉर्न शेल या ksh... (में ksh, सस्पेंड एक उपनाम है'kill -s STOP $$' ($ $ के आसपास के लापता उद्धरणों के साथ बग पर ध्यान दें)।
स्टीफन चेज़लस

2
bashCTRL-Z को ट्रैप नहीं करता है , जब आप CTRL-Z दबाते हैं, तो आपका टर्मिनल एमुलेटर ^Zpty डिवाइस के मास्टर साइड में एक वर्ण (0x1a) भेजता है। Pty ड्राइवर का लाइन डिस्क्रिप्शन तब SIGTSTP को टर्मिनल के अग्रभूमि प्रक्रिया समूह में भेजता है। तब तक bashइसमें शामिल नहीं है। यही कारण है कि SIGTSTP प्रक्रिया समूह के नेता को निलंबित करने और कारण हो सकता है तोwait() यह है कि bashइस पर करता है वापस आ जाएगी।
स्टीफन चेज़लस

5
ध्यान दें कि कोई गारंटी नहीं है कि 19SIGTSTP की संख्या होगी। का उपयोग करें kill -s TSTPया kill -s STOP(TSTP फंस या नजरअंदाज किया जा सकता है, रोक नहीं सकता)।
स्टीफन चेज़लस

2
@ nyuszika7h, $$आसानी से पढ़ा जा सकता है, लेकिन IFSऐसा नहीं है। प्रयास करें IFS=0123456789; suspendमें kshउदाहरण के लिए।
स्टीफन चेजेलस

3

Csh, bash, ksh, zsh, में एक suspendअंतर्निहित कमांड (या उर्फ, ksh में) है जो वास्तव में ऐसा करता है। यह कमांड अधिकतर शेल में TSTP सिग्नल भेजने के बराबर है; बैश और zsh अतिरिक्त सिग्नल हैंडलर और बाजीगरी का एक सा करते हैं, और इन गोले में suspendकमांड काम करता है, भले ही शेल वर्तमान में TSTP की अनदेखी कर रहा हो।

आप शेल को सिग्नल को मैन्युअल रूप से भी भेज सकते हैं kill -STOP $$


0

मैं यह भी सुझाव दूंगा कि आप एक प्रोग्राम का उपयोग कर सकते हैं (यदि आवश्यक हो) स्थापित करें [screen][1]कि चलो आपके पास कई टर्मिनल विंडो खुली हैं। यह TTYS के लिए डिज़ाइन किया गया था इसलिए यह बिना ज़रूरत के ठीक काम करता है X। आप टर्मिनलों और डिस्कनेक्ट और लॉगआउट के बीच स्विच करने के लिए कीबोर्ड शॉर्टकट का उपयोग कर सकते हैं, जिससे आपके टर्मिनल अभी भी चल रहे हैं, फिर वापस लॉग इन करें और उन्हें फिर से कनेक्ट करें।

मेरा मानना ​​है कि अधिकांश लिनक्स वितरण में इस कार्यक्रम के लिए पैकेज हैं, और मैंने इसके लिए सोलारिस पर पैकेज का उपयोग किया है। सबसे खराब स्थिति यह है कि आप स्रोत से स्थापित कर सकते हैं।


यह anaswer के बजाय टिप्पणी के रूप में अधिक उपयुक्त हो सकता है।
बरमार
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.