it-swarm-vi.com

Làm thế nào tôi có thể thấy những gì quá trình đang chạy?

Tôi sử dụng Ubuntu Server 10.10 và tôi muốn xem các quy trình đang chạy. Tôi biết rằng PostgreSQL đang chạy trên máy của tôi nhưng tôi không thể thấy nó bằng các lệnh top hoặc ps, vì vậy tôi cho rằng chúng không hiển thị tất cả các quy trình đang chạy. Có một lệnh khác sẽ hiển thị tất cả các quy trình đang chạy hay có bất kỳ tham số nào khác tôi có thể sử dụng với top hoặc ps cho việc này không?

22
Jonas

Từ trang ps man:

-e Chọn tất cả các quy trình. Đồng nhất với -A.

Do đó, ps -e sẽ hiển thị tất cả các quy trình. Các tùy chọn phổ biến cho "cho tôi mọi thứ" là ps -ely hoặc là ps aux, cái sau là kiểu BSD. Thông thường, mọi người sau đó chuyển đầu ra này thành grep để tìm kiếm một quy trình, như trong câu trả lời của xenoterracide. Để tránh cũng nhìn thấy grep trong đầu ra, bạn sẽ thường thấy một cái gì đó như:

 ps -ef | grep [f]oo

trong đó foo là tên quá trình bạn đang tìm kiếm.

Tuy nhiên, nếu bạn đang tìm kiếm một quy trình cụ thể, tôi khuyên bạn nên sử dụng lệnh pgrep nếu nó khả dụng. Tôi tin rằng nó có sẵn trên Ubuntu Server. Sử dụng pgrep có nghĩa là bạn tránh được tình trạng chủng tộc được đề cập ở trên. Nó cũng cung cấp một số tính năng khác sẽ đòi hỏi thủ thuật ngày càng phức tạp grep để nhân rộng. Cú pháp rất đơn giản:

pgrep foo

trong đó foo là quá trình mà bạn đang tìm kiếm. Theo mặc định, nó sẽ chỉ xuất ra ID tiến trình (PID) của quy trình, nếu nó tìm thấy. Xem man pgrep cho các tùy chọn đầu ra khác. Tôi thấy trang sau rất hữu ích:

http://mywiki.wooledge.org/ProcessQuản lý

26
Steven D

bạn đã thử ps aux | grep postgres? nó thực sự sẽ hiển thị nếu postgres đang chạy. Nếu nó không ... làm sao bạn biết postgres đang chạy?

(lưu ý: đó là một quan niệm sai lầm phổ biến đó là ps -aux nhưng điều đó không đúng)

3
xenoterracide