คำถามติดแท็ก disown


9
ฉันจะปฏิเสธกระบวนการที่กำลังทำงานอยู่และเชื่อมโยงกับเชลล์หน้าจอใหม่ได้อย่างไร
ฉันมีโปรแกรมที่ทำงานบนเชลล์ SSH ฉันต้องการหยุดมันชั่วคราวและสามารถหยุดการหยุดชั่วคราวเมื่อฉันกลับมา วิธีหนึ่งที่ฉันคิดว่าทำคือโอนความเป็นเจ้าของไปยังหน้าจอเชลล์ดังนั้นทำให้มันทำงานอยู่ในนั้น มีวิธีอื่นในการดำเนินการต่อหรือไม่?

4
เกิดอะไรขึ้นกับผลลัพธ์ของกระบวนการที่ถูกปฏิเสธและสูญเสียเทอร์มินัล
ถ้าฉันปิดเทอร์มินัลเสมือนซึ่งบางกระบวนการเริ่มทำงานเอาต์พุตจะตรงไป/dev/nullหรืออาจทำให้หน่วยความจำสกปรกได้หรือไม่ ฉันสามารถดึงเอาท์พุทออกมาอ่านต่อได้หลังจากนั้นได้ไหม? [แก้ไข]: ดังนั้นเป็นช่วงเวลาของการปฏิเสธกระบวนการอย่างมีประสิทธิภาพสิ้นอำนาจของฉันในการควบคุมการส่งออกของมันได้หรือไม่ ฉันยังสังเกตเห็นด้วยว่าถ้าฉันปฏิเสธกระบวนการที่หยุดตอนแรกทุกอย่างดูเหมือนปกติ: มันไม่ได้ถูกยกเลิกหรือแสดงในงาน แต่ถ้าฉันออกจากระบบ (และฉันไม่ได้หมายถึงปิดเทอร์มินัลเพียงออกจากsuตัวอย่าง) กระบวนการจะสิ้นสุดลง กระบวนการที่ถูกปฏิเสธการดำเนินการเบื้องหลังทั้งหมดยังคงทำงานต่อไป

2
`ปฏิเสธ -h 'และ` nohup` ทำงานอย่างมีประสิทธิภาพเหมือนกันหรือไม่?
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 …
18 bash  nohup  disown 

4
ฉันจะแยกกระบวนการออกจากสคริปต์ทุบตีได้อย่างไร
ฉันกำลังพยายามแยกโพรเซสจาก bash script เพื่อที่ SIGINT จะไม่ถูกส่งต่อไปยังโพรเซสเมื่อฉันออกจากสคริปท์ ฉันใช้disownคำสั่งในเทอร์มินัลโดยตรงอย่างไรก็ตามใน bash disownไม่ได้หยุด SIGINT จากการถูกส่งต่อ วัตถุประสงค์ของสคริปต์นี้คือการเริ่มต้น openocd แล้ว gdb ด้วยการเรียกเพียงครั้งเดียว เนื่องจากสคริปต์ไม่เคยออก (กำลังเรียกใช้ gdb) SIGINT ยังคงถูกส่งต่อจาก gdb ไปยัง openocd ซึ่งเป็นปัญหาเนื่องจาก SIGINT ใช้เป็นคำสั่ง halt ใน gdb ในเทอร์มินัลมันจะมีหน้าตาดังนี้: $ openocd & # run openocd demonized $ disown $! # disown last pid $ gdb # invoke GDB …
18 bash  disown 

2
เปลี่ยนกระบวนการหลักของกระบวนการหรือไม่?
เป็นไปได้หรือไม่ที่จะเปลี่ยนกระบวนการหลักของกระบวนการ ถ้าใช่เป็นอย่างไร ตัวอย่างเช่น, จะscreenจัดการแนบscreenเซสชั่นและกระบวนการทำงานภายในมันไปยังกระบวนการเชลล์ที่แตกต่างกันอย่างไร มีการเปลี่ยนแปลงกระบวนการแม่หรือไม่? ฉันดูเหมือนจะได้ยินวิธีการอื่นของการเปลี่ยนแปลงกระบวนการเชลล์ที่โปรแกรมกำลังทำงานอยู่ แต่ฉันจำไม่ได้ มีการเปลี่ยนแปลงของกระบวนการหลักของโปรแกรมหรือไม่? ฉันคิดว่าdisownในกระบวนการจะเปลี่ยนกระบวนการหลักของกระบวนการเพียงเพราะชื่อdisownมีความหมายว่า แต่ฉันพบว่ามันไม่เป็นความจริง Emacs ไคลเอ็นต์สามารถเชื่อมต่อกับเซิร์ฟเวอร์ emacs บนแท็บเทอร์มินัลอื่น มีการเปลี่ยนแปลงกระบวนการแม่หรือไม่?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.