Pregunta

¿Cómo elimino la última tarea en segundo plano generada en Linux?

Ejemplo:

doSomething
doAnotherThing
doB &
doC
doD
#kill doB
????
¿Fue útil?

Solución

Hay una variable especial para esto en bash:

kill $!

$! se expande al PID del último proceso ejecutado en segundo plano.

Otros consejos

Puedes matar por número de trabajo. Cuando pones una tarea en segundo plano, verás algo como:

$ ./script &
[1] 35341

Ese [1] es el número de trabajo y puede ser referenciado como:

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

Para ver una lista de números de trabajo, use el comando jobs . Más de man bash :

  

Hay varias formas de referirse a un trabajo en el shell. El carácter % introduce un nombre de trabajo. El número de trabajo n puede ser          referido como % n . También se puede hacer referencia a un trabajo utilizando un prefijo del nombre utilizado para iniciarlo, o utilizando una subcadena que          Aparece en su línea de comando. Por ejemplo, % ce se refiere a un trabajo detenido de ce . Si un prefijo coincide con más de un trabajo, bash          reporta un error El uso de %? Ce , por otro lado, se refiere a cualquier trabajo que contenga la cadena ce en su línea de comando. Si el          La subcadena coincide con más de un trabajo, bash informa de un error. Los símbolos %% y % + se refieren a la noción de shell del trabajo actual, que es el último trabajo detenido mientras estaba en primer plano o se inició en segundo plano. El trabajo anterior puede          se referenciará utilizando % - . En la salida correspondiente a trabajos (por ejemplo, la salida del comando de trabajos), el trabajo actual siempre es          marcado con un + , y el trabajo anterior con un - . Un solo % (sin la especificación del trabajo que lo acompaña) también se refiere a la          trabajo actual.

El siguiente comando le da una lista de todos los procesos en segundo plano en su sesión, junto con el pid. Luego puedes usarlo para detener el proceso.

jobs -l

Ejemplo de uso:

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

Esto debería eliminar todos los procesos en segundo plano:

jobs -p | xargs kill -9
skill doB

skill es una versión del comando kill que te permite seleccionar uno o varios procesos según un criterio dado.

Necesitas su pid ... usa " ps -A " para encontrarlo.

esta es una respuesta fuera de tema, pero, para aquellos que estén interesados, quizás sea valiosa.

Como en la respuesta de @John Kugelman,% está relacionado con la especificación del trabajo. ¿Cómo encontrar eso de manera eficiente? use el comando & amp; patrón de less , parece que el hombre usa menos buscapersonas (no estoy seguro), en el tipo de comando de hombre y & amp;% y luego en Enter solo se mostrarán las líneas que contienen '%', para volver a mostrar todo, escriba & amp ;. a continuación, ingrese.

Solo usa el comando killall:

nombre de tarea killall

para obtener más información y opciones más avanzadas, escriba " man killall " ;.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top