กลั่นกรองกระบวนการที่กำลังดำเนินอยู่


24

บางครั้งฉันลืมรันโปรแกรมภายใต้หน้าจอและไม่สามารถหยุดกลางโปรแกรมได้และฉันรู้ว่ามันใช้เวลานาน

มีวิธีในการกลั่นกรองกระบวนการที่กำลังทำงานอยู่โดยไม่ต้องเริ่มต้นใหม่หรือไม่?

คำตอบ:


12

พบคำตอบนี้ใน serverfault จากearl :

อย่างไรก็ตามสำหรับปัญหาที่เกิดขึ้นจริงของคุณมีอีกสิ่งหนึ่งที่คุณอาจลอง: หลังจากที่มีการเปิดตัวงานของคุณจากสถานีพื้นหลังได้โดยการพิมพ์ctrl- แล้วz หลังจากนั้นแยกออกจากงานมันเปลือกแม่ - ใน: หลังจากนั้นคุณสามารถปิดเครื่องได้อย่างปลอดภัยและงานจะยังคงทำงานต่อไปbg
bashdisown -h %<jobid>

และคำถามนี้จากคำถามเดียวกันจากRob Wells :

$ screen -S my_process
$ retty $(pgrep my_process)
/redraw


มีวิธีใดที่จะทำให้งานกลับมาทำงานอีกครั้งได้หรือไม่? 'หน้าจอ' จากนั้น 'fg 1' ไม่ทำงานสำหรับฉัน
Putnik

@Putnik - คุณทำขั้นตอนอื่น ๆ ตามที่อธิบายไว้หรือไม่
วอร์เรน

7

พบที่ซ้ำกันในServerFault

วิธีแก้ไขปัญหาอื่นที่ไม่พบในโพสต์นั้นคือการใช้rettyหลังจากเริ่มเซสชันหน้าจอ


5
ฉันลบคำตอบของฉัน คุณสามารถ (และควร) ยอมรับคำตอบของคุณเองหลังจาก 2 วัน อย่าลังเลที่จะอ้างถึงส่วนต่าง ๆ ที่เกี่ยวข้องที่นี่เนื่องจาก "ซ้ำซ้อน" ข้ามไซต์ไม่ใช่เรื่องหลอกลวงเนื่องจากผู้ชมที่แตกต่างกัน
Jeff Atwood

4
แต่คุณไม่ได้อ้างอิงส่วนที่เกี่ยวข้องตามคำแนะนำของ Jeff =)
David บอกว่าคืนสถานะโมนิก้า

5

ดูreptyrซึ่งทำอย่างนั้น หน้า GitHub มีข้อมูลทั้งหมด

reptyr - เครื่องมือสำหรับ "re-ptying"

โปรแกรม

reptyr เป็นยูทิลิตี้สำหรับการเรียกใช้โปรแกรมที่มีอยู่และแนบไปกับเทอร์มินัลใหม่ เริ่มกระบวนการที่ใช้เวลานานกว่า ssh แต่ต้องออกและไม่ต้องการขัดจังหวะหรือไม่ เพียงแค่เริ่มต้นหน้าจอใช้ reptyr เพื่อคว้ามันแล้วฆ่าเซสชัน ssh และมุ่งหน้ากลับบ้าน

การใช้งาน

reptyr PID

"reptyr PID" จะจับกระบวนการด้วย id PID และแนบกับเทอร์มินัลปัจจุบันของคุณ

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

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