2013-09-29 39 views
12

Tôi đang sử dụng lệnh này để có được quá trình ID của lệnh khác:ps aux | grep trả pid cho bản thân quá

ps aux | grep 7000.conf | awk '{print $2}' 

này sẽ trở lại hai PID:

7731 
22125 

Tôi chỉ muốn là người đầu tiên. Thứ hai là PID cho grep trong lệnh trên. Cảm ơn trước cho bất kỳ ai biết làm thế nào để thay đổi lệnh trên để trả lại chỉ là pid đầu tiên.

p.s. mở cửa cho một lệnh mới mà làm điều tương tự

Trả lời

17

Trong trường hợp đặc biệt này, thoát khỏi . với những gì tôi cho rằng nó có nghĩa là để làm nên làm việc:

ps aux | grep '7000\.conf' | awk '{print $2}' 

Ngoài ra, loại trừ grep:

ps aux | grep 7000.conf | grep -v grep | awk '{print $2}' 
+0

Không dễ sử dụng hơn chỉ với 'ps aux | grep -v '7000.conf''. Không cần gấp đôi grep hay awk. -v chỉ cần "loại bỏ bản thân khỏi kết quả khi thực hiện grep". – erm3nda

+1

@ erm3nda: '-v' có nghĩa là" đảo ngược kết quả phù hợp ", vì vậy sẽ không tìm thấy thứ bạn đang tìm kiếm ở vị trí đầu tiên với' 7000.conf' - nó sẽ tìm mọi quá trình khác. 'awk' cũng là một phần của câu hỏi ban đầu và không liên quan đến việc loại bỏ' grep' (nó trích xuất pid từ hàng). Vì vậy, không. – Ryan

+0

Bạn nói đúng. cảm ơn bạn. – erm3nda

5

ps aux | grep "[7]000.conf" cũng sẽ hoạt động.

+0

Điều này thật tuyệt. Bạn có thể giải thích cách nó hoạt động? – DiegoSalazar

+1

Xem http://stackoverflow.com/a/9375940/2599522 để được giải thích;) – user2599522

Các vấn đề liên quan