Estou procurando uma única linha que retorne o pid de um processo em execução.
Atualmente tenho:
ps -A -o pid,cmd|grep xxx|head -n 1
E isso retorna o punho pid, command
. Eu preciso apenas do primeiro número da saída e ignore o resto. Suponho sed
ou awk
ajudaria aqui, mas minha experiência com eles é limitada.
Além disso, isso tem outro problema, ele retornará o pid do grep se o xxx não estiver em execução.
É realmente importante ter uma única linha, pois quero reutilizar a saída para fazer outra coisa, como matar esse processo.
Respostas:
Se você quiser apenas o pid do processo, poderá usá-lo,
pgrep
se disponível.pgrep <command>
retornará o pid do comando (ou lista de pids no caso de haver mais de uma instância do comando em execução; nesse caso, você poderá usarhead
ou outros comandos apropriados)Espero que isso ajude!
fonte
kill `pgrep xxx`
pkill
.Apenas mais um comando necessário; você deseja apenas o primeiro campo de uma linha de valores separados por espaço:
Bem dois. Eu adicionei outro grep para remover o próprio grep da saída.
fonte
Basta usar o pgrep, é muito mais direto
O exemplo acima seleciona o processo mais antigo com o nome exato
fonte
pkill
(com os mesmos argumentos) seria a escolha mais direta.pidof xxx
será suficiente no linuxfonte
Rodando no Cygwin, não posso usar -A e -o, mas algo como isto:
fonte
você pode fazer algo como
então xxx deve ser o nome do processo e ele não capturará grep por causa da âncora ^
fonte