Trong bài viết này, chúng ta sẽ tìm hiểu Quy trình Kill là gì, tại sao và nơi nó được sử dụng. Tuy nhiên, nếu bạn thấy điều này hơi khó hiểu, hãy để tôi giải thích. Quy trình giết không là gì khác ngoài một phương pháp để giết một quy trình. Do đó, để có một ý tưởng cơ bản về nó trước khi tiếp tục, sẽ rất tốt nếu thảo luận một chút về nó, điều này cũng sẽ giúp bạn xóa bỏ hầu hết các nghi ngờ.
Trong một số trường hợp, bạn có thể nhận thấy rằng khi một tiến trình Linux không phản hồi hoặc tiêu tốn nhiều tài nguyên, bạn không còn lựa chọn nào khác ngoài việc giết nó. Tuy nhiên, loại tình huống như vậy không phải luôn luôn như vậy. Do đó, hầu hết các quy trình đều có các phương pháp tắt riêng để tránh những tình huống này. Thật không may, cũng có một số loại quy trình khác có thể hoạt động sai và không tự dừng lại. Do đó, nếu một tiến trình nền đang chạy trở nên không phản hồi hoặc tiêu tốn nhiều tài nguyên hơn mức cần thiết, thì cần phải tắt hoặc giết nó bằng một quy trình hoặc phương pháp được gọi là “kill Process”.
Bạn có thể Kill Process nào trong Linux?
Trước khi chấm dứt hoặc hủy bỏ một quy trình, bạn cần xem xét các quyền cần thiết để chấm dứt một quy trình, đặc biệt là khi bạn không có quyền truy cập vào tài khoản gốc. Tuy nhiên, nếu bạn có quyền truy cập vào tài khoản gốc hoặc là người duy nhất sở hữu hệ thống, trong trường hợp đó, bạn có quyền chấm dứt bất kỳ loại quy trình nào bất kỳ lúc nào. Nếu không, người dùng bình thường không có quyền truy cập tài khoản root có thể sử dụng “sudo” trong tiền tố của lệnh trong khi kết thúc quá trình bằng dòng lệnh.
Điều gì xảy ra khi bạn Kill Process?
Bất cứ khi nào người dùng giết một quy trình, nó thực sự gửi một tín hiệu đến tiến trình đích, được coi là một tín hiệu kết thúc hoặc thông báo kết thúc. Tuy nhiên, có một số loại thông báo chấm dứt và một số loại như sau:
- SIGKILL – Nó thường được coi là cách cuối cùng để giết chết một quy trình. Nó sẽ luôn giết một tiến trình và sẽ giết tiến trình đó một cách đột ngột, tạo ra một lỗi nghiêm trọng. SIGKILL sẽ luôn hoạt động. Tuy nhiên, nếu SIGKILL không hoạt động, điều đó rõ ràng có nghĩa là hệ điều hành đã bị lỗi.
- SIGTERM – Nó thường được coi là một phương pháp kém hiệu quả hơn vì nó cố gắng hết sức để Kill Process, nhưng không giống như SIGKILL, nó có thể bị chặn hoặc xử lý theo cách khác. Do đó, nó có thể được coi là một cách nhẹ nhàng hơn để cố gắng kết thúc một quá trình.
Vì vậy, chúng tôi có thể nói rằng đối với hầu hết các mục đích, tốt nhất là sử dụng các phương pháp sử dụng tín hiệu “SIGKILL” để kết thúc quy trình một cách an toàn và nhanh nhất.
Làm thế nào để Kill Process?
Có nhiều cách để giết một tiến trình, nhưng ở đây chúng ta sẽ thấy phương pháp phổ biến và được sử dụng nhiều nhất mà bạn có thể sử dụng trên bất kỳ hệ điều hành dựa trên Linux nào. Mặc dù, việc giết một quy trình thường bao gồm ba bước chính mà chúng ta sẽ thấy từng bước một.
Bước 1: Xem các tiến trình Linux đang chạy
Đây là một trong những bước quan trọng nhất để giết tiến trình vì đây là bước mà chúng ta sẽ phát hiện ra tiến trình nào là mục tiêu hoặc tiêu tốn nhiều tài nguyên nhất. Do đó, để làm điều đó, bạn có thể sử dụng lệnh cho sẵn sau đây, lệnh này sẽ hiển thị tất cả các tiến trình đang chạy trên hệ thống của bạn.
top
Như bạn có thể thấy trong hình ảnh đã cho ở trên, lệnh này tiết lộ ID tiến trình và người dùng ngoài dung lượng bộ nhớ và sức mạnh CPU được sử dụng bởi mỗi tiến trình.
Lưu ý: Bạn cũng có thể kết thúc quá trình trực tiếp từ giao diện “top”. Tất cả những gì bạn cần làm là nhấn “k” trên bàn phím và nhập id của quy trình mà bạn muốn hủy.
Xem thêm Process Synchronization trong hệ điều hành
Bước 2 Xác định vị trí quá trình để giết
Trong bước này, chúng ta sẽ học cách xác định vị trí của một tiến trình bởi vì, trong một số trường hợp, cần phải xác định một tiến trình trước khi chúng ta có thể giết nó. Tuy nhiên, có một số phương pháp có thể được sử dụng để định vị một quá trình. Tuy nhiên, ở đây chúng ta sẽ thấy cái tốt nhất luôn hoạt động cũng như dễ thực hiện:
Định vị tiến trình bằng lệnh “ps”
Lệnh ps cũng hiển thị thông tin về các tiến trình tương tự như lệnh “top” mà chúng ta đã sử dụng trước đó. Tuy nhiên, nó không cung cấp giao diện tương tự như lệnh “top”. Thay vào đó, lệnh “ps” cung cấp một danh sách đầy đủ các quy trình đang chạy, được định dạng dựa trên các thẻ mà chúng tôi thêm vào. Để hiểu chi tiết hơn, chúng ta hãy xem cú pháp của nó.
ps <options>
–a. nó được sử dụng để xem các quy trình của tất cả người dùng thay vì chỉ người dùng hiện tại.
–u. nó được sử dụng để lấy thông tin chi tiết về từng quy trình
Ví dụ, thực hiện lệnh ps -A hiển thị danh sách quy trình chi tiết của tất cả các quy trình.
Bước 3 Chấm dứt Quy trình
Nói chung, có một số phương pháp khác nhau để giết một tiến trình trong Linux, tùy thuộc vào việc bạn biết tên của tiến trình đang chạy, PID của tiến trình hay chỉ là tiến trình đã chạy trong bao lâu. Hãy để chúng tôi xem một phương thức lệnh để kết thúc một quy trình bằng cách sử dụng ID quy trình. Trong phương pháp này, chúng ta sẽ sử dụng lệnh “kill.
Lệnh Kill
Lệnh này được sử dụng để tiêu diệt các tiến trình bằng PID (hoặc id tiến trình) của nó. Theo mặc định, nó sẽ gửi một “SIGTERM “tín hiệu mà chúng ta đã thảo luận ở trên. Tuy nhiên, lệnh này có thể được sử dụng để hủy nhiều quy trình bằng một lệnh duy nhất. Lệnh hủy chỉ có thể hủy một quy trình tại một thời điểm với ID quy trình đã cho. Để hủy một quy trình, nó thường gửi tín hiệu “SIGTERM” cho biết một quá trình dừng lại và đợi chương trình chạy quy trình tắt.
kill <process>
Có một số tùy chọn có thể được sử dụng với lệnh “giết”. Một số cách được sử dụng phổ biến nhất được liệt kê dưới đây:
- –e. nó được sử dụng để tìm một kết hợp chính xác cho tên quá trình.
- –l. nó được sử dụng để bỏ qua các trường hợp khi cố gắng tìm tên tiến trình.
- –i. nó được sử dụng để yêu cầu xác nhận bổ sung khi giết quá trình.
- –u. nó được sử dụng để giết các quy trình duy nhất mà một người dùng cụ thể sở hữu.
- –v. nó được sử dụng để nhận báo cáo về việc liệu quá trình đã được kết thúc thành công hay chưa.
- Ngoài việc giết các tiến trình theo tên, chúng ta cũng có thể sử dụng lệnh kill để giết một tiến trình nhất định dựa trên tuổi của nó bằng cách sử dụng lệnh sau:
- –o. Sử dụng cờ này với một khoảng thời gian để loại bỏ tất cả các quy trình đã chạy nhiều hơn khoảng thời gian đó.
- –y. Sử dụng cờ này với một khoảng thời gian để giết tất cả các quy trình đã chạy ít hơn khoảng thời gian đó.
Cho phép chúng tôi xem cách chúng tôi có thể giết một quy trình bằng cách sử dụng lệnh “kill”. Chúng ta có thể sử dụng phương pháp này nếu chúng ta biết id chính xác của quá trình.
Thí dụ
Trong ví dụ này, chúng ta sẽ sử dụng lệnh “ps” để xem tiến trình hiện đang chạy. Sau đó, chúng ta sẽ chọn một tiến trình làm mục tiêu và bằng cách sử dụng lệnh “kill” với tên của tiến trình sẽ cố gắng giết một tiến trình. Vì vậy, hãy tham gia vào nó.
Xem thêm Cơ chế Interested Variable trong hệ điều hành
Bước 1. Thực thi lệnh đã cho sau trong thiết bị đầu cuối với tư cách là người dùng root:
ps -A
Bước 2. Chọn quy trình và ghi nhớ id quy trình mà bạn muốn kết thúc. Ở đây, tôi sẽ chọn tên quy trình “calculator” và id quy trình của nó là 3210, như bạn cũng có thể thấy trong hình ảnh đã cho:
Bước 3. Sau khi định vị hoặc biết id tiến trình của tiến trình, chúng ta có thể giết hoặc kết thúc tiến trình đích chỉ bằng cách gõ id tiến trình bên cạnh lệnh “kill” như hình dưới đây:
kill 3210
Ngay sau khi bạn thực hiện lệnh đã cho ở trên, máy tính sẽ tự đóng vì quá trình của nó bị chấm dứt. Tuy nhiên, nếu bạn muốn xác minh, bạn cũng có thể sử dụng lệnh “ps -A” để xem tất cả các tiến trình đang chạy và bạn có thể tìm kiếm tiến trình với id tiến trình “3210”. Mặc dù bạn sẽ không tìm thấy nó nữa, như được hiển thị trong hình ảnh bên dưới.
Sự kiện chính về việc chấm dứt một quy trình
Bất cứ khi nào một tiến trình không thể đóng theo bất kỳ cách nào khác, nó có thể bị giết theo cách thủ công thông qua dòng lệnh.
Để giết một tiến trình trong Linux, trước tiên chúng ta phải tìm tiến trình đó. Để làm điều đó, chúng ta có thể sử dụng bất kỳ lệnh nào sau đây:
- top
- ps
- pidof
- pgrep
Khi chúng tôi tìm thấy quá trình mà chúng tôi muốn giết, chúng tôi có thể giết nó bằng cách sử dụng bất kỳ lệnh nào sau đây:
- killall
- pkill
- kill
- xkill
- top
Trong khi kết thúc quá trình, chúng tôi có thể gửi tín hiệu kết thúc của SIGHUP, SIGKILL hoặc SIGTERM.
Chúng ta cần có một số quyền để giết một tiến trình mà chúng ta có thể đạt được thông qua việc sử dụng lệnh sudo.
Xem thêm Sử dụng process trong Node.js
Kết luận về Kill Process trong Kali linux
Trong bài viết này, chúng tôi đã chỉ ra và giải thích một số cách để loại bỏ một tiến trình trong Kali Linux. Điều cần thiết đối với tất cả các quản trị viên hệ thống là phải học và hiểu các lệnh kết thúc Linux này vì ai có thể biết khi nào bạn có thể cần phải đối phó với các loại tình huống này.