Có cách nào để biết, tại một thời gian thực, chủ đề nào được mở và ứng dụng nào đã mở chúng?Làm thế nào để liệt kê các chủ đề được mở bởi mọi ứng dụng trong Linux?
Trả lời
Bạn có thể tìm trong /proc/<PID>/task/
(trong đó <PID>
là một ID quá trình) sẽ có một số thư mục con, mỗi tên có cùng tên chuỗi của một trong các chủ đề trong tác vụ đó. Lưu ý rằng đây chỉ là loại thời gian thực mặc dù - trừ khi bạn "đóng băng" toàn bộ hệ thống trong suốt thời gian, thông tin bạn nhận được luôn có thể cũ, bởi vì một quá trình có thể tạo hoặc hủy các chủ đề thậm chí khi bạn đang xem dữ liệu.
Tôi đoán ps -L
nên thực hiện thủ thuật.
Đây là ps
.
Không chắc chắn nếu bạn hỏi cách thực hiện chương trình đó, nhưng trong trường hợp này, vì ps
là nguồn mở nên bạn có thể xem các nguồn.
yes programmaticaly –
Không chắc chắn về ngôn ngữ tôi sẽ triển khai. –
Tôi chắc chắn rằng bất kỳ ngôn ngữ nào bạn thực hiện sẽ có khả năng gọi 'ps'. – corsiKa
Trong các chủ đề Linux hiện đại, rất giống các quy trình. Mỗi luồng có một định danh LWP ("quá trình trọng lượng ánh sáng"), được thực hiện bên trong như PID. Tuy nhiên, nếu như "quá trình trọng lượng nhẹ" (tức là thread) được truy vấn cho một PID, hệ thống sẽ sinh ra PID của quá trình sinh ra luồng (thay vì LWP). Cũng lưu ý rằng nếu quá trình chỉ có một luồng, thì LWP sẽ bằng với PID của nó.
ps
có khả năng xử lý chuỗi với -L
công cụ sửa đổi, như ereOn được mô tả trong số answer của mình. Nhưng tôi nên lưu ý rằng ps
không chỉ dành cho yêu cầu thủ công. Nó có khả năng in đầu ra theo cách dễ dàng phân tích cú pháp bằng chương trình khác.
Lệnh sau sẽ in LWPs (-o lwp=
) và PID (-o pid=
) của tất cả (-A
) chủ đề (-L
) trong hệ thống. Mỗi chuỗi đại diện cho một luồng, cột thứ hai là quá trình sinh ra nó:
$ ps -A -L -o lwp= -o pid=
...
27747 27747
27749 27749
27750 27750
27751 27750
27752 27750
27755 27750
27756 27750
27772 27772
27858 27858
30457 30457
30886 30886
Khá dễ dàng để phân tích cú pháp với C hoặc C++, phải không? Để thực sự đọc điều này từ chương trình của bạn, bạn có thể sử dụng popen
hoặc một trong số C++ equivalents của nó.
Lưu ý rằng việc sử dụng ps
không chỉ dễ dàng hơn việc đọc /proc
. Nó cũng an toàn hơn nhiều so với việc phân tích cú pháp thủ công hệ thống tệp /proc
. ps
là lệnh POSIX *, đảm bảo hoạt động; nó sử dụng /proc
trong Linux, nhưng đó là chi tiết nội bộ. Khi thay đổi cơ sở hạ tầng cơ bản, ps
sẽ được viết lại và sẽ tiếp tục hoạt động, trong khi mã của bạn, nếu được viết dựa trên /proc
, sẽ bị hỏng.
* Thành thật mà nói, POSIX không chỉ định công tắc -L
. Nhưng trong bất kỳ Linux, có GNU toolchain, nó sẽ có sẵn.
- 1. Làm thế nào để liệt kê tất cả các hoạt động được ứng dụng tiếp xúc?
- 2. Làm cách nào để liệt kê/liệt kê tất cả các ứng dụng đã cài đặt trong Windows XP?
- 3. Làm thế nào để liệt kê các tệp được cài đặt bởi một Trình cài đặt Windows đã cho?
- 4. Làm thế nào để liệt kê các kết nối đang hoạt động/mở trong Oracle?
- 5. Làm cách nào để liệt kê các đường ống được sử dụng bởi quy trình có lệnh bash
- 6. Làm thế nào để liệt kê các thư mục con không trống trên Linux?
- 7. Không máy chủ được liệt kê trong TFS BuildNotification.exe
- 8. Liệt kê các nhóm ứng dụng trong IIS
- 9. Cách liệt kê các thư mục trống trong linux
- 10. Unix: Làm thế nào để xóa các tập tin được liệt kê trong một tập tin
- 11. Mở rộng các kiểu liệt kê trong F #
- 12. Làm thế nào để liệt kê các tập tin được phiên bản trong git?
- 13. Làm cách nào để liệt kê một tên tệp trên mỗi dòng đầu ra trong Linux?
- 14. Applescript - liệt kê tất cả các ứng dụng đang chạy
- 15. Làm thế nào để liệt kê các assembly trong AggregateCatalog hoặc DirectoryCatalog trong MEF?
- 16. Java Enums: Liệt kê các giá trị được liệt kê từ một Class <? mở rộng Enum>
- 17. Chủ đề gốc trong ứng dụng .Net
- 18. Windows: Liệt kê và khởi chạy các ứng dụng liên quan đến phần mở rộng
- 19. liệt kê các hội đồng trong GAC
- 20. Liệt kê các ứng dụng web được triển khai trong Apache Tomcat
- 21. Làm thế nào để đếm số lượng các chủ đề đồng thời trong ứng dụng .NET?
- 22. Làm cách nào để tạo một bảng liệt kê các màu trong ứng dụng biểu mẫu cửa sổ?
- 23. Làm thế nào để lập trình liệt kê tất cả các thuộc tính được xác định?
- 24. Ẩn các loại được liệt kê trong Assembly.GetTypes in .net
- 25. Liệt kê tất cả các chủ đề từ một tệp CHM
- 26. Làm thế nào để AppDomain.Unload() hủy bỏ các chủ đề?
- 27. Làm thế nào để liệt kê các container trong kho lưu trữ màu xanh?
- 28. Làm thế nào để liệt kê các tập tin trong một zip trong PowerShell?
- 29. Làm cách nào để biết ứng dụng nào được mở bởi ứng dụng bất kỳ lúc nào?
- 30. ứng dụng không được hiển thị trong ứng dụng gần đây liệt kê
Hệ điều hành nào? – Gianni
Ubuntu thường có nghĩa là Linux :) –
@Nikolai xấu của tôi, tôi hoàn toàn đọc sai các thẻ, sry. – Gianni