
Qual é a diferença entre os processos listados por ps
e ps -A
?
Responder1
sem o -A
, ps imprimirá apenas os processos pertencentes à sessão atual. Pense nisso como “absolutamente tudo”. Por falar no assunto, -a
faz a mesma coisa, mas restringe-a ao proprietário da sessão (nome de usuário).
Responder2
O comando GNU ps
sofre de um caso grave de transtorno de personalidade múltipla. Portanto, não é de admirar que sua página de manual seja confusa. Talvez uma olhada nos manuais do BSD possa ajudar. Afinal, esta questãoémarcadounix.
A operação do BSD ps
é bastante simples quando se tem duas coisas em mente:
- Os processos são selecionados para exibição usando dois filtros básicos. Esses filtros sãosobrepor padrão e as opções de linha de comando os transformamdesligado. Simples e sem adornos
ps
é assim filtrado através de ambos. - A sintaxe BSD é antiga. Embora os BSDs modernos usem
getopt
a convenção de opções prefixadas por um sinal de menos, as opções e o comportamento relevantes aqui são praticamente os mesmos de 30 anos atrás.
Esse comportamento é este:
- A opção
-a
(historicamentea
)desligatoda a filtragem do "seletor".- As várias outras opções de linha de comando especificam seletores:
-U
seleções por UID,-t
controlando o nome do terminal,-p
seleções por ID de processo e assim por diante. Tudo isso é ignorado-a
. - Se nenhum seletor for fornecido explicitamente, oseletor padrãoé exibir apenas processos em execução com o mesmo UID efetivo do usuário que invocou o
ps
. Este seletor padrão é o filtro histórico que esta opção desativa.
- As várias outras opções de linha de comando especificam seletores:
- A opção
-x
(historicamentex
)desligaa restrição deps
exibir apenas processos que possuem um terminal de controle.
Historicamente, o BSD ps
não tinha A
opção. Mas os BSDs modernos implementam uma -A
opção, também utilizável como A
, para (um grau de) compatibilidade com a (posterior) Especificação Única UNIX. -A
é simplesmente o mesmo que usar ambos -a
e -x
: desativa ambas as restrições, deixando uma com todos os processos, sem filtro.
OpenBSD e NetBSD documentam a -A
opção, no caso do NetBSD explicitamente como -a -x
. O FreeBSD não, mas um comentário no código-fonte afirma que ele existe como uma opção de compatibilidade SUSv5 intencionalmente não documentada.