Hay muchas formas de hacerlo.
Método # 1 - ps
Puede usar el pscomando para encontrar la ID del proceso para este proceso y luego usar el PID para matar el proceso.
Ejemplo
$ ps -eaf | grep [w]get
saml 1713 1709 0 Dec10 pts/0 00:00:00 wget ...
$ kill 1713
Método # 2 - pgrep
También puede encontrar la identificación del proceso usando pgrep.
Ejemplo
$ pgrep wget
1234
$ kill 1234
Método # 3 - pkill
Si está seguro de que es lo único wgetque ha ejecutado, puede usar el comando pkillpara eliminar el trabajo por su nombre.
Ejemplo
$ pkill wget
Método # 4 - trabajos
Si está en el mismo shell desde donde ejecutó el trabajo que ahora está en segundo plano. Puede verificar si todavía se está ejecutando con el jobscomando y también eliminarlo por su número de trabajo.
Ejemplo
Mi trabajo falso, sleep.
$ sleep 100 &
[1] 4542
Encuentra su número de trabajo. NOTA: el número 4542 es la ID del proceso.
$ jobs
[1]+ Running sleep 100 &
$ kill %1
[1]+ Terminated sleep 100
Método # 5 - fg
Puede devolver un trabajo en segundo plano al primer plano con el fgcomando
Ejemplo
Trabajo falso, sleep.
$ sleep 100 &
[1] 4650
Obtenga el número del trabajo.
$ jobs
[1]+ Running sleep 100 &
Traiga el trabajo # 1 de nuevo al primer plano y luego use Ctrl+ C.
$ fg 1
sleep 100
^C
$
jobsno tieneoutputyfgEFS:-bash: fg: 1: no such job. Pero escribirfgfunciona bien y tambiénpkill wgetfunciona bien. perops -eaf|grep wgety luego lakill <process number>dosis no detiene el trabajo. ps: uso el tercer número como número de proceso .ps. El 3er # es la identificación del proceso del padre.ps -eaef| grep [w]get.pgrepen su lugar,pgrep wget.ps -eaf | grep [w]get. Las opciones están en lapspágina del manual.man ps.En bash puedes usar
fgpara poner el trabajo en primer plano y luego usar Ctrl+CO enumere el proceso en segundo plano con
jobsy luego haga(con 1 reemplazado por el número que
jobsle dio)fuente
Igualmente puede usar
kill $!para matar el trabajo en segundo plano más reciente.fuente
EDITAR: Una vez en primer plano, puede Ctrl+ C, o como @Zelda menciona, matar con el '% x' donde 'x' es el número de trabajo enviará la señal predeterminada (probablemente SIGTERM en el caso de Linux).
simplemente escriba
fgpara ponerlo en primer plano, si fue el último proceso que realizó en segundo plano (con '&').Si no fue el último, escriba:
jobsy busque el 'número de trabajo', representado en '[]'. Luego simplemente escriba:..donde '2' es el número de trabajo, por ejemplo:
fuente
La forma correcta es escribir y
jobsluego usar el número de trabajo para matarlo. Para usar el pid para matarlo, debes ponerlo en primer plano como se señala en la primera respuesta.Prueba esto
Si ejecuta trabajos justo después de matarlo, debería ver esto
fuente
Una cosa que no veo aquí, que he encontrado muy útil especialmente al probar comandos, es
pidof. Puede usarpidof [command]para encontrar la identificación de proceso de un proceso que se está ejecutando actualmente. Me gusta porque me permite encontrar rápidamente la identificación del comando que quiero, que generalmente es algo que acabo de invocar.Una vez que tenga el pid, simplemente puede matar el proceso. Permite crear scripts simples para matar un proceso solo si se está ejecutando actualmente.
fuente
Un ejemplo común es la
stressherramienta. Digamos que ejecutó lo siguiente:y cerró la ventana de la terminal. El proceso continuaría consumiendo sus recursos desde el fondo.
Lo suyo es lo que hago:
pgrepenumera los PID del proceso sometido y lo almacena en una variablexque luego utilizakill -9para terminarlo.fuente
en bash último proceso detenido (Ctrl-Z) matarás por:
o si quieres elegir, usa:
jobsentonces:
kill %Nme gusta
kill %2fuente