Existe um módulo ou classe Ruby que dá informações sobre um processo em execução no momento que não é o processo atual? Por exemplo, se eu tiver pid 1234, eu gostaria de obter informações sobre o usuário do processo, hora, etc. Eu poderia obter essas informações usando shell out para ps
, mas eu preferiria obter as informações do Ruby. Por exemplo, algo como este código inventado:
require 'process/info'
process = ProcessInfo.new(1234)
puts process.pid
puts process.user
Qualquer ajuda é apreciada.
Sim, você pode conseguir isso usando Ruby puro lendo do sistema de arquivos proc, que está disponível em sistemas Linux. Aqui está um exemplo de como você pode obter informações sobre um processo pelo seu PID:
Este script lê as informações do processo do sistema de arquivos proc:
uid
é obtido a partir do status do arquivo.cmdline
é lido docmdline
arquivo.starttime
é lido dostat
arquivo.Note que o
starttime
valor está em tiques de clock desde o tempo de inicialização. Você pode precisar convertê-lo para um formato mais legível por humanos, se necessário.saída:
Você pode usar a gem sys-proctable (que suporta múltiplos sistemas operacionais):