una - linux: matar a la tarea de fondo
terminar una tarea en linux (8)
¿Cómo elimino la última tarea de fondo generada en Linux?
Ejemplo:
doSomething
doAnotherThing
doB &
doC
doD
#kill doB
????
El siguiente comando le proporciona una lista de todos los procesos en segundo plano en su sesión, junto con el pid. Luego puede usarlo para matar el proceso.
jobs -l
Ejemplo de uso:
$ sleep 300 &
$ jobs -l
[1]+ 31139 Running sleep 300 &
$ kill 31139
Esto debería matar a todos los procesos de fondo:
jobs -p | xargs kill -9
Hay una variable especial para esto en bash:
kill $!
ps se expande al PID del último proceso ejecutado en segundo plano.
Necesitas su pid ... usa "ps -A" para encontrarlo.
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 se puede referenciar 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 personaje
%
introduce un nombre de trabajo. El número de trabajon
puede denominarse%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
refiere a un trabajoce
parado. Si un prefijo coincide con más de un trabajo, bash informa un error. Usar%?ce
, por otro lado, se refiere a cualquier trabajo que contenga la cadenace
en su línea de comando. Si la subcadena coincide con más de un trabajo, bash informa un error. Los símbolos%%
y%+
refieren a la noción del 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 referenciarse usando%-
. En la salida correspondiente a trabajos (por ejemplo, la salida del comando de trabajos), el trabajo actual siempre se marca con un+
y el trabajo anterior con un-
. Un solo%
(sin las especificaciones de trabajo que lo acompañan) también se refiere al trabajo actual.
Solo usa el comando killall:
nombre de tarea killall
para obtener más información y opciones más avanzadas, escriba "man killall".
esta es una respuesta fuera de tema, pero, para aquellos que están interesados, puede ser valiosa.
Como en la respuesta de @John Kugelman,% está relacionado con la especificación del trabajo. cómo encontrarlo de manera eficiente? use el comando less & pattern , parece que el hombre usa menos pager (no es seguro), en man bash type &% y luego escriba Enter solo mostrará las líneas que contengan ''%'', para volver a mostrar todo, escriba &. luego Entrar.
skill doB
skill
es una versión del comando kill que le permite seleccionar uno o múltiples procesos basados en un criterio dado.