วิธียกเลิกการเชื่อมต่อจาก lxc-console


41

ฉันทำงานกับ lxc ใน Ubuntu 12.04 และมันยอดเยี่ยมมาก อย่างไรก็ตามฉันไม่สามารถตัดการเชื่อมต่อจากlxc-consoleเซสชันหลังจากที่ฉันเชื่อมต่อแล้ว ฉันอ่านบางที่Ctrl-aqจะตัดการเชื่อมต่อฉันจากคอนโซล แต่ดูเหมือนจะไม่ทำงาน

ฉันควรจะวิ่งlxc-consoleผ่านscreenแทนไหม?


ฉันมีปัญหาเดียวกัน หากคุณเริ่มต้นคอนเทนเนอร์ที่ลืมพารามิเตอร์ "-d" จะไม่มีทางออก Ctrl aq ไม่มีผลกระทบ ทางออกเดียวที่ฉันได้พบคือเข้าสู่คอนโซลและทำ "sudo poweroff" ที่ทำให้คุณออกไป
eos

คุณสามารถทำlxc-stopจากเปลือกหอยอื่นได้อีกด้วย
Martin Serrano

คำตอบ:


56

ใช่Ctrl-aqควรทำงานตามค่าเริ่มต้น แต่ไม่ใช่lxc-consoleไม่ได้ใช้screenเพื่อให้การทำงานของคอนโซลเป็นจริง ในความเป็นจริงคุณอาจพบข้อขัดแย้งหากคุณใช้หน้าจอเนื่องจากมันยังใช้Ctrl-aเป็นคำนำหน้า หากคุณอยู่ข้างในscreenแต่ไม่เข้าใจคุณจะต้องพิมพ์Ctrl-a a qเนื่องจากพฤติกรรมเริ่มต้นscreenคือคุณต้องพิมพ์Ctrl-a aเพื่อส่ง^aเชลล์ไปยังที่ทำงานอยู่ภายใน คุณสามารถเปลี่ยนคำนำหน้าหนีโดยผ่าน-eหรือตัวเลือกในการ--escape=PREFIXlxc-console

นอกจากนี้ยังปรากฏว่าอาจมีข้อผิดพลาดด้วยlxc-startดังนั้นหากเข้าสู่โหมดคอนโซลทันทีเมื่อคุณเริ่มคอนเทนเนอร์ที่คุณไม่สามารถใช้Ctrl-a qหลบหนี - ในความเป็นจริงแล้วตัวควบคุมทั้งหมดดูเหมือนจะเมาแล้วพิมพ์ไปที่หน้าจอ แทนที่จะประพฤติในแบบที่คุณคาดหวัง วิธีแก้ปัญหาหนึ่งคือเรียกใช้ด้วยตัวเลือก-dหรือ--daemonเพื่อไม่ให้เริ่มต้นคอนโซลได้ทันทีและเชื่อมต่อด้วยมือ:

lxc-start -d -n container-name
lxc-console -n container-name

1
<kbd> Ctrl-a q </kdMB ไม่มีผลใด ๆ กับคอนโซลที่เชื่อมต่อด้วย lxc เวอร์ชั่น 0.9.0
Jay Taylor

5
หากนักพัฒนา lxc ควรสงสัยว่าทำไมนักเทียบท่ามีการยอมรับที่สูงขึ้นเป็นพันล้านเท่าข้อผิดพลาดนี้เป็นหนึ่งในเหตุผลหลัก
Florian Heigl

