2012-05-24 37 views
8

nếu tôi khởi chạy tập lệnh bash khi còn nhỏ, tôi có thể chuyển pid của riêng nó cho cha mẹ bằng cách sử dụng $$.có cách nào để biết pid của một chương trình được khởi chạy không?

Có cách nào để tìm ra pid của một chương trình mà tôi khởi động từ một kịch bản trong nền như:

ping x.x.x.x & 

pid của ping đó là những gì?

(Tôi chỉ hy vọng tôi thể hiện bản thân một cách chính xác ... tiếng Anh của tôi không phải là tốt nhất)

PS. Tôi đang tìm kiếm một giải pháp đơn giản và sạch sẽ, tôi có thể tưởng tượng một cái gì đó như:

ping -t10000 -W10 x.x.x.x & 
then 
ps ax | grep 'ping -t10000 -W10 x.x.x.x'$ 

nhưng là quá phức tạp, cũng thậm chí mà tôi sử dụng công tắc để cá nhân hóa nó không được sạch sẽ, nó có thể bắt các quy trình khác trong hệ thống

+0

'pgrep', nếu có, tốt hơn' grep'ping 'ps'. –

Trả lời

17

Biến số $! có PID của quá trình nền cuối cùng mà bạn đã bắt đầu.

+0

CẢM ƠN BẠN! điều này giải quyết nó ... và (đỏ mặt) i dunno làm thế nào tôi bỏ lỡ rằng – THESorcerer

+1

@THESorcerer: Đừng quên đánh dấu câu trả lời là được chấp nhận. –

6

Sử dụng quyền này: $! ngay sau khi thực thi lệnh có PID bạn muốn. Nó có nghĩa là, mặc dù bạn cần phải sử dụng một dấu và (&) sau khi lệnh, để bắt đầu nó trong nền. Ví dụ:

my_command & CMDPID=$! 
echo "$CMDPID" 
Các vấn đề liên quan