Di man page
dalamnya tertulis:
0 All processes in the current process group are signaled
Dan saya mencoba seperti ini:
$ man kill &
[1] 15247
$
[1]+ Stopped man kill
$ kill 0
$ ps
15247 pts/41 00:00:00 man
Seperti yang saya pahami, kill 0
akan membunuh semua proses dalam proses saat ini, yang termasuk pid15247
. Namun, itu tidak melakukan apa pun dalam contoh ini. Adakah yang punya ide tentang cara menggunakannya?
Jawaban:
Saya tidak dapat menemukan catatan bagaimana
kill 0
berperilaku di halaman manual membunuh saya (debian).Tapi saya punya dua komentar:
(1) "Grup Proses" mungkin tidak seperti yang Anda harapkan. Anda dapat menampilkan ID Grup Proses (PGID) dengan
ps -o "%p %P %r %c %a"
:Jadi,
man
bersama - sama dengan alat pager menampilkan (less
) berada di grup proses yang sama, tetapi itu berbeda dari shell (zsh dalam kasus saya).(2) Mungkin ada dua
kill
perintah yang berbeda . Satu dibangun kebash
(lihat bash (1), Bagian "SHELL BUILTIN PERINTAH") dan eksternal/bin/kill
. Keduanya mungkin berperilaku berbeda! Anda dapat secara eksplisit menyatakan mana yang ingin Anda jalankan dengan mengetikbuiltin kill
ataucommand kill
alih-alihkill
. Perintah eksternal Anda juga dapat menjalankan dengan menentukan jalan:/bin/kill
.sumber
PPID
adalah ID proses induk , yang sering, tetapi tidak harus, ID grup proses. Kolom yang benar adalahPGID
, yang tidak muncul dalamps
output default ; Anda perlu menggunakan-o
opsi untuk membangun format khusus yang menyertakannya.:-(
)Untuk menghentikan semua proses Anda dan keluar, masukkan:
Ini mengirimkan sinyal 9, sinyal SIGKILL, ke semua proses yang memiliki ID grup proses sama dengan ID grup proses pengirim. Karena shell tidak dapat mengabaikan sinyal SIGKILL, shell ini juga menghentikan shell login dan membuat Anda log off
Ini adalah AIX Manual IBM, tetapi mungkin konsepnya berlaku.
Fungsi ini tidak ada di Linux "kill" (seperti yang saya lihat); tapi begitulah perilaku "membunuh":
Membunuh 0 tidak membunuh pid 0. Alih-alih itu adalah opsi dalam kill untuk membunuh semua proses dalam grup saat ini . Dengan perintah Anda, Anda membunuh semua yang ada di ID grup proses (GID) dari shell yang mengeluarkan perintah kill.
sumber