Eu corro comando ps -A | grep <application_name>
e obtendo lista de processos como este:
19440 ? 00:00:11 <application_name>
21630 ? 00:00:00 <application_name>
22694 ? 00:00:00 <application_name>
Eu quero matar todo o processo a partir da lista: 19440
, 21630
, 22694
.
Eu tentei, ps -A | grep <application_name> | xargs kill -9 $1
mas funciona com erros.
kill: illegal pid ?
kill: illegal pid 00:00:00
kill: illegal pid <application_name>
Como posso fazer isso normalmente?
nano /usr/bin/ffmpegk
,. . . .ps -A | grep ffmpeg | awk '{print $1}' | xargs kill -9 $1
. . . .chmod a+rx /usr/bin/ffmpegk
kill -9
se nenhum processo correspondergrep
, você deve usarawk
para corresponder ao nome:ps -A | awk "\$4 == \"$1\" { print \$1; }"
killall
pode fazer isso.fonte
killall --regexp "appl.*me"
Embora possa haver diferentes implementações de killall. Vejaman killall
.kill -9 pid
eu acho que @ ŁukaszD.Tulikowski é a melhor solução de trabalho especialmente para scripts bash.fonte
Minha abordagem é semelhante à @
Łukasz D. Tulikowski
's. Em vez de usargrep <application_name>
; Eu useigrep "[a]pplication_name"
, o que não corresponde à sua própria linha de comando do processo.A expressão entre colchetes faz parte da
grep
correspondência de padrão de classe de caracteres. (Referência) .Você pode usar
awk
para obter primeiro uma coluna deps
saída.Retornará a lista de PIDs
Adicionando mais tarde
kill -9 $1
você tem um comando que mata todos os PIDsfonte
grep
invés de usarawk
para fazer o teste mais corretamente?grep
corresponderá a nomes que incluem o destino como substring, por exemplo.