disown
ทำให้เชลล์ไม่ส่ง SIGHUP ไปยังงานที่ถูกปฏิเสธเมื่อเชลล์ยกเลิกและ
ลบงานที่ถูกปฏิเสธจากการควบคุมงานของเชลล์
ผลลัพธ์แรกของวินาทีคืออะไร? กล่าวอีกนัยหนึ่งถ้ากระบวนการที่เริ่มต้นจากเชลล์ถูกลบออกจากการควบคุมงานของเชลล์ไม่ว่าด้วยวิธีใดเชลล์จะไม่ส่ง SIGHUP ไปยังกระบวนการเมื่อเชลล์หยุดทำงานหรือไม่
disown -h
ยังคงเก็บกระบวนการภายใต้การควบคุมงานของเชลล์ หมายความว่าdisown -h
ทำให้กระบวนการยังคงได้รับ SIGHUP ที่ส่งจากเชลล์ แต่ตั้งค่าการกระทำของ SIGHUP โดยกระบวนการให้เป็น "เพิกเฉย"? nohup
ที่ฟังดูคล้ายกับ
$ sleep 123 & disown -h
[1] 26103
$ jobs
[1]+ Running sleep 123 &
$ fg 1
sleep 123
$ ^Z
[1]+ Stopped sleep 125
$ bg 1
[1]+ sleep 123 &
$ exit
$ ps aux | grep sleep
t 26103 0.0 0.0 14584 824 ? S 15:19 0:00 sleep 123
ทำdisown -h
และnohup
ทำงานอย่างมีประสิทธิภาพเหมือนกันถ้าเราไม่สนใจความแตกต่างในการใช้เทอร์มินัล
ขอบคุณ
nohup
งานคุณจะต้องเปลี่ยนเส้นทาง stdin / stdout / stderr ออกจาก TTY (หากเชลล์เดิมของคุณเชื่อมต่อกับตัวเอง) (OTOH ฉันจริง ๆ แล้วคิดว่าวิธีปฏิบัติที่ดีกว่าอาศัยค่าเริ่มต้น hardcoded มหันต์เช่น./nohup.out
)