एकल उपयोगकर्ता मोड में मैं दूसरा शेल कैसे शुरू करूं?


14

यह शब्दों में एक विरोधाभास की तरह लग सकता है, लेकिन मुझे हाल ही में एक टूटे हुए RAID सरणी के पुनर्निर्माण की कोशिश करते समय (दिन!) के लिए एकल उपयोगकर्ता मोड (उर्फ रखरखाव मोड) का उपयोग करने की आवश्यकता है।

ऐसा करते समय, मैंने पाया है कि विभिन्न कॉन्फिग फाइलों में सेटिंग्स को जाँचने / संपादित करने या सिस्टम लॉग्स को देखने के लिए एक मुख्य शेल का उपयोग करना चाहते हैं, जबकि मुख्य (और केवल) कंसोल कुछ रिकवरी प्रक्रिया को निष्पादित करने से बंधा है।

किसी अन्य ट्टी पर दूसरा शेल लॉन्च करने के लिए अनुशंसित कमांड क्या होगा?

जाहिर है, एक विधि screentty1 में उपयोग करने के लिए हो सकता है , लेकिन यह Alt-F1, Alt-F2, आदि के साथ सिर्फ सत्र स्विच करने में काफी आसानी नहीं है।


4
screenबस उतना ही आसान है। Ctrl एपी ऑल्ट एफ 1 की तुलना में ज्यादा पेचीदा नहीं लगता ...
मॉवरोन

टीयूआई विंडो प्रबंधन के लिए इस तरह के ऐप screenऔर इसके tmuxलिए हमेशा ध्यान देने योग्य नहीं है। कभी-कभी आपको एक वास्तविक ttyXउपकरण की आवश्यकता होती है, बजाय एक pts
पार्थियन ने

जवाबों:


14

इस स्थिति के लिए विशेष रूप से डिज़ाइन किया गया एक आदेश है openvt:। बस openvttty1 पर अपने शेल से दौड़ें और आपको पहले ट्टी पर एक ऐसा शेल मिलेगा जो पहले से ही इस पर कुछ नहीं था (tty2 शायद।) कई विकल्प हैं जो आपको उपयोगी लग सकते हैं; ओपनवेट मैन पेज देखें।

चूंकि यह गेट्टी द्वारा प्रबंधित लॉगिन नहीं है, जब आप नए शेल से बाहर निकलते हैं तो आपको लॉगिन प्रॉम्प्ट नहीं दिखाई देगा। टटी सिर्फ मृत हो जाएगी क्योंकि उस पर चलने वाली कोई प्रक्रिया नहीं होगी, लेकिन आप अभी भी आगे और पीछे (Alt-F1 Alt-F2) स्विच करने में सक्षम होंगे और देखेंगे कि शेल से बाहर निकलने पर स्क्रीन पर क्या था। deallocvtआदेश नष्ट कर देता है ttys है कि इस में हैं ज़ोंबी की तरह राज्य, मूल की ओर लौटने राज्य "Alt-F2 कुछ नहीं करता है"।

मूल रूप से इन आदेशों को बुलाया गया था openऔर disalloc, लेकिन अंततः किसी ने उन्हें बदलने का फैसला किया क्योंकि वे बहुत सामान्य थे और असंतुष्ट को "एक शब्द नहीं" माना जाता था।

पुराने दिनों में यह कीबोर्ड ड्राइवर के लिए आम था और इसे कॉन्फ़िगर किया जाना था ताकि Alt + Up चले open, इसलिए यह एक नए कंसोल पर शेल को स्पॉन्ट करने के लिए हॉटकी की तरह काम करेगा। आपको अभी भी उस पुराने कॉन्फ़िगरेशन का एक अवशेष मिल सकता है, टिप्पणी की गई है, अपने में /etc/inittab। (यदि आप कुछ फैंसी नई इनिट का उपयोग नहीं कर रहे हैं जिसमें ए नहीं है inittab।)

यहाँ भी ऐसा ही सवाल है


3
अच्छा, मुझे पता नहीं था openvt। +1।
jscott

यह वास्तव में बहुत आसान लगता है कि गेटी। मुझे कभी नहीं लगा कि यह पहले से स्थापित है।
स्टारनमर

बस सोचा था कि मैं रिपोर्ट करूंगा कि मैंने एक हफ्ते में सिंगल यूजर मोड में एक सिस्टम के साथ बिताए एक RAID सरणी की मरम्मत की और openvtबहुत उपयोगी साबित हुई। मेरे नोटिस में एक नई कमांड लाने के लिए धन्यवाद।
स्टारनेम

12

आप gettyजो चाहें टिट्स के लिए एक और स्पॉन कर सकते थे । एकल उपयोगकर्ता मोड में बूट करें, फिर gettytty2 पर शुरू करें :

