ฆ่างานใน Ubuntu


22

นี่อาจเป็นคำถามที่ถามบ่อย แต่ฉันไม่พบเอกสารที่ดี

ฉันมีงานที่ทำงานในระบบของฉัน:

foo@fooBox:~/tmp$ jobs
[1]+  Stopped                 foo bar baz

ฉันจะฆ่ากระบวนการนี้ได้อย่างไร ฉันลองใช้คำสั่งต่าง ๆ เช่นkill 1แต่มันไม่ได้ผล


อีกทางเลือกหนึ่งคือ $ fg [enter] [ctrl-c]: p
bubu

@bubu: นั่นจะไม่ทำงานสำหรับบางโปรแกรมจับที่เช่นSIGINT vim
Wuffers

@Mark Szymanski ฉันรู้ฉันรู้: p
bubu

คำตอบ:


32

คุณสามารถใช้วิธีการที่แนะนำโดย @fideli หรือคุณสามารถใช้ killคำสั่งดังนี้:

kill %1

นี่จะฆ่าคำสั่งที่ถูกระงับแรก คุณสามารถค้นหารายการคำสั่งที่ถูกระงับเช่น:

jobs

และจะให้ผลลัพธ์เช่น:

[1]+  Stopped                 yes

หากคุณมีงานหยุดหลายตัวเลขในวงเล็บ ( [1]) จะมีจำนวนงานหนึ่งที่คุณให้หลังจากที่%ในkillคำสั่ง


มันเยี่ยมมาก! killบางสิ่งบางอย่างเกี่ยวกับการเรียนรู้ใหม่
fideli

1
-bash: kill: (3593) - Operation not permittedวิธีมาผมได้รับนี้ เมื่อฉันใช้กับ sudo ฉันจะได้รับมันkill: %1: invalid process id
CMCDragonkai

1
@CMCDragonkai คุณได้ตีสถานการณ์ที่คำสั่งที่คุณวิ่งได้เป็นเจ้าของโดยผู้ใช้ที่แตกต่างกันเพราะคุณใช้sudoดังนั้นคุณจึงไม่สามารถฆ่ามัน แต่ทำงานkillโดยใช้sudoวิธีการที่คุณไม่ได้เข้าสู่รายการงานของผู้ใช้ (ลอง วิ่งsudo jobsเพื่อดูว่าฉันหมายถึงอะไร) แต่เนื่องจากคุณมี PID แล้วให้เรียกใช้sudo kill 3593แทน
morloch

กระบวนการพื้นหลังสามารถเป็นเจ้าของโดยผู้ใช้รายอื่นได้อย่างไร
CMCDragonkai

6

หากคุณเรียกใช้ps axคุณจะได้รับรายการกระบวนการทั้งหมดที่ทำงานอยู่ ค้นหาหมายเลขที่คุณต้องการฆ่าและจดบันทึกหมายเลขในPIDคอลัมน์ เช่นพูดว่าจำนวนนั้น10203คุณจะต้องเรียกใช้:

kill 10203

คุณสามารถเรียกใช้ps ax | grep fooเพื่อค้นหาโปรแกรมที่ต้องการได้ ในที่สุดคุณสามารถเรียกใช้:

killall foo

fooจะฆ่าทุกกรณี

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