ผลของ CTRL + Z ในแอปพลิเคชัน unix \ Linux คืออะไร


85

ฉันสงสัยและสับสนว่าพฤติกรรมของ CTRl + Z เป็นอย่างไร

ฉันรู้ว่าถ้ากระบวนการในการทำงานในเบื้องหน้าและเรากด ctrl + z มันจะไปที่พื้นหลัง

แต่เกิดอะไรขึ้นกันแน่

มันยังคงทำหน้าที่ของมันต่อไปหรือหยุดทำงานชั่วคราวและหยุดตรงจุดที่เคยเป็น

และถ้ามันหยุดลงที่จุดนั้นและความหมายของงานพื้นหลังคืออะไร


7
Ctrl-Z ไม่ได้ส่งโปรเซสไปยังพื้นหลังมันระงับมัน
Wooble

คำตอบ:


70

"งานแบ็คกราวน์" เป็นเพียงสิ่งเดียวที่ไม่ได้โต้ตอบกับผู้ใช้ - มันไม่ได้ควบคุม tty และมันก็ทำสิ่งนั้น (โดยทั่วไปเงียบ ๆ ) งานพื้นหน้าเป็นสิ่งที่ตรงกันข้ามมันควบคุม tty เพื่อโต้ตอบกับผู้ใช้

Control-Z ระงับกระบวนการพื้นหน้าล่าสุด (กระบวนการสุดท้ายในการโต้ตอบกับ tty) (ยกเว้นว่ากระบวนการนั้นใช้ขั้นตอนในการเพิกเฉยต่อการระงับเช่นเดียวกับที่เชลล์ทำตามปกติ) ซึ่งมักจะนำคุณกลับไปที่เปลือกของคุณจากการที่คุณโดยทั่วไปสามารถป้อนคำสั่งbgที่จะย้ายกระบวนการเพียงแค่ระงับไปที่พื้นหลัง (ปล่อยให้มันทำงานต่อไป) หรือfgที่จะนำมันกลับไปเบื้องหน้า


1
หากต้องการยกเลิกกระบวนการที่มีพื้นหลังโดยfgระบุอันดับแรกว่างานใดที่ออกโดยjobs บอกว่าถ้า% 1 แล้วปัญหา fb %1 และกระบวนการจะกลับมาทำงานต่อ
Scott Stensland

fg %1ไม่fb %1
ahonnecke

55

กด Ctrl + Z ส่งTSTPสัญญาณไปยังกระบวนการของคุณ การดำเนินการนี้จะหยุดลง (เคอร์เนลจะไม่กำหนดเวลา CPU อีกต่อไปให้กับกระบวนการ) และกระบวนการกำลังรอการติดต่อเพื่อดำเนินการต่อ

คุณสามารถเลียนแบบ / ทำซ้ำสิ่งนี้ผ่านทางkill -TSTPและkill -CONT(เนื่องจากkillจะส่งสัญญาณที่ระบุชื่อไปยังกระบวนการของคุณแม้จะมีชื่อ!)

เชลล์มีฟังก์ชันเพื่อ 'แบ็คกราวน์' ของกระบวนการ แต่นี่เป็นความสัมพันธ์ระหว่างเชลล์กับกระบวนการ กระบวนการนี้ไม่มีแนวคิดของ 'พื้นหลัง' หรือ 'เบื้องหน้า'

ดูที่นี่สำหรับข้อมูลเพิ่มเติม


2
^Zส่ง SIGTSTP ไม่ใช่ SIGSTOP
William Pursell

@WilliamPursell - อ่า! ข้อสังเกต. ตอนนี้เปลี่ยนไปแล้ว ขอบคุณ
Brian Agnew

15

พิจารณาคำสั่งนี้ซึ่งใช้เวลาประมาณ 4.5 วินาทีบนแล็ปท็อปของฉัน:

echo 2^10000000 | bc -lq | wc -c

เมื่อคุณกดCtrl+ Zการคำนวณจะถูกระงับ คุณมีตัวเลือกที่จะกลับมาคำนวณในเบื้องหน้าใช้หรือเริ่มการทำงานในพื้นหลังโดยใช้fg bgหลังมีมากหรือน้อยเทียบเท่ากับการดำเนินการ:

echo 2^10000000 | bc -lq | wc -c &

9

กระบวนการถูกระงับและหยุดทำงานเมื่อกด ctrl + z ด้วย fg คุณสามารถย้ายงานที่ถูกเลื่อนไปยังพื้นหน้าได้ด้วย bg คุณสามารถรันในพื้นหลัง

ดูhttp://linuxreviews.org/beginner/jobs/สำหรับข้อมูลเพิ่มเติม

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