Android

Lệnh Kill trong linux

[UNIX] Tìm hiểu hệ thống UNIX

[UNIX] Tìm hiểu hệ thống UNIX

Mục lục:

Anonim

Linux là một hệ điều hành tuyệt vời và tiên tiến, nhưng nó không hoàn hảo. Thỉnh thoảng, một số ứng dụng có thể bắt đầu hoạt động thất thường và trở nên không phản hồi hoặc bắt đầu tiêu tốn nhiều tài nguyên hệ thống. Các ứng dụng không phản hồi không thể được khởi động lại vì quy trình ứng dụng gốc không bao giờ tắt hoàn toàn. Giải pháp duy nhất là khởi động lại hệ thống hoặc tắt tiến trình ứng dụng.

Có một số tiện ích cho phép bạn chấm dứt các quá trình sai lầm với kill được sử dụng phổ biến nhất.

kill lệnh

kill là một shell được tích hợp trong hầu hết các shell có nguồn gốc từ Bourne như Bash và Zsh. Hành vi lệnh hơi khác nhau giữa các shell và thực thi độc lập /bin/kill .

Sử dụng lệnh type để hiển thị tất cả các vị trí trên hệ thống của bạn có chứa kill :

type -a kill

kill is a shell builtin kill is /bin/kill

Đầu ra ở trên cho biết rằng phần tử dựng sẵn có mức độ ưu tiên so với tệp thực thi độc lập và nó được sử dụng bất cứ khi nào bạn gõ kill . Nếu bạn muốn sử dụng nhị phân, hãy nhập đường dẫn đầy đủ đến tệp /bin/kill ., chúng tôi sẽ sử dụng nội dung Bash.

Cú pháp của lệnh kill có dạng sau:

kill…

Lệnh kill sẽ gửi tín hiệu đến các quy trình hoặc nhóm quy trình được chỉ định, khiến chúng hoạt động theo tín hiệu. Khi tín hiệu không được chỉ định, nó mặc định là -15 (-TERM).

Các tín hiệu thường được sử dụng là:

  • 1 ( HUP ) - Tải lại một quy trình. 9 ( KILL ) - Giết một quá trình. 15 ( TERM ) - Duyên dáng dừng một quá trình.

Để có danh sách tất cả các tín hiệu khả dụng, hãy gọi lệnh với tùy chọn -l :

kill -l

Tín hiệu có thể được chỉ định theo ba cách khác nhau:

  1. Sử dụng số (ví dụ: -1 hoặc -s 1 ). Sử dụng tiền tố của SIG, (ví dụ: -SIGHUP hoặc -s SIGHUP ).

Các lệnh sau tương đương với nhau:

kill -1 PID_NUMBER kill -SIGHUP PID_NUMBER kill -HUP PID_NUMBER

Các PID được cung cấp cho lệnh kill có thể là một trong những điều sau đây:

  • Nếu PID lớn hơn 0, tín hiệu được gửi đến tiến trình có ID bằng với PID . Nếu PID bằng 0, tín hiệu được gửi đến tất cả các quy trình trong nhóm quy trình hiện tại. Nói cách khác, tín hiệu được gửi đến tất cả các quá trình thuộc GID của shell đã gọi lệnh kill . Sử dụng lệnh ps -efj để xem ID nhóm quy trình (GID). Nếu PID bằng -1 , tín hiệu được gửi đến tất cả các quy trình có cùng UID khi người dùng gọi lệnh. Nếu người dùng gọi là root, tín hiệu được gửi đến tất cả các quy trình ngoại trừ init và chính quá trình kill Nếu PID nhỏ hơn -1 , tín hiệu được gửi đến tất cả các quy trình trong nhóm quy trình eq với GID bằng giá trị tuyệt đối của PID .

Người dùng thông thường có thể gửi tín hiệu đến các quy trình của riêng họ, nhưng không gửi tín hiệu cho người dùng khác, trong khi người dùng root có thể gửi tín hiệu đến các quy trình của người dùng khác.

Chấm dứt quá trình sử dụng lệnh kill

Để chấm dứt hoặc giết một tiến trình bằng lệnh kill , trước tiên bạn cần tìm số ID tiến trình (PID). Bạn có thể làm điều này bằng các lệnh khác nhau như top , ps , pidof pgrep .

Giả sử trình duyệt Firefox đã không phản hồi và bạn cần phải hủy quy trình Firefox. Để tìm các PID trình duyệt, sử dụng lệnh pidof :

pidof firefox

Lệnh sẽ in ID của tất cả các quy trình Firefox:

6263 6199 6142 6076

Khi bạn biết các số tiến trình, bạn có thể chấm dứt tất cả chúng bằng cách gửi tín hiệu TERM :

kill -9 2551 2514 1963 1856 1771

Thay vì tìm kiếm các PID và sau đó kết thúc các tiến trình, bạn có thể kết hợp các lệnh trên thành một:

kill -9 $(pidof firefox)

Quá trình tải lại bằng lệnh kill

Một trường hợp sử dụng phổ biến khác cho kill là gửi tín hiệu HUP , thông báo cho các quá trình tải lại cài đặt của nó.

Ví dụ, để tải lại Nginx, bạn cần gửi tín hiệu đến quy trình chính. ID tiến trình của quy trình chính Nginx có thể được tìm thấy trong tệp nginx.pid , thường được đặt trong thư mục /var/run .

Sử dụng lệnh cat để tìm PID chính:

cat /var/run/nginx.pid

30251

Khi bạn tìm thấy PID chính tải lại cài đặt Nginx bằng cách nhập:

sudo kill -1 30251

Lệnh trên phải được chạy dưới quyền root hoặc người dùng có quyền sudo.

Phần kết luận

Lệnh kill được sử dụng để gửi tín hiệu đến các tiến trình. Tín hiệu được sử dụng thường xuyên nhất là SIGKILL hoặc -9 , kết thúc các quá trình đã cho.

giết thiết bị đầu cuối