ฉันจะเริ่มเชลล์ที่สองเมื่ออยู่ในโหมดผู้ใช้คนเดียวได้อย่างไร


14

สิ่งนี้อาจฟังดูขัดแย้งกันในแง่นี้ แต่เมื่อเร็ว ๆ นี้ฉันจำเป็นต้องใช้โหมดผู้ใช้คนเดียว (โหมดการบำรุงรักษา aka) ระยะเวลา (วัน!) ในขณะที่พยายามสร้างอาร์เรย์ RAID ที่ใช้งานไม่ได้

ขณะทำสิ่งนี้ฉันพบว่าตัวเองต้องการใช้ shell ตัวที่สองสำหรับสิ่งต่าง ๆ เช่นการตรวจสอบ / แก้ไขการตั้งค่าในไฟล์ config ต่าง ๆ หรือดูที่บันทึกของระบบในขณะที่คอนโซลหลัก

สิ่งที่จะเป็นคำสั่งที่แนะนำให้เปิดเปลือกที่สองใน tty อื่น?

เห็นได้ชัดว่าวิธีการหนึ่งอาจใช้screenใน tty1 แต่วิธีนี้ไม่ง่ายนักที่จะเปลี่ยนเซสชันด้วย Alt-F1, Alt-F2 และอื่น ๆ


4
screenเป็นเรื่องง่ายเหมือนที่ Ctrl AP ดูเหมือนจะไม่
เก่ง

น่าสังเกตว่าแอพที่ชอบscreenและtmuxสำหรับการจัดการหน้าต่าง TUI ไม่ได้ทำเคล็ดลับเสมอไป บางครั้งคุณต้องจริงอุปกรณ์มากกว่าttyX pts
คู่ปรับ Shot

คำตอบ:


14

openvtมีคำสั่งที่ออกแบบมาเฉพาะสำหรับสถานการณ์นี้คือ: เพียงเรียกใช้openvtจากเชลล์ของคุณบน tty1 และคุณจะพบว่าเชลล์รันบน tty แรกที่ไม่ได้มีบางอย่างในนั้น (อาจเป็น tty2) มีหลายตัวเลือกที่คุณอาจพบว่ามีประโยชน์ ดูหน้า man openvt

เนื่องจากนี่ไม่ใช่การเข้าสู่ระบบที่จัดการโดย getty เมื่อคุณออกจากเชลล์ใหม่คุณจะไม่เห็นพรอมต์การล็อกอินปรากฏขึ้น tty เพิ่งจะตายเพราะไม่มีกระบวนการทำงานอยู่ แต่คุณจะยังสามารถสลับไปมา (Alt-F1 Alt-F2) และดูว่ามีอะไรอยู่บนหน้าจอเมื่อคุณออกจากเปลือก deallocvtttys คำสั่งทำลายที่อยู่ในผีดิบเหมือนรัฐนี้จะกลับไปที่เดิม "Alt-F2 ไม่ทำอะไรเลย" รัฐ

แต่เดิมคำสั่งเหล่านี้ถูกเรียกopenและdisallocในที่สุดก็มีใครบางคนตัดสินใจที่จะเปลี่ยนพวกเขาเพราะพวกเขาสามัญเกินไปและการจัดสรรจะถูกตัดสินว่าเป็น "ไม่ใช่คำ"

ในสมัยก่อนเป็นเรื่องปกติสำหรับไดรเวอร์แป้นพิมพ์และเริ่มต้นการกำหนดค่าเพื่อให้ Alt + Up ทำงานopenดังนั้นมันจะทำหน้าที่เป็นฮอตคีย์เพื่อวางไข่เชลล์บนคอนโซลใหม่ /etc/inittabคุณยังอาจพบว่าเหลืออยู่ว่าการกำหนดค่าเก่าออกความเห็นในของคุณ (หากคุณไม่ได้ใช้ชื่อใหม่ที่ไม่ได้มีinittab)

มีคำถามที่คล้ายกันที่นี่


