Obtendo o pid de um programa linha a linha

5

Eu posso encontrar o pid das instâncias do meu programa emitindo comandos como este:

pidof avconv

Que está me dando resultados

16616 16283 16279 16198 16175 16035 15073 14049 4922

Mas como posso produzir o mesmo resultado linha por linha, como:

16616 
16283 
16279 
16198 
16175 
16035 
15073 
14049 
4922
    
por fortune 31.03.2015 / 14:49

5 respostas

15

Você pode analisar a saída com sed , conforme sugerido por @Sobrique ou com tr :

pidof avconv | tr ' ' '\n'

Outra abordagem seria usar pgrep :

$ pgrep avconv16616 
16283 
16279 
16198 
16175 
16035 
15073 
14049 
    
por 31.03.2015 / 14:58
7

Você pode simplesmente começar assim ... em primeiro lugar ...

ps -C avconv -o pid=
    
por 31.03.2015 / 15:35
5

Você sempre pode usar sed para inserir alguns feeds de linha

pidof avconv | sed 's/ /\n/g'

embora talvez uma questão maior seja - por que você precisa deles em linhas separadas? Pode ser que haja uma resposta mais apropriada.

    
por 31.03.2015 / 14:51
3

Existem várias maneiras de fazer isso, dependendo da sua necessidade.

  1. Se você está fazendo isso em um script de shell

    for line in $(pidof avconv)
    do
      echo $line
    done
    
  2. Se você estiver procurando por um oneliner

    pidof avconv |perl -pne 's|\s+|\n|g' 
    
por 31.03.2015 / 16:35
-1

Tente também

ps ax | grep "program name, or part of it"

Você receberá a resposta certa, mas também uma entrada sem sentido como:

11424 pts/3    S+     0:00 grep --color=auto something

Usando awk para mostrar apenas os PIDs:

ps ax | grep "program name, or part of it"| awk '{print $1}'

Isso lhe dará os PIDs, mas também o PID da entrada de significados. Esta entrada é geralmente a última, então apenas deixe de fora.

    
por 31.03.2015 / 19:53

Tags