ก่อนอื่นทุกครั้งที่คุณรันคำสั่งเชลล์คุณจะแยกกระบวนการใหม่โดยไม่คำนึงว่าคุณจะรันด้วย&หรือไม่ &หมายความว่าคุณกำลังรันอยู่ในพื้นหลังเท่านั้น
โปรดทราบว่านี่ไม่ถูกต้องมาก คำสั่งบางคำสั่งเช่นเดียวกับcdฟังก์ชันของเชลล์และโดยปกติจะไม่แยกกระบวนการใหม่ type cmdมักจะบอกคุณว่าcmdเป็นคำสั่งภายนอกหรือฟังก์ชั่นเปลือก type typeบอกคุณว่าtypeตัวเองเป็นฟังก์ชั่นเปลือก
nohupเป็นสิ่งที่แตกต่าง SIGHUPมันบอกว่ากระบวนการใหม่ที่จะไม่สนใจ เป็นสัญญาณที่ส่งโดยเคอร์เนลเมื่อปิด parent parent
ในการตอบคำถามของคุณให้ทำดังต่อไปนี้:
- เรียกใช้
emacs & (โดยค่าเริ่มต้นควรจะทำงานในหน้าต่าง X ที่แยกต่างหาก)
exitบนเปลือกแม่ทำงาน
คุณจะสังเกตเห็นว่าemacsหน้าต่างถูกฆ่าแม้ว่าจะทำงานในพื้นหลัง นี่คือพฤติกรรมเริ่มต้นและnohupมีการใช้อย่างแม่นยำเพื่อแก้ไข
ใช้งานในพื้นหลัง (ด้วย&หรือbgฉันเดิมพันเชลล์อื่น ๆ ที่มีไวยากรณ์อื่น ๆ เช่นกัน) เป็นคุณสมบัติเชลล์ที่เกิดจากความสามารถของระบบที่ทันสมัยเพื่อมัลติทาสก์ แทนการฟอร์กอินสแตนซ์เปลือกใหม่สำหรับโปรแกรมที่คุณต้องการที่จะเปิดตัวทุกเปลือกหอยที่ทันสมัย ( bash, zsh, ksh, ... ) จะมีความสามารถในการจัดการรายการของโปรแกรม (หรืองาน ) มีเพียงหนึ่งครั้งเท่านั้นที่สามารถอยู่เบื้องหน้าซึ่งหมายความว่าจะได้รับโฟกัสของเชลล์ ฉันต้องการใครสักคนที่สามารถขยายเพิ่มเติมเกี่ยวกับความแตกต่างระหว่างขั้นตอนการทำงานในเบื้องหน้าและเป็นหนึ่งในพื้นหลัง (หลักที่ถูก acess ไปstdin/ stdout)
ในกรณีใด ๆ SIGHUPนี้ไม่ได้ส่งผลกระทบต่อวิธีการตอบสนองกระบวนการเด็ก nohupทำ.
nohupทำ ส่วนไหนที่คุณสับสน