1
@ FlorianHeigl ในขณะที่ฉันเห็นด้วยกับความรู้สึกของคุณเกี่ยวกับข้อผิดพลาดนี้น่าเกลียด แต่เหตุผลที่แท้จริงสำหรับทัศนคติคือ: bugs.debian.org/cgi-bin/bugreport.cgi?bug=768073 access.redhat.com/articles/1365153 การเข้าถึง redhat.com/discussions/2772171 (และโอกาสอื่น ๆ อีกมากมายที่ RedHat ตอบสนองต่อ "LX (C | D)?" ด้วย "ไม่นักเทียบท่า!" (โปรดทราบว่าสิ่งเหล่านี้เป็นผลลัพธ์อันดับต้น ๆ ของ Google สำหรับ "LXD Debian" และ "LXD Redhat ข้อความค้นหา ").
Bojan Markovic

2

สิ่งที่ฉันทำเพื่อหยุดภาชนะ

  1. เปิดเซสชันใหม่
  2. เข้าสู่ระบบในฐานะ root
  3. ตรวจสอบสถานะคอนเทนเนอร์
  4. lxc-stop -n <name of the container>

นี่จะหยุดคอนเทนเนอร์


0

มันไม่ได้เชื่อมต่อผ่านscreen? Ctrl-a dควรพาคุณออกไป

หน้า Ubuntu LXCมีข้อมูลเพิ่มเติม


ไม่มันไม่ทำงาน ฉันใช้หน้าจอเพื่อให้สามารถยกเลิกการเชื่อมต่อจาก lxc-console นอกจากนี้ลิงก์ที่คุณโพสต์ไม่มีข้อมูลใด ๆ เกี่ยวกับปัญหานี้
robbyt

"แยกหน้าจอ: Ca d หรือ Ca Cd" - help.ubuntu.com/community/LXC#Mini_screen_how-to ; ไม่แน่ใจว่าต้องทำอย่างไรหากไม่ได้ผล
El Yobo

1
@ElYobo ไม่มีlxc-consoleไม่ได้ใช้งานจริงscreenมันก็มีลักษณะการทำงานที่คล้ายกันและโดยค่าเริ่มต้นจริงใช้กุญแจที่ขัดแย้งกับการscreen's เป็นอธิบายไว้ที่นี่
aculich

0

ทางเลือกในการเข้าสู่ระบบเป็นเพียงการไม่ssh <ip>instaed lxc-consoleของการใช้ คุณสามารถใช้เริ่มเป็น daemon โดยใช้lxc-start -d -n <name>จากนั้นเข้าสู่ระบบโดยใช้คอนโซลเพื่อรับ IP เป็นครั้งแรก


0

ฉันมีปัญหาที่คล้ายกันเมื่อทำงานกับ Trusty LXC ของฉันใน Xenial-host และหลังจากเริ่มต้นคอนเทนเนอร์ด้วยlxc-start -F -n CNไม่สามารถออกไปและกลับสู่โฮสต์เมื่อออกจากระบบคอนเทนเนอร์ อีกทั้งsudo lxc-ls -fใน host hanged และไม่มีlxc-stopคำสั่งใดที่มีตัวเลือก -k หรือ -W หรือ - no-lock ทำงานดังนั้นในที่สุดฉันก็ฆ่า -9'd กระบวนการ container ที่ใช้งานได้ แต่หลังจากนั้นก็เริ่ม container ด้วยlxc-startหรือlxc-attachทำงานไม่ถูกต้อง แต่แสดงข้อผิดพลาดเกี่ยวกับ lxc_cgfsng และไม่พบ init pid เป็นต้น

ดูเพิ่มเติมได้ที่นี่: https://github.com/lxc/lxc/issues/1195


-6

เมื่อคุณทำงานกับแอปพลิเคชั่นบางตัวเสร็จแล้วคุณสามารถยกเลิก CTR + C แม่มดได้ หากไม่ได้ทำเคล็ดลับนั้นจะมีคำสั่งเลิกเสมอ: CTRL +

CTRL + D ในทางกลับกันหมายถึง "END OF FILE" และทำงานได้โดยปกติเพื่อหยุดบางโปรแกรมไม่ให้อ่านคีย์บอร์ด คุณสามารถล็อกเอาต์ของเชลล์ปกติด้วย CTRL + D

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