O que o |
símbolo significa em sudo ps -ef | grep processname
comando?
Alguém também pode explicar este comando? Eu usei esse comando apenas para obter o PID e matar esse processo, mas também vi sudo ps -ef | grep processname | grep -v grep
e tenho a impressão de que -v grep
é como matar o PID gerado anteriormente grep
. Se é assim, como funciona?
command-line
bash
process
Aamir
fonte
fonte
sudo
correrps -ef
. Também um truque comum para evitar o terceiro comando é colocar um caractere do nome do processo entre colchetes:ps -ef | grep [p]rocessname
ps -ef | grep '[p]rocessname'
grep [p]rocessname
, está dizendo ao shell para procurar um arquivo no diretório atual com o nomeprocessname
e substituir o padrão pelo nome do arquivo. Se nenhum arquivo nomeadoprocessname
existir, o shell poderá passar o padrão literalmente para grep. Mas isso depende das suas configurações. Então a sua versão vai quebrar se um arquivo nomeadoprocessname
existe ou se qualquer uma das seguintes opções do shell tiver sido habilitadofailglob
,nullglob
,nocaseglob
.Respostas:
Primeiro, ele executa
sudo ps -ef
e passa a saída para o segundo comando.O segundo comando filtra todas as linhas que contêm a palavra "processname".
ps -ef | grep processname | grep -v grep
lista todas as linhas que contêmprocessname
e não contêmgrep
.De acordo com
man grep
De acordo com
man ps
Você pode combinar parâmetros
-ef
significa o mesmo que-e -f
.Na verdade,
ps -ef | grep processname
liste todas as ocorrências do processo chamadoprocessname
.fonte
ps -ef
faz exatamente?| grep processName
em terminais também temos saída do grep que em si é um processo tão -v mata esta saídaÉ chamado
pipe
. Ele fornece a saída do primeiro comando como entrada para o segundo comando.No seu caso, significa:
O resultado de
sudo ps -ef
é alimentado como entrada degrep processname
sudo ps -ef
:Lista todos os processos em execução. Digite
man ps
o termo para obter mais.grep processname
Portanto, essa lista de processos é inserida no grep, que apenas procura o programa definido por
programname
.Exemplo
Digitando
sudo ps -ef | grep firefox
meu terminal retorna:fonte
-v grep
funciona ..grep -v
é usado. Para filtrar a última linha.grep -v
filtra as linhas OUT contendo padrão.Vou tentar responder com uma resposta prática direta:
O cano
|
permite que você faça coisas incríveis no shell! É o único operador que considero o mais útil e poderoso.que tal contar arquivos em um diretório? simples:
ls | wc -l
..redirecionar a saída dels
parawc
wit parâmetro-l
para linhasou contagem de linhas em um arquivo?
e se eu quiser procurar algo? 'grep' pode procurar por ocorrências de strings:
você apenas redireciona a saída do comando à esquerda do Pipe para o comando à direita do Pipe.
mais um nível: com que frequência algo ocorre em um arquivo?
você pode usar o | para quase tudo :)
fonte
grep -c "aRandomStringYouWantToSearchFor" "someFile"
;-)kill $(ps aux | awk '/someString/ { print $2}' | sed -n '1p')
não, porque não serviria ao propósito.Outras respostas já responderam à sua pergunta principal, mas eu gostaria de abordar isso também;
Em geral, matar um processo geralmente é um exagero e deixa os recursos alocados por um processo em um estado confuso; geralmente, você pode finalizá- lo;
Além disso, basta usar
pkill
para matar / encerrar um processo.pkill
suporta a especificação de um nome exato do processo ou de uma expressão regular:fonte
kill -9
menos que saiba especificamente que nenhum outro sinal funcionará. Veja também iki.fi/era/unix/award.html#killkill
faz. A especificação-9
é uma opção extra adicional e mais frequentemente desastrosa.kill
, pura e simplesmente. Qualquer terminologia à parte, sua resposta não deve aconselhar as pessoas a usar a-9
opção, a menos que você faça uma ressalva.