root@host:~# /sbin/getty 38400 tty2 &

अब आप नए tty को Alt+ F2ओवर कर सकते हैं । आवश्यकतानुसार अतिरिक्त टिट्स के लिए दोहराएं। आप शायद कुछ क्लीनर कर सकते हैं और /etc/inittabइसे एकल उपयोगकर्ता मोड में स्वचालित रूप से संभालने के लिए कॉन्फ़िगर कर सकते हैं।


ऐसा लग रहा है कि मैं क्या देख रहा हूं। मैं अगली बार कोशिश करूँगा।
स्टारनामर

इसे आजमाया। यह काम करता है, लेकिन चूंकि लॉगिन सत्र से स्पॉन नहीं किया गया है init, अगर यह मर जाता है, तो इसे फिर से स्पैन नहीं मिलता है।
StarNamer

वास्तव में, हम इसे उपरोक्त उदाहरण में पृष्ठभूमि में छोड़ रहे हैं। यदि आपको वास्तविक वीटी की पूरी पेशकश की आवश्यकता है, तो आप हैकिंग /etc/inittabऔर /etc/rc1.d/S??singleबहुत कम से कम करने जा रहे हैं ।
jscott

2

आप संभवतः JOB CONTROLअपने वर्तमान शेल में उपयोग करके एक अतिरिक्त शेल इंस्टेंस के बिना कर सकते हैं । यह के मेन्यू में प्रलेखित है bash(1)

आप डिफ़ॉल्ट रूप से Ctrl+ Zअनुक्रम का उपयोग करके किसी कार्य को स्थगित कर सकते हैं , हालांकि इसे आपके टर्मिनल में एक अलग तरीके से कॉन्फ़िगर किया जा सकता है, इसका आउटपुट देखें stty -a:

$ stty -a | grep susp
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;

आप जारी करके अपनी नौकरियों की जाँच कर सकते हैं jobs:

# jobs
[1]   Stopped                 journalctl -f
[2]-  Stopped                 vim /etc/hosts
[3]+  Stopped                 tail -f /var/log/firewalld

उनमें से एक को अग्रभूमि में लाओ:

$ fg %3

या इसे पृष्ठभूमि में फिर से शुरू करें:

$ bg %2

इस पद्धति के कई फायदे नहीं हैं screenया tmuxकुछ स्थितियों में समान रूप से उपयोगी हो सकते हैं।


मुद्दा यह है कि मैं प्रारंभिक कंसोल पर चल रही प्रक्रिया को निलंबित या बाधित नहीं करना चाहता। उदाहरण के लिए, दौड़ते समय ddrescueमैं इसे बीच में रोकना और फिर से शुरू नहीं करना चाहता, भले ही ऐसा करने के लिए इसे सेट किया गया हो ..
StarNamer

इसके साथ एक युगल जारी करता है। एक के लिए, वह अपने शेल के रूप में पार्टी का उपयोग नहीं किया जा सकता है (का उपयोग कर किया जा सकता है csh, tcshया zsh, उदाहरण के लिए) है, इसलिए इसके मैनपेज उल्लेख है कि मामले में गलत होगा। दूसरे के लिए, यह पूछे गए सवाल का जवाब नहीं देता है।
पार्थियन ने शॉट

1

टर्मिनल मल्टीप्लेक्सर्स जैसे कि टमक्स या स्क्रीन का उपयोग करने पर विचार करें।

यहाँ tmux के बारे में अधिक जानकारी प्राप्त करें: https://github.com/tmux/tmux/wiki


इस प्रश्न का पहले ही उल्लेख किया गया है: "जाहिर है, एक विधि tty1 * में स्क्रीन का उपयोग करने के लिए हो सकती है , लेकिन इसमें Alt-F1, Alt-F2, आदि के साथ सिर्फ सत्र स्विच करने में आसानी नहीं है"।
क्रिस्टियन सियुपिटु

जैसा कि क्रिस्टियन कहते हैं, मैंने पहले ही विचार कर लिया था screenऔर महसूस किया था कि अन्य मल्टीप्लेक्सर्स भी अधिक ओवरकिल थे। मुझे बस एक सरल दूसरा कंसोल चाहिए।
स्टारनामर

आह, क्षमा करें, मैंने screenआपके प्रश्न की अनदेखी की । उसमें देर हो चुकी थी।
मार्सिन कमिंसकी

नए TTYs के बगल में 2 कुंजी के संयोजन का उपयोग "ओवरकिल" हो सकता है, और उनके लिए अलग से और इस तरह से एंकरिंग करना है?
मावरोन

IMO, यह 'ओवरकिल' की एक अजीब परिभाषा है, लेकिन हे, जो किसी के लिए काम करता है, मैं इसके साथ ठीक हूं;)
मार्सिन कमिंसकी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.