ฉันจะเรียกคืนกระบวนการที่ถูกปฏิเสธได้อย่างไร


12

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

คำถามนี้แตกต่างจากเพียงแค่ย้ายกระบวนการทำงานไปที่หน้าจอซึ่งเกี่ยวข้องกับการเปิด stdin / out / err หมายเลขอ้างอิงที่หายไปอีกครั้ง


คำตอบ:


6

นี่เป็นคำถามที่ซ้ำกัน - ดูการย้ายกระบวนการที่กำลังทำงานอยู่แล้วไปที่หน้าจอซึ่งชี้ไปที่rettyซึ่งเป็นการแฮ็คที่น่ากลัวที่อธิบายตัวเองโดยการใช้สิ่งที่ฉันคาดเดาได้เสมออาจเป็นไปได้ แต่ไม่เคยลองเลย และ 2 (มาตรฐาน, ออก, และข้อผิดพลาดตามลำดับ) สำหรับกระบวนการและยึดติดกับพวกเขาเช่นปรสิตผิดปกติที่น่ากลัวซึ่งไม่ควรจะเป็น


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

6

ด้วยการปฏิเสธกระบวนการคุณกำลังบอกว่าคุณต้องการให้มันเพิกเฉยต่อ SIGHUP ที่ออกโดยเทอร์มินัล เมื่อคุณปิดเซสชันของคุณ (พูด, ทุบตี), กระบวนการนี้จะกลายเป็นเจ้าของโดย init ดังนั้นเมื่อคุณบอกว่าคุณต้องการเป็นเจ้าของกระบวนการอีกครั้งหลังจากที่คุณเลิกการเป็นเจ้าของคุณกำลังบอกว่าคุณต้องการที่จะเป็นเจ้าของกระบวนการอื่นซึ่งไม่ได้ดำเนินการและด้วยเหตุผลที่ดี นี่เป็นไปไม่ได้เลยที่จะทำอย่างงดงามใน Linux


1
กระบวนการไม่ได้เป็นเจ้าของกระบวนการอื่นเช่นนี้ กระบวนการที่ถูกปฏิเสธยังคงทำงานอยู่ในขณะที่คุณ
mattdm

พวกเขาทำเมื่อเซสชันผู้ปกครองถูกปิด - ตามที่ระบุโดยคำถามของเขา ฉันอัปเดตคำตอบเพื่อสะท้อนสิ่งนี้
แอนดรูว์เอ็ม

กระบวนการหลักจะเปลี่ยนเป็น init แต่ก็แตกต่างจากความเป็นเจ้าของ EUID และ UID ของกระบวนการยังคงเป็นของผู้ใช้เดิม มิฉะนั้นสิ่งนี้อาจเป็นช่องโหว่เนื่องจากผู้ใช้ทุกคนจะมีวิธีใช้รหัสในฐานะผู้ใช้รายอื่นและผู้ใช้ระบบก็ไม่น้อย
mattdm

1
EUID / UID! = PPID ฉันกำลังพูดถึงกระบวนการเป็นเจ้าของไม่ใช่สิทธิ์
แอนดรูว์เอ็ม

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