Membunuh pekerjaan di Ubuntu

22

Ini mungkin pertanyaan yang sering diajukan, tetapi saya tidak dapat menemukan dokumentasi yang bagus.

Saya memiliki pekerjaan yang berjalan di sistem saya:

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

Bagaimana saya bisa membunuh proses ini? Saya sudah mencoba berbagai perintah kill 1, tetapi tidak berhasil.

Nick Heiner
sumber
alternatifnya, $ fg [enter] [ctrl-c]: p
bubu
@bubu: Itu tidak akan berfungsi untuk beberapa program yang menangkap SIGINT, seperti vim.
Wuffers
@ Mark Szymanski saya tahu, saya tahu: p
bubu

Jawaban:

32

Anda dapat menggunakan metode yang disarankan oleh @fideli, atau Anda dapat menggunakan killperintah seperti ini:

kill %1

Ini akan membunuh perintah yang ditangguhkan pertama. Anda juga dapat menemukan daftar perintah yang ditangguhkan seperti:

jobs

dan itu akan memberikan output seperti:

[1]+  Stopped                 yes

Jika Anda memiliki beberapa pekerjaan berhenti, jumlah dalam kurung ( [1]) akan menjadi nomor pekerjaan, yang Anda berikan setelah %di killperintah.

Wuffers
sumber
Ini bagus! Belajar tentang sesuatu yang baru kill.
fideli
1
Bagaimana saya dapat ini -bash: kill: (3593) - Operation not permitted. Ketika saya menggunakannya dengan sudo, saya mendapatkan inikill: %1: invalid process id
CMCDragonkai
1
@CMCDragonkai Anda telah mencapai situasi di mana perintah yang Anda jalankan sekarang dimiliki oleh pengguna yang berbeda karena Anda menggunakan sudo, sehingga Anda tidak dapat membunuhnya, tetapi menjalankan killmenggunakan sudoberarti Anda tidak lagi memiliki akses ke daftar pekerjaan pengguna Anda (coba berlari sudo jobsuntuk melihat apa yang saya maksud). Sebaliknya, karena Anda sekarang memiliki PID, jalankan saja sudo kill 3593.
morloch
Bagaimana proses latar belakang dapat dimiliki oleh pengguna lain?
CMCDragonkai
6

Jika Anda menjalankan, ps axAnda akan mendapatkan daftar semua proses yang berjalan. Cari yang ingin Anda bunuh dan catat nomornya di PIDkolom. Misalnya, katakan nomornya 10203, Anda kemudian akan menjalankan:

kill 10203

Anda juga dapat menjalankan ps ax | grep foountuk menemukan program yang tepat yang Anda cari. Akhirnya, Anda dapat menjalankan:

killall foo

untuk membunuh semua instance dari foo.

fideli
sumber