Posso usar o GNU ps no OS X?


18

Podemos instalar o GNU coreutils via brew. Mas não há psnos utils . Podemos usar o gnu psno OS X?

Eu gostaria de usar o GNU ps, pois tem mais opções e recursos.


você tentou correr psou ps -efem um terminal no OSX? funciona para mim no OSX 10.7.5 sem modificações, em duas máquinas diferentes. É em / bin / ps
jammypeach

Sim, eu sei, eu queria usar o GNU psporque ele tem mais opções e recursos.
Sanghyun Lee

ah OK, desculpe, eu não percebi isso a partir da pergunta, como indicado. Eu sugiro inclusive que em algum lugar, meter ninguém pensa o mesmo que eu - boa sorte em encontrar uma solução
jammypeach

Obrigado pela sugestão. Eu adicionei mais explicações sobre isso.
Sanghyun Lee

Respostas:


22

Não existe um programa ps portátil. O comando ps disponível no linux é, como outros já mencionaram, do pacote "procps". A razão pela qual isso não pode ser portado para o OSX é porque os kernels Linux e OSX não expõem essas informações da mesma maneira. O Linux usa um pseudo-sistema de arquivos em / proc, enquanto o OSX usa a função sysctl. Outros sistemas podem usar qualquer um dos mecanismos, mas fornecem dados em um formato diferente ou podem exigir que programas como ps leiam diretamente da memória do kernel.

Em geral, não existe um padrão de como as informações do processo estão disponíveis para programas como ps e top; portanto, o programa deve ser projetado para um sistema operacional específico. Se houver um recurso específico ausente no OSX ps, você terá que encontrar outro programa que possa fazê-lo, ou escrever você mesmo (consulte o manual sysctl, em particular KERN_PROC como ponto de partida) ou modifique o ps existente comando para adicionar o recurso.

Como alternativa, se você conseguir o que precisa analisando a saída do próprio comando ps, poderá escrever um programa portátil - a saída com a -oopção é razoavelmente confiável entre plataformas, principalmente se você se referir ao padrão UNIX para o nomes de colunas a serem usados.


O /procsistema de arquivos é o único método que o kernel do Linux fornece para obter uma lista de processos ou também há chamadas de sistema separadas que fornecem essas informações?
Tanner Swett

1
@TannerSwett Acho que não. Antes da implementação do / proc, o comando ps no linux funcionava lendo / dev / kmem e / dev / swap.
Random832

9

Não - uma vez que não existe. Quanto ao porquê não existe embutido psno GNU coreutilspacote, consulte esta resposta nos fóruns Unix e Linux.

A melhor fórmula alternativa disponível via Homebrew é psgrep:

O psgrep é um pequeno script de shell do Bash que pesquisa a lista de processos (obtida por ps (1) ) usando o incrível utilitário grep (1) por seu poder.

Dito isto, você ainda pode psgrepse comportar como o OS X psfaria. Por exemplo:

   OPTIONS
   -a     Search the process list using BSD's "ps aux" format. This option
          includes all users' processes in the search.

   -b     Search the process list using BSD's "ps  ux"  format  (default).
          This option only includes the running user's processes.

pgreptambém está disponível via brew, que é sintaticamente mais próxima ps, mas menos eficiente que psgrep:

O psgrep (1) é mais útil que o pgrep (1), pois não apenas pode pesquisar na lista de processos e retornar um PID, mas também fornecer informações mais úteis, como UID, GID, uso de memória / CPU, gentileza e qualquer outra coisa suportada pelo ps.


Toda ênfase é minha.


2
pgrepfaz parte de versões recentes do OS X também
nohillside

@patrix agh! ponto positivo, confirmado:type -a pgrep pgrep is /usr/local/bin/pgrep pgrep is /usr/bin/pgrep
njboot

Apenas como um aparte, como mencionado aqui , o proctoolspacote do MacPorts ou Homebrew fornece pgrepe pkillé o que eu pessoalmente procurava quando apareci aqui.
TheDudeAbides

3

psnão faz parte dos coreutils do GNU, de acordo com a Wikpedia . A versão que vem com minha distribuição Linux parece ser de procps , mas parece que não há fórmula para isso no homebrew. Existem fórmulas para as pstreequais você pode fornecer excelentes visualizações de árvore e também htopé outro bom visualizador de processos.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.