Eu tenho usado /proc/self
por um longo tempo para ler informações relacionadas ao processo, como /proc/self/maps
etc.
No entanto, em algumas variantes do UNIX, como o macOS, o sistema de procfs
arquivos não é implementado; mas como este link indica, deve ser possível obter informações semelhantes usando sysctl
.
Lendo a saída de sysctl -a
, acho que as informações não estão diretamente associadas a nenhum processo específico, mas estão relacionadas ao sistema ou kernel.
Então, como posso usar sysctl
para ler as informações, normalmente presentes nas /proc/self
distribuições Linux, em variantes do UNIX como o macOS?
Eu quero, por exemplo, entrar /proc/self/maps
no macOS.
Sua observação de que sysctl contém predominantemente parâmetros de todo o sistema é adequada. Também segue um pouco do nome
sysctl
(que sugere SYStem ConTroL) e da descrição da página man de "sysctl - get or set kernel state
."Alguns sistemas BSD oferecem
procfs
suporte opcional ao sistema de arquivos que pode ser montado em/proc
, como o FreeBSD:Isso fornece algumas das funcionalidades, mas talvez seja usado com mais frequência para fins de compatibilidade ao executar binários do Linux no modo de emulação, em vez de consultas definitivas sobre as estatísticas de tempo de execução de processos BSD nativos específicos. Infelizmente, o OS X não suporta
procfs
sistemas de arquivos, que eu saiba.E, de maneira mais geral, os sistemas BSD não usam
/proc
, portanto, a resposta do que usar para substituir uma/proc
consulta baseada em particular varia dependendo de qual é a consulta específica. Dada a edição recente do seu post, você pode achar este comando útil para exibir o uso de memória para um processo específico: