Hướng dẫn sử dụng lệnh pidof trên Linux cho người mới bắt đầu (5 ví dụ)

theanh

Administrator
Nhân viên
Dòng lệnh Linux cung cấp nhiều tiện ích làm việc với các tiến trình. Lệnh pidof trong Linux là một tiện ích xác định ID tiến trình (PID) của một hoặc nhiều tiến trình đang chạy. Đôi khi cần phải biết PID của một tiến trình để tương tác với nó bằng các lệnh khác; pidof giúp nhiệm vụ dễ dàng hơn bằng cách cho phép bạn tìm kiếm một tiến trình theo tên của nó và nhanh chóng lấy lại PID liên quan của nó. pidof thường được bao gồm trong hầu hết các bản phân phối Linux và có thể được sử dụng từ dòng lệnh.

Trong hướng dẫn này, chúng ta sẽ thảo luận về những điều cơ bản của pidof 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 đều đã được thử nghiệm trên máy Ubuntu 22.04 LTS.

Lệnh pidof của Linux​

Như đã đề cập ở trên, lệnh pidof cho phép bạn tìm ID tiến trình của một chương trình đang chạy. Sau đây là cú pháp của nó:
Mã:
pidof [options] command
Và đây là những gì trang hướng dẫn nói về công cụ này:
Mã:
Pidof finds the process id's (pids) of the named programs. It prints
 those id's on the standard output. This program is on some systems used
 in run-level change scripts, especially when the system has a System-V
 like rc structure. In that case these scripts are located in
 /etc/rc?.d, where ? is the runlevel. If the system has a start-stop-
 daemon (8) program that should be used instead.
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 thức hoạt động của công cụ này.

Câu hỏi 1. Làm thế nào để sử dụng lệnh pidof?​

Cách sử dụng cơ bản khá đơn giản - chỉ cần truyền tên chương trình làm đầu vào cho lệnh. Ví dụ:
Mã:
pidof nano
Vì vậy, bạn có thể thấy lệnh trả về ID tiến trình của nano trong đầu ra.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22150%22%3E%3C/svg%3E

Câu hỏi 2. Làm thế nào để lệnh pidof chỉ trả về một pid duy nhất?​

Đôi khi, bạn sẽ thấy lệnh pidof trả về nhiều pid. Ví dụ, hãy thử chạy lệnh pidof với ssh daemon làm đầu vào.
Mã:
pidof sshd
Sau đây là kết quả đầu ra được tạo ra trên hệ thống của tôi:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22172%22%3E%3C/svg%3E


Và ở đây để so sánh, làm thế nào các tiến trình được liệt kê bằng lệnh ps:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22140%22%3E%3C/svg%3E


Tuy nhiên, bạn có thể buộc công cụ chỉ tạo ra một PID duy nhất trong đầu ra. Bạn có thể thực hiện việc này bằng cách sử dụng tùy chọn dòng lệnh -s.
Mã:
pidof -s sshd

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22155%22%3E%3C/svg%3E

Câu 3. Làm thế nào để giới hạn đầu ra dựa trên thư mục gốc?​

Nếu bạn muốn pidof chỉ trả về id tiến trình đang chạy với cùng thư mục gốc, hãy sử dụng tùy chọn dòng lệnh -c.
Mã:
pidof -c program_name
Xin lưu ý rằng tùy chọn này bị bỏ qua đối với người dùng không phải root vì họ sẽ không thể kiểm tra thư mục gốc hiện tại của các tiến trình
mà họ không sở hữu.

Câu hỏi 4. Làm thế nào để sử dụng pidof trong trường hợp các tệp nhị phân được lưu trên các hệ thống tệp mạng?​

Khi xử lý các tệp nhị phân nằm trên các hệ thống tệp dựa trên mạng như NFS, bạn có thể sử dụng tùy chọn dòng lệnh -n để lệnh pidof tránh sử dụng lệnh gọi hàm hệ thống stat.
Mã:
pidof -n program_name
Xin lưu ý rằng trang hướng dẫn đề xuất, "thay vì sử dụng tùy chọn này, biến PIDOF_NETFS có thể được đặt và xuất."

Câu hỏi 5. Pidof hoạt động như thế nào ở bên trong?​

Các tài liệu chính thức cho biết pidof thực chất là cùng một chương trình với killall. Chương trình hoạt động theo tên mà nó được gọi. Đây là những gì trang hướng dẫn nói chính xác:
Mã:
When pidof is invoked with a full pathname to the program it should
 find the pid of, it is reasonably safe. Otherwise it is possible that
 it returns pids of running programs that happen to have the same name
 as the program you're after but are actually other programs. Note that
 that the executable name of running processes is calculated with read?
 link(2), so symbolic links to executables will also match.

Kết luận​

Lệnh pidof có thể hữu ích trong nhiều tình huống. Ví dụ, nếu bạn muốn giết một tiến trình mà bạn không biết PID, bạn có thể nhanh chóng sử dụng công cụ này để tìm ID tiến trình và tiến trình có thể bị giết trong thời gian ngắn. Lệnh pidof không cung cấp nhiều tùy chọn và chúng tôi đã thảo luận về hầu hết các tùy chọn đó tại đây. Để biết thêm thông tin, hãy truy cập trang hướng dẫn của công cụ.
 
Back
Bên trên