Pergunta

Como faço para matar a última tarefa fundo gerou no linux?

Exemplo:

doSomething
doAnotherThing
doB &
doC
doD
#kill doB
????
Foi útil?

Solução

Há uma variável especial para isso em bash:

kill $!

$! Expande para o PID do último processo executado em segundo plano.

Outras dicas

Você pode matar pelo número do trabalho. Quando você coloca uma tarefa em segundo plano que você vai ver algo como:

$ ./script &
[1] 35341

Isso [1] é o número de empregos e pode ser referenciado como:

$ kill %1
$ kill %%  # Most recent background job

Para ver uma lista de números de trabalho usar o comando jobs. Mais de man bash:

Há uma série de maneiras para se referir a um emprego no shell. O % personagem introduz um nome de trabalho. número do trabalho n pode ser referido como %n. Um trabalho também pode ser referido usando um prefixo do nome usado para iniciá-lo, ou usar um substring que aparece em sua linha de comando. Por exemplo, %ce refere-se a um trabalho ce parou. Se um prefixo corresponda mais de um emprego, o bash relata um erro. Usando %?ce, por outro lado, refere-se a qualquer trabalho contendo o ce corda em sua linha de comando. Se o substring partidas mais de um emprego, o bash relata um erro. O %% símbolos e %+ referem-se a noção do shell do trabalho atual, que é o último trabalho parado enquanto ela estava em primeiro plano ou iniciado em segundo plano. O trabalho anterior pode ser referenciados usando %-. Na saída referentes a empregos (por exemplo, a saída do comando postos de trabalho), o trabalho atual é sempre sinalizado com um +, e o trabalho anterior com um -. Um único % (sem especificação de trabalho que acompanha) também se refere à trabalho atual.

O comando a seguir dá-lhe uma lista de todos os processos em segundo plano na sua sessão, juntamente com o pid. Você pode usá-lo para matar o processo.

jobs -l

Exemplo de utilização:

$ sleep 300 &
$ jobs -l
[1]+ 31139 Running                 sleep 300 &
$ kill 31139

Isso deve matar todos os processos em segundo plano:

jobs -p | xargs kill -9
skill doB

skill é uma versão do comando kill que lhe permite selecionar um ou vários processos com base em um determinado critério.

Você precisa de seu pid ... use "ps -A" para encontrá-lo.

Este é um fora de resposta assunto, mas, para aqueles que estão interessados, ele talvez valioso.

Como em resposta de @ John Kugelman,% está relacionada com a especificação de trabalho. como encontrar de forma eficiente que? usar menos do & comando de padrão , parece uso homem menos pager (não que certeza), no tipo man bash &%, em seguida, digite Enter só irá mostrar as linhas que contenham '%', para reshow tudo, tipo &. em seguida, Enter.

Basta usar o comando killall:

killall taskname

Para obter mais informações e opções mais avançadas, tipo "homem killall".

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top