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.
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 thức hoạt động của công cụ này.
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
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.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22155%22%3E%3C/svg%3E
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.
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."
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
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.
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
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
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
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
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.