linux: mata tarea de fondo
-
06-07-2019 - |
Pregunta
¿Cómo elimino la última tarea en segundo plano generada en Linux?
Ejemplo:
doSomething
doAnotherThing
doB &
doC
doD
#kill doB
????
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 trabajon
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 dece
. 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 cadenace
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 " ;.