Traduza flags do GNU ps para flags padrão

3

Estou usando o oh-my-zsh e seu ssh-agent plugin no OSX, mas ultimamente alguém do upstream decidiu usar ps x . Eu não tenho certeza do que isso faz, já que eu não usei uma userland GNU em algo próximo a uma década. O objetivo parece ser descobrir se ssh-agent já está em execução, por isso não sei por que os sinalizadores para ps são necessários. Alguém pode me ajudar a criar uma alternativa amigável para plataformas cruzadas?

ATUALIZAÇÃO: se você quiser dar uma olhada por si mesmo, aqui está a fonte do plugin ssh-agent

    
por Hank Gay 16.12.2013 / 16:34

1 resposta

1

No Linux, o principal efeito de ps x é incluir todos os processos em execução como o mesmo usuário. Por padrão, ps inclui apenas processos em execução no mesmo terminal. Em contraste, o padrão do BSD é incluir processos que possuam um terminal de controle, seja ele igual ou não. A opção BSD correspondente é -x . Além disso, ps x seleciona um formato de saída ligeiramente diferente. A sintaxe POSIX para corresponder aos mesmos processos é

ps -A -u "$USER"

Se você estiver analisando a saída de ps , certifique-se de usar o -o flag para controlar quais colunas serão impressas. Observe que os comandos da minha resposta não imprimem exatamente as mesmas colunas.

Para procurar um processo ssh-agent, você precisa passar algumas opções, já que o Linux e o BSD ocultam processos que não estão associados a nenhum terminal por padrão, e é comum que o ssh-agent não seja associado a nenhum terminal. um terminal.

if [ -z "$SSH_AGENT_PID" ]; then
  SSH_AGENT_PID=$(ps -A -u "$USER" -o comm= | grep ssh-agent | head -n 1)
fi
if [ -n "$SSH_AGENT_PID" ]; then
  …
    
por 17.12.2013 / 02:05