3
openvtดีฉันไม่ได้ตระหนักถึง +1
jscott

อันนี้ดูเหมือนง่ายกว่านั้นมาก ฉันไม่เคยรู้เลยว่าติดตั้งแล้ว
StarNamer

แค่คิดว่าฉันรายงานว่าฉันใช้เวลากว่าหนึ่งสัปดาห์กับระบบในโหมดผู้ใช้เดี่ยวที่ซ่อมแซมอาร์เรย์ RAID และopenvtพิสูจน์แล้วว่ามีประโยชน์มาก ขอขอบคุณที่แจ้งคำสั่งใหม่ให้ฉันทราบ
StarNamer

12

คุณสามารถวางไข่อื่นgettyตามที่คุณต้องการ บูตเข้าสู่โหมดผู้ใช้คนเดียวจากนั้นเริ่มต้น a gettytty2:

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

ตอนนี้คุณสามารถเพิ่มAlt+ F2ไปที่ tty ใหม่ได้แล้ว ทำซ้ำสำหรับ tty เพิ่มเติมตามต้องการ คุณอาจทำสิ่งที่สะอาดกว่านี้และกำหนดค่า/etc/inittabให้จัดการสิ่งนี้โดยอัตโนมัติในโหมดผู้ใช้คนเดียว


ดูเหมือนว่าสิ่งที่ฉันกำลังมองหา ฉันจะลองอีกครั้ง
StarNamer

พยายามมัน มันใช้งานได้ แต่เนื่องจากเซสชั่นการเข้าสู่ระบบไม่ได้เกิดจากinitมันจะไม่ได้รับกลับมาอีกถ้ามันตาย
StarNamer

อันที่จริงเราเพิ่งวางมันลงในพื้นหลังในตัวอย่างข้างต้น หากคุณต้องการข้อเสนอแบบเต็มของ vt จริงคุณจะต้องแฮ็ค/etc/inittabและ/etc/rc1.d/S??singleอย่างน้อยที่สุด
jscott

2

คุณสามารถทำได้โดยไม่ใช้เปลือกพิเศษโดยใช้JOB CONTROLในเปลือกปัจจุบันของคุณ มันถูกบันทึกไว้ใน manpage 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ตัวอย่างเช่น) ดังนั้นการกล่าวขวัญ manpage ของมันจะเป็นที่ไม่ถูกต้องในกรณีที่ อีกข้อหนึ่งไม่ตอบคำถามตามที่ถาม
คู่ปรับ Shot

1

พิจารณาใช้เทอร์มินัลมัลติเพล็กเซอร์เช่น tmux หรือหน้าจอ

ค้นหาข้อมูลเพิ่มเติมเกี่ยวกับ tmux ได้ที่นี่: https://github.com/tmux/tmux/wiki


คำถามดังกล่าวได้กล่าวมาแล้ว: "เห็นได้ชัดว่าวิธีการหนึ่งอาจใช้หน้าจอใน tty1 * แต่วิธีนี้ไม่ง่ายนักที่จะสลับเซสชันกับ Alt-F1, Alt-F2 และอื่น ๆ "
Cristian Ciupitu

ดังที่ Cristian บอกฉันได้พิจารณาแล้วscreenและรู้สึกว่ามัลติเพล็กเซอร์อื่น ๆ สิ่งที่ฉันต้องการคือคอนโซลที่สองที่เรียบง่าย
StarNamer

ขอโทษฉันมองข้ามscreenคำถามของคุณ มันก็สาย.
Marcin Kaminski

วิธีการใช้การรวมกันของ 2 ปุ่มเป็น "overkill" ข้างวางไข่ TTY ใหม่วางไข่และทอดสมอพวกเขาแยกต่างหากและเช่นนี้?
mveroone

IMO มันเป็นคำนิยามที่แปลกประหลาดของ 'overkill' แต่เฮ้อะไรก็ตามที่เหมาะกับใครสักคนฉันก็สบายดีกับมัน;)
Marcin Kaminski
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.