วิธีหยุดชั่วคราวและดำเนินกระบวนการต่อ


143

ใน bash เทอร์มินัลฉันสามารถกดControl+ Zเพื่อหยุดกระบวนการทำงานใด ๆ ... จากนั้นฉันสามารถพิมพ์fgเพื่อดำเนินการกระบวนการต่อ

เป็นไปได้หรือไม่ที่จะระงับกระบวนการหากฉันมี PID เท่านั้น และถ้าเป็นเช่นนั้นฉันควรใช้คำสั่งอะไร

ฉันกำลังมองหาสิ่งที่ชอบ:

suspend-process $PID_OF_PROCESS

แล้วจึงกลับมาทำงานอีกครั้งด้วย

resume-process $PID_OF_PROCESS

คำตอบ:


172

คุณสามารถใช้killเพื่อหยุดกระบวนการ

สำหรับการ 'สุภาพ' หยุดกระบวนการ (ต้องการสิ่งนี้สำหรับการใช้งานปกติ) ส่ง SIGTSTP:

kill -TSTP [pid]

สำหรับการหยุด 'ยาก' ส่ง SIGSTOP:

kill -STOP [pid]

โปรดทราบว่าหากกระบวนการที่คุณพยายามหยุดโดย PID อยู่ในตารางงานของเชลล์มันอาจยังปรากฏให้เห็น แต่จะถูกยกเลิกจนกว่ากระบวนการนั้นจะเป็นfg'd อีกครั้ง

ในการดำเนินการตามกระบวนการต่อให้ส่ง SIGCONT:

kill -CONT [pid]

25
ถ้าไม่มีเหตุผลอื่นฉันก็ชอบ SIGTSTP มากกว่า SIGSTOP เนื่องจากบางแอพพลิเคชั่นจัดการ SIGTSTP เป็นพิเศษ ตัวอย่างเช่นหาก scp แสดงแถบความคืบหน้า SIGTSTP จะทำให้มันล้างโหมดเทอร์มินัลก่อนที่จะหยุดทำงานชั่วคราว แต่ถ้าคุณส่ง SIGSTOP มันจะไม่มีโอกาสทำเช่นนั้น
ephemient

3
@ephemient ฉันลอง SIGTSTP ฉันเห็นสิ่งที่คุณพูดเกี่ยวกับการทำความสะอาดเครื่อง ขอบคุณสำหรับคำอธิบาย SIGTSTP ที่ alawys ที่ดีในการเรียนรู้สิ่งใหม่ :)
สตีฟ Burdine

2
นอกจากนี้ยังมีประโยชน์ที่จะต้องทราบว่าคุณสามารถอ้างอิงค่า [pid] โดยใช้สัญลักษณ์% แล้วตามด้วยหมายเลขงาน (อันที่คุณสามารถหาได้โดยการเรียกใช้jobs) ดังนั้นคุณจะไป:kill -TSTP %1
Karoh

ดูเพิ่มเติมที่: [ stackoverflow.com/questions/11886812/…
AAAfarmclub

43

คุณควรใช้killคำสั่งสำหรับสิ่งนั้น

เพื่อให้ละเอียดมากขึ้น - คุณต้องระบุสัญญาณที่ถูกต้องเช่น

$ kill -TSTP $PID_OF_PROCESS

สำหรับการระงับกระบวนการและ

$ kill -CONT $PID_OF_PROCESS

สำหรับการดำเนินการต่อ เอกสารที่นี่


ฉันสงสัยว่าอุบัติเหตุทางประวัติศาสตร์นำไปสู่คำตอบนี้ได้รับคะแนนน้อยลงอย่างไร คำตอบนั้นใกล้เคียงกันและอันนี้มาก่อน ....
ไวลด์การ์ด

7
@ Wildcard เมื่อฉันสร้างคำตอบฉันก็รีบหน่อยดังนั้นโดยพื้นฐานแล้วมันมีแค่ส่วนแรกจนถึงkill -TSTP(เช่นวิธีการระงับ) 1/2 ปีต่อมาคือ 2011 ฉันทบทวนคำตอบของฉันอีกครั้งและสังเกตว่ามันไม่สมบูรณ์ ดังนั้นฉันจึงแก้ไขและเพิ่มkill -CONTส่วน สิ่งนี้ควรอธิบายความแตกต่างของคะแนนโหวตเมื่อเปรียบเทียบกับคำตอบของสตีฟ
maxschlepzig
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.