Podemos instalar o GNU coreutils via brew
. Mas não há ps
nos utils . Podemos usar o gnu ps
no OS X?
Eu gostaria de usar o GNU ps
, pois tem mais opções e recursos.
ps
porque ele tem mais opções e recursos.
Podemos instalar o GNU coreutils via brew
. Mas não há ps
nos utils . Podemos usar o gnu ps
no OS X?
Eu gostaria de usar o GNU ps
, pois tem mais opções e recursos.
ps
porque ele tem mais opções e recursos.
Respostas:
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 -o
opção é razoavelmente confiável entre plataformas, principalmente se você se referir ao padrão UNIX para o nomes de colunas a serem usados.
/proc
sistema 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?
Não - uma vez que não existe. Quanto ao porquê não existe embutido ps
no GNU coreutils
pacote, 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 psgrep
se comportar como o OS X ps
faria. 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.
pgrep
també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.
pgrep
faz parte de versões recentes do OS X também
type -a pgrep
pgrep is /usr/local/bin/pgrep
pgrep is /usr/bin/pgrep
proctools
pacote do MacPorts ou Homebrew fornece pgrep
e pkill
é o que eu pessoalmente procurava quando apareci aqui.
ps
nã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 pstree
quais você pode fornecer excelentes visualizações de árvore e também htop
é outro bom visualizador de processos.
ps
oups -ef
em um terminal no OSX? funciona para mim no OSX 10.7.5 sem modificações, em duas máquinas diferentes. É em / bin / ps