Đầu ra lệnh ps của Linux có thể được lọc bởi lệnh AND của người dùng không?


8

Tôi cần pid cho một quá trình cho chủ sở hữu của nó và lệnh của nó. Tôi có thể lọc một quy trình cho mỗi người dùng bằng "ps -u xxx" và lệnh của nó bằng "ps -C yyy", nhưng khi tôi thử "ps -u xxx -C yyy", chúng được kết hợp bằng logic OR. Tôi cần VÀ logic. Làm thế nào tôi có thể thực hiện điều này?

Câu trả lời:


11

Sử dụng pgrep?

pgrep -U xxx yyy

nó chỉ trả về pid (hoặc pids, nếu có nhiều hơn một quy trình khớp).



2

Bạn sử dụng commđể tìm các PID phổ biến cho cả hai điều kiện:

ps -u xxx | sort > /tmp/ps-uxxx
ps -C yyy | sort > /tmp/ps-Cyyy
comm -1 -2 /tmp/ps-uxxx /tmp/ps-Cyyy

Sử dụng bash, bạn có thể sử dụng thay thế quy trình để tránh sự cần thiết của các tệp tạm thời:

comm -1 -2 <(ps -u xxx | sort) <(ps -C yyy | sort)

Công trình, cảm ơn bạn rất nhiều. ... Nhưng không có cách nào dễ dàng hơn (không sử dụng pgrep, vì điều này không có sẵn trong ngữ cảnh của tôi)?
guettli

Điều gì không dễ dàng về điều này?
GargantuChet

Tôi biết những gì a commlàm. Nhưng tôi chỉ sử dụng nó một lần một năm. Nó không trực quan cho tôi. Tôi đoán tất cả những người sử dụng nó hàng ngày thấy điều này khác nhau. Đó là những lý do tốt tại sao pgrep tồn tại. Thật không may, pgrep không có sẵn trong ngữ cảnh của tôi .... Nhưng giờ nó đã được giải quyết. Nguyên nhân của vấn đề là (theo quan điểm của tôi), rằng tôi cần hỗ trợ hệ thống vận hành rất cũ mà không có pgrep.
guettli
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.