Leo, sau khi xem xét vấn đề này trong khoảng một tuần, tôi nghĩ rằng cách tiếp cận của Jhurtado có lẽ là cách tiếp cận "tốt nhất" mà chúng tôi có thể quản lý trong Java ngay bây giờ. "tốt nhất" là trong dấu ngoặc kép bởi vì nó có tác dụng phụ rất khó chịu về cơ bản là một "đoán" ở những gì con PID của bạn.
Nếu ứng dụng Java của bạn đang sinh ra quy trình gốc nhanh chóng trong hệ thống tải cao, KHÔNG bảo đảm rằng PID bạn lấy trong tính toán khác là PID của Quy trình do Chủ đề hiện tại hoặc PID của quá trình bạn chọn thậm chí được sinh ra bởi ứng dụng của chúng tôi (có thể hệ thống máy chủ đang chạy quá trình đó). Điều đó đang được nói, nếu bạn không sinh sản hàng chục quá trình hoặc quá trình sinh sản bạn đang sinh sản thực sự độc đáo (một số tùy chỉnh bạn gửi với ứng dụng của bạn) thì phương pháp này hoạt động tốt trong trường hợp PID của quá trình bản địa bạn đang tìm kiếm là cái bạn muốn.
Trên cửa sổ, bạn có thể sử dụng 'tasklist' vì Jhurtado đã chỉ ra để có danh sách đầy đủ các PID và bộ lọc cho bộ lọc bạn muốn (sử dụng bộ lọc/FI không hoạt động).
Trên mọi hệ thống * nix, bạn có thể sử dụng "ps ax | grep" trong đó NAME là một số tên quá trình như 'nginx' hoặc 'httpd' mà bạn muốn lọc để lấy danh sách của mình.
Ngoài ra, nếu bạn cần phải giết quá trình đi lạc (ví dụ, trên lối ra VM) trên * nix nhiên bạn có thể sử dụng "kill -9" và trên Windows, thú vị đủ, bạn có thể sử dụng 'taskkill '.
Rất tiếc, tối ưu không may.
Nguồn
2011-08-16 01:54:29
Tôi nghĩ rằng điều này sẽ cung cấp cho pid của quá trình JVM ... không phải là quá trình sinh ra bởi Java mà tôi tin là câu hỏi được đặt ra. – splashout
Tôi nghĩ bạn cần đọc kỹ hơn một chút. Nó sinh ra một quá trình mà chỉ có công việc là để lặp lại PID của riêng nó đến stdout của nó mà chính nó là đường ống đến bộ mô tả tệp stdin liên kết với JVM. – nsfyn55
Vectơ là kiểu cũ và được đồng bộ hóa - không cần sử dụng loại bộ sưu tập đó - hãy thử sử dụng ArrayList thay thế. Chỉ cần nói. – user924272