Tôi đang làm việc với việc giám sát ứng dụng Erlang và tôi hiện đang cố gắng xác định thời gian một PID cụ thể đang chạy. Dấu thời gian tuyệt đối hoặc thời gian sẽ làm việc cho tôi, nhưng tôi không thấy một trong các bit dữ liệu đó trong process_info hoặc thông qua mô-đun sys. Có cách nào để có được thông tin này từ bên trong máy ảo Erlang không?Có xóa dữ liệu khi quá trình bắt đầu không?
Tôi có thể nhận được thời gian bắt đầu của máy ảo tổng thể từ lệnh ps, nhưng điều đó không có bất kỳ khả năng hiển thị nào của các quy trình Erlang riêng lẻ.
Edit:
tôi đã nhận thấy rằng khi tai nạn VM, erl_crash.dump chứa một dấu thời gian bắt đầu cho mỗi quá trình, vì vậy tôi biết nó ở trong đó!
Cách khác (và có thể nói rõ ràng): Bạn có thể duy trì ngày bắt đầu trong trạng thái tiến trình (trong 'gen_server: init') và trả về sự khác biệt với' erlang: now' khi được hỏi. –
Thứ hai, lưu rằng bạn nên sử dụng 'os: dấu thời gian/0' thay vì' erlang: now/0'. 'now/0' tiếc là cần phải có được một khóa toàn cầu để đảm bảo rằng nó trở lại là đơn điệu tăng và độc đáo. – troutwine
Tôi rất muốn làm điều đó, nhưng nó không phải là ứng dụng của tôi, tôi chỉ giám sát nó, vì vậy tôi không thể thực hiện thay đổi trong bản thân ứng dụng. Tôi bắt đầu một máy ảo thứ hai và gửi lệnh qua rpc: call. – Joe