การปิดเชลล์ทำได้อย่างปลอดภัยเพียงแค่คลิก“ X” หรือใช้“ ctrl + d”


11

การปิดเชลล์ทำได้อย่างปลอดภัยเพียงแค่คลิก "X" หรือใช้ "ctrl + d" ในขณะที่ล็อกอินด้วยรูทด้วย su หรือปลอดภัยกว่าหรือไม่ถ้าต้องการปิดโดยการพิมพ์ "exit" มีความแตกต่าง (การรักษาความปลอดภัยที่ชาญฉลาด) หรือเหมือนกันและมันไม่สำคัญว่าคุณจะใช้วิธีใด?

คำตอบ:


13

Ctrl-D หรือexitเหมือนกัน

หากคุณใช้ "X" ตัวจัดการหน้าต่างจะส่งสัญญาณยุติการทำงานไปที่เชลล์ ซึ่งมีในตอนท้ายผลลัพธ์เดียวกัน หากเชลล์ไม่ตอบสนองผู้ใช้มักจะได้รับคำเตือนและสามารถบังคับให้เชลล์สิ้นสุด (เท่ากับkill -9 $PID)

มีความแตกต่างเล็กน้อยระหว่าง "X" - และ exit-method หากคุณใช้zshเป็นเชลล์: หากคุณมีกระบวนการพื้นหลังที่ทำงานอยู่exit/ ctrl-D จะสร้างครั้งแรกเฉพาะข้อความเตือน "คุณมีงาน" ครั้งที่สองที่เชลล์ปิด ด้วยปุ่ม "X" เชลล์จะหยุดการทำงานทันทีโดยไม่มีคำเตือนใด ๆ


5
นอกจากนี้ยังมีความแตกต่างในการทุบตีเช่นกัน หากคุณ ctrl + d กระบวนการใด ๆ ที่ทำงานอยู่เบื้องหลัง&จะยังคงทำงานอยู่ หากคุณ "X" พวกเขาจะถูกยกเลิก
Patrick

3
@ แพทริคนี้ดูเหมือนจะขึ้นกับเทอร์มินัลอีมูเลเตอร์มากกว่าเปลือก เว้นแต่อีมูเลเตอร์จะฆ่ากระบวนการที่มีพื้นหลังอย่างชัดเจนตราบใดที่ฉันทราบว่าการทุบตีจะไม่ส่ง SIGHUP ให้พวกเขาไม่ว่าคุณจะออกจากที่ใด ฉันเพิ่งลองสิ่งนี้บน Mac OS X 10.7.3 เทอร์มินัลไม่ได้ฆ่ากระบวนการเบื้องหลัง แต่ Xterm (ทำงานใน X11) ทำ ฉันไม่รู้ว่ามันเป็นพฤติกรรมของ Xterm โดยเฉพาะหรือ X11 โดยทั่วไป
Chris หน้า

@ jofel นี้ไม่เป็นความจริงให้ดูคำตอบของฉัน
แพทริค

@ แพทริกขอบคุณสำหรับการชี้ออก ฉันจะแก้ไขหรือลบคำตอบของฉัน
jofel

@jofel nah ไม่ต้องลบข้อมูล zsh ยังมีประโยชน์ ฉันเป็นเพียง noob ที่ zsh ดังนั้นฉันจึงไม่สามารถแสดงความคิดเห็นที่นั่น แต่นั่นนำมาซึ่งจุดที่ดีดังนั้นฉันจึงแก้ไขคำตอบของฉันเพื่อให้ทราบว่ากระสุนที่แตกต่างกันสามารถทำงานได้แตกต่างกันและพฤติกรรมเริ่มต้นที่ฉันอธิบายนั้นขึ้นอยู่กับการทุบตีในขณะที่ OP ไม่ได้ระบุเปลือกของเขา
แพทริค

4

การปิดเทอร์มินัลอีมูเลเตอร์ไม่เหมือนกับการกดCTRL + D(เว้นแต่huponexitจะตั้งค่าตัวเลือก)

  • เมื่อคุณปิดเทอร์มินัล (คลิก "X") เทอร์มินัลอีมูเลเตอร์จะส่ง SIGHUP ไปยังเชลล์ เมื่อ bash ได้รับ SIGHUP มันจะส่ง SIGHUP ไปยังงานทั้งหมดของคุณ

  • เมื่อคุณออกจากเทอร์มินัลด้วยCTRL+Dหรือlogoutหรือexitเชลล์จะออกโดยไม่ส่ง SIGHUP ไปยังงานทั้งหมด นี่คือการทำงานเริ่มต้น แต่สามารถเปลี่ยนแปลงได้โดยการตั้งค่าทุบตีการตั้งค่าshopt huponexit

ดังนั้นในที่สุดหากเป้าหมายของคุณคือเพื่อให้แน่ใจว่าไม่มีอะไรทำงานในพื้นหลังควรคลิก "X" อย่างปลอดภัย

.

ข้อมูลที่ให้ไว้โดย jofel ในความคิดเห็นของเขาไม่ถูกต้อง (ขออภัย jofel) เทอร์มินัลอีมูเลเตอร์ไม่มีเงื่อนงำว่างานใดกำลังทำงานอยู่ภายใต้เชลล์ดังนั้นจึงไม่สามารถยกเลิกได้

หมายเหตุ :
พฤติกรรมนี้ขึ้นอยู่กับเชลล์อย่างสมบูรณ์ เป็นไปได้อย่างสิ้นเชิงว่ากระสุนที่แตกต่างกันนั้นมีพฤติกรรมเริ่มต้นที่แตกต่างกัน


เมื่อCtrl+dกระบวนการได้รับการสืบทอดโดย PPID 1 = systemd
EdiD

1

ไม่มีความแตกต่าง มากเมื่อคุณกด ^ D คุณกำลังทำสิ่งเดียวกันกับการพิมพ์ 'exit':

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

ใช่CTRL+Dและexitจะเหมือนกันคำถามคือเกี่ยวกับการคลิกของผู้จัดการหน้าต่าง "X" เพื่อปิดหน้าต่างที่ไม่ได้พิมพ์exit:-)
แพทริค
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.