Giống như nó nói, nó sẽ gửi tín hiệu cho tất cả các thành viên của nhóm quy trình của người gọi.
Các nhóm quy trình được sử dụng để thực hiện kiểm soát công việc trong shell (chúng có thể được sử dụng cho những thứ khác, nhưng kiểm soát công việc shell tương tác là lý do chính cho sự tồn tại của chúng).
Bạn sẽ nhận thấy rằng khi bạn nhập Ctrl-C, tất cả các quy trình của các công việc hiện tại sẽ bị hủy, không chỉ quy trình bắt đầu chúng. Ngoài ra, điều đó không giết chết các công việc nền.
Điều đó đạt được với các nhóm quy trình. Công việc là một nhóm các quy trình được bắt đầu bởi một trình bao mà trình bao có thể đặt ở chế độ nền hoặc tiền cảnh (được đặt làm nhóm quy trình tiền cảnh của thiết bị đầu cuối hoặc không) và giết toàn bộ.
Bạn có thể tìm hiểu về id nhóm quá trình và id phiên với ps -j
( j
để Jkiểm soát ob).
Để tiêu diệt nhóm quy trình của PGID $x
, bạn làm:
kill -- "-$x"
kill 0
giết chết nhóm quá trình của người gọi
Lưu ý rằng nếu bạn làm : /bin/kill 0
, shell sẽ bắt đầu một công việc mới để thực thi kill
lệnh đó , vì vậy kill
sẽ chỉ tự giết.
kill
thường là một vỏ dựng sẵn, vì vậy kill
sẽ giết chết nhóm quá trình của vỏ.
Tuy nhiên, khi shell tương tác, đó là quy trình quản lý các nhóm quy trình, do đó, thông thường không có quy trình nào khác trong nhóm quy trình của hệ vỏ. Tất cả các quy trình được bắt đầu bởi trình bao, nằm trong các nhóm quy trình khác:
$ sleep 1000 &
[1] 22746
$ ps -j
PID PGID SID TTY TIME CMD
22735 22735 22735 pts/23 00:00:00 zsh
22746 22746 22735 pts/23 00:00:00 sleep
22749 22749 22735 pts/23 00:00:00 ps
Ở trên, sleep
và ps
nằm trong hai nhóm quy trình khác nhau, một trong nền, một ở nền trước và chúng khác với nhóm quy trình của trình bao.
Bạn có thể làm mặc dù:
(man kill & sleep 1; ps -j; kill 0)
Lớp vỏ tương tác sẽ bắt đầu một nhóm quy trình mới cho lớp con đó, và cả lớp con và con người (và các lệnh khác được bắt đầu bởi người đàn ông như máy nhắn tin của bạn, groff ...) sẽ nằm trong cùng một nhóm quy trình, do đó kill 0
sẽ hoạt động ở đó. ( sleep
ở trên là để cung cấp đủ thời gian cho máy nhắn tin bắt đầu để chúng ta có thể nhìn thấy nó trong ps -j
đầu ra trước khi chúng ta giết nó).
SIGTERM
quá trình, mà nó đã làm. Cácman
lệnh đã chọn để bỏ qua nó.