Eu li que o ps
comando pode receber sinalizadores em dois formatos:
- O formato Unix no qual você deve preceder os sinalizadores com um travessão.
- O formato BSD no qual você não deve preceder os sinalizadores com um travessão.
Agora os mesmos sinalizadores podem ser usados com ambos os formatos, por exemplo, os seguintes comandos significam as mesmas coisas:
ps -x
ps x
Ou o formato Unix possui seu próprio conjunto de sinalizadores, enquanto o formato BSD possui um conjunto de sinalizadores totalmente diferente?
Responder1
Opágina de manualresponde sua pergunta:
Opções de diferentes tipos podem ser misturadas livremente, mas podem surgir conflitos. Existem algumas opções sinônimas, que são funcionalmente idênticas, devido aos diversos padrões e
ps
implementações com as quaisps
é compatível.Observe que
ps -aux
é distinto deps aux
. Os padrões POSIX e UNIX exigem aps -aux
impressão de todos os processos pertencentes a um usuário denominado "x", bem como a impressão de todos os processos que seriam selecionados pela-a
opção. Se o usuário chamado "x" não existir, este ps poderá interpretar o comando comops aux
alternativa e imprimir um aviso. Esse comportamento tem como objetivo auxiliar na transição de scripts e hábitos antigos. É frágil, sujeito a alterações e, portanto, não deve ser confiável.
As bandeiras são diferentes, mas podem ser combinadas. Normalmente você escolheria um,por exemploou para ver detalhes de todos os processos, não uma mistura ps aux
.ps -ef
A única x
flag é a BSD, então ps x
e ps -x
produz o mesmo resultado; mas isso não funciona para sinalizadores definidos em ambas as variantes.
Tudo isso é específico paraprocps
eprocps-ng
. A equivalência de ps x
e ps -x
é o resultado de um estágio de análise de “segunda chance” que é invocado se uma primeira passagem não analisa completamente todos os argumentos; isso não está documentado na página de manual, mas é mencionado emo HACKING
arquivo no código fonte:
A menos que a personalidade force a análise do BSD, parser.c tenta analisar a linha de comando como uma bagunça mista de BSD+SysV+Gnu. Em caso de falha, a análise do BSD é tentada. Se a análise do BSD falhardepoisFoi tentada a análise do SysV, a mensagem de erro vem da análise do SysV original.