Trong Linux, nếu bạn cần giết một tiến trình (vì bất kỳ lý do gì) thông qua dòng lệnh, bạn có thể sử dụng lệnh kill, lệnh này yêu cầu bạn phải truyền ID của tiến trình mà bạn đang cố gắng chấm dứt làm đầu vào. Nhưng bạn có biết rằng cũng có một cách để giết các tiến trình mà không cần chỉ định PID của chúng không?
Có, có một công cụ - được gọi là pkill - cho phép bạn thực hiện việc này. Trong bài viết này, chúng ta sẽ thảo luận về những điều cơ bản của lệnh này bằng một số ví dụ dễ hiểu. Nhưng trước khi làm điều đó, cần đề cập rằng tất cả các ví dụ ở đây đã được thử nghiệm trên máy Ubuntu 18.04 LTS và Debian 10.
Và đây là những gì trang hướng dẫn nói về công cụ này:
Sau đây là một số ví dụ theo kiểu Hỏi & Đáp sẽ giúp bạn hiểu rõ hơn về cách lệnh pkill hoạt động.
Ví dụ, nếu bạn đang cố gắng giết tiến trình 'gedit', bạn có thể thực hiện điều đó bằng cách sử dụng pkill theo cách sau:
Vậy là xong. Bạn sẽ thấy tiến trình gedit (nếu đang chạy) sẽ bị giết khi thực thi lệnh được đề cập ở trên.
Ví dụ:
Ví dụ, giả sử có hai lệnh ping đang chạy trên hệ thống của tôi. Sau đây là một đoạn trích được lấy từ đầu ra của lệnh ps:
Bây giờ, giả sử yêu cầu chỉ là tắt lệnh 'ping google.com' bằng cách sử dụng pkill.
Nếu bạn sử dụng pkill theo cách sau:
thì cả hai lệnh sẽ bị tắt. Vì vậy, để tránh điều đó, chúng ta có thể sử dụng tùy chọn dòng lệnh -f. Sau đây là cách sử dụng lệnh này:
Tôi đã thực thi lệnh trong cửa sổ terminal đầu tiên:
Kết quả trong cửa sổ terminal thứ hai nơi tiến trình ping đang chạy:
Vì vậy, khi lệnh nói trên được thực thi, chỉ có lệnh được đề cập là đầu vào bị tắt.
Có, có một công cụ - được gọi là pkill - cho phép bạn thực hiện việc này. Trong bài viết này, chúng ta sẽ thảo luận về những điều cơ bản của lệnh này bằng một số ví dụ dễ hiểu. Nhưng trước khi làm điều đó, cần đề cập rằng tất cả các ví dụ ở đây đã được thử nghiệm trên máy Ubuntu 18.04 LTS và Debian 10.
Lệnh pkill Linux
Lệnh pkill trong Linux về cơ bản là một cách dễ dàng hơn để giết các tiến trình. Sau đây là cú pháp của nó:
Mã:
pkill [options] pattern
Mã:
pkill - báo hiệu các tiến trình dựa trên tên và các thuộc tính khác
Câu hỏi 1. Làm thế nào để sử dụng lệnh pkill?
Cách sử dụng cơ bản khá đơn giản - tất cả những gì bạn phải làm là thực thi 'pkill' với tên tiến trình làm đầu vào.Ví dụ, nếu bạn đang cố gắng giết tiến trình 'gedit', bạn có thể thực hiện điều đó bằng cách sử dụng pkill theo cách sau:
Mã:
pkill gedit
Câu hỏi 2. Làm thế nào để pkill gửi một tín hiệu khác?
Như đã đề cập ở phần đầu của bài viết này, lệnh pkill về cơ bản sẽ gửi một tín hiệu đến tiến trình. Theo mặc định, tín hiệu SIGTERM được gửi, nhưng nếu muốn, bạn có thể thay đổi tín hiệu bằng tùy chọn dòng lệnh --signal.Ví dụ:
Mã:
pkill --signal [ICODE]SIGKILL[/ICODE] gedit
Câu hỏi 3. Làm thế nào để tắt tiến trình dựa trên dòng lệnh đầy đủ?
Theo mặc định, tên đầu vào (mẫu) được khớp với tên tiến trình. Tuy nhiên, nếu muốn, bạn có thể làm cho pkill khớp với toàn bộ dòng lệnh. Điều này có thể được thực hiện bằng tùy chọn dòng lệnh -f.Ví dụ, giả sử có hai lệnh ping đang chạy trên hệ thống của tôi. Sau đây là một đoạn trích được lấy từ đầu ra của lệnh ps:
Mã:
...
root 19253 0.0 0.1 9180 2916 pts/1 S+ 19:24 0:00 ping google.com
root 19331 0.0 0.1 9180 2912 pts/2 S+ 19:25 0:00 ping howtoforge.com
...
Nếu bạn sử dụng pkill theo cách sau:
Mã:
pkill ping
Mã:
pkill -f "ping google.com"
Kết quả trong cửa sổ terminal thứ hai nơi tiến trình ping đang chạy:
Vì vậy, khi lệnh nói trên được thực thi, chỉ có lệnh được đề cập là đầu vào bị tắt.
Câu hỏi 4. Làm thế nào để pkill không phân biệt chữ hoa chữ thường?
Theo mặc định, lệnh pkill phân biệt chữ hoa chữ thường, nghĩa là nó xử lý tên viết hoa và viết thường khác nhau. Tuy nhiên, nếu muốn, bạn có thể buộc pkill không phân biệt chữ hoa chữ thường, bạn có thể thực hiện điều này bằng cách sử dụng tùy chọn dòng lệnh -i.
Mã:
pkill -i [process-name]
Câu hỏi 5. Làm thế nào để syslog đọc lại tệp cấu hình của nó bằng pkill?
Bạn có thể sử dụng lệnh pkill theo cách sau để thực hiện điều này:
Mã:
pkill -HUP syslogd