¿Cómo elimino procesos en Ubuntu?

149

¿Cómo elimino todos los procesos que se ejecutan en mi propia cuenta no root?

Tengo algunos procesos de smbd giratorios que causé desde mi máquina Windows y, por lo tanto, hice un telnet en el servidor Linux y quiero matar esos procesos de hilatura. No tengo autoridad para reiniciar servicios o reiniciar la máquina.

djangofan
fuente

Respuestas:

172

Para eliminar todos los procesos que tiene permiso para eliminar, simplemente ejecute el comando

kill -15 -1o kill -9 -1dependiendo del comportamiento deseado (uso man killpara detalles)

Para matar un proceso específico, por ejemplo, firefox, simplemente ejecute

pkill firefoxo killall firefoxdependiendo del comportamiento que desee: ¿Cuál es la diferencia entre 'killall' y 'pkill'?

Si desea ver qué procesos se están ejecutando, use el comando

ps -ef

Si desea buscar todos los procesos por usuario bob, esto podría ayudar

pgrep -l -u bob

o

ps -ef | grep bob
ste_kwr
fuente
44
Comenzaría y seguiría kill -15 -1adelante kill -9 -1si hay procesos obstinados y sé lo que estoy haciendo . Los procesos de eliminación aleatoria que pueden estar en el medio de una transacción de base de datos no es algo que uno deba hacer de manera tan informal como usted sugiere.
Simon Richter
Además, se nombra el proceso de Firefox firefox-bin.
Simon Richter
No, puede intentar ejecutar killall firefoxy killall firefox-binver qué funciona. Estoy de acuerdo con tu primer comentario.
ste_kwr
Gracias @ste_kwr, trabajó con sus instrucciones, después de luchar durante dos días ...
Java.beginner
La ventaja de no necesitar PID está en los trabajos cron. Usar nombres funciona de manera limpia.
SDsolar
56

Use sudo kill <pid>osudo killall <process-name>

Chris Wayne
fuente
3
No creo que esto sea relevante para esta pregunta, está utilizando sudo: el OP no tiene tales privilegios, como se menciona en la pregunta.
pl1nk
El OP no tiene privilegios, edite su respuesta o puede eliminarse o convertirse en un comentario como "no una respuesta".
ish
Si no tiene privilegios, solo tiene que matar <pid> o killall <process-name>. Lo acabo de usar en mi cuenta no root, no podría hacerlo si no fuera por esta respuesta. .
Shailyn Ortiz
20

Probemos algo más:

sudo apt-get install htop 

El topcomando es la forma tradicional de ver el uso de recursos de su sistema y ver los procesos que ocupan la mayoría de los recursos del sistema. Top muestra una lista de procesos, con los que usan más CPU en la parte superior.

htopmuestra la misma información con un diseño más fácil de entender. También le permite seleccionar procesos con las teclas de flecha y realizar acciones, como matarlos o cambiar su prioridad, con las Fteclas.

Fantomas
fuente
16

Puedes usar

ps -ax | grep application name 

Si está buscando el tipo de Firefox en la terminal como ps -ax | grep firefox, muestra la identificación del proceso de la aplicación correspondiente. Puede detener esa aplicación por killcomando si id de proceso = 1317,

kill -9 1317
Xman Classical
fuente
13

Me gustaría utilizar xkill. Ingrese xkillen una terminal y haga clic en la ventana, o ingrese xkilly la ID del proceso y se terminará.

Encontrado más información acerca de xkillen x.org.

Alvar
fuente
1
Úselo segundo en frecuencia después de pkill nd love it. +1
Sergiy Kolodyazhnyy
xkill no funciona en este caso ...
PythoNic
@PythoNic, ¿en qué caso es eso?
Alvar
1
Quiere matar un proceso que no es de ventana y que tampoco está relacionado con el servidor X, como me parece a mí ... (De todos modos, es una buena herramienta.)
PythoNic
9

Para intentar eliminar todos los procesos que posee un usuario username, ejecute:

pkill -U username
usuario129146
fuente
7

Rompería tu problema en 2 partes:

1) ¿Cómo encuentro los procesos iniciados por mí? Ejecuta esto:

ps -u `whoami`

Esto whoamies solo en caso de que no sepa el nombre de la cuenta que está utilizando, de lo contrario, simplemente escriba el nombre de la cuenta sin las comillas inversas.

Esto enumerará todos los procesos que su cuenta puede eliminar.

2) El pscomando enumerará el número de proceso, el TTY, el tiempo y la CMD. El ID del proceso es la primera columna. Usa ese número para matar el proceso. Tenga cuidado al matar el proceso. Puede romper algo si elimina el proceso incorrecto. Para matar un proceso, usará el killcomando, que envía una SEÑAL al proceso. La señal indica lo que debe hacer el proceso . Por ejemplo, enviar un mensaje -1al proceso le pedirá que vuelva a cargar el archivo de configuración; enviar un -2es equivalente a presionar Control + C en ese proceso; -9hará que el núcleo abandone el proceso, sin comunicarlo al proceso.

Suponiendo que ps -u whoamidevuelve algo como

  PID TTY          TIME CMD
 4333 pts/1    00:00:00 fish
 4335 ?        00:00:00 fishd
 4816 ?        00:00:00 intellij
 4868 ?        00:50:42 java
 4939 ?        00:00:19 fsnotifier64
 7667 ?        02:49:08 firefox
 7698 ?        00:00:00 unity-webapps-s

Y quería matar el firefoxproceso por su id de proceso, entonces haría:

kill -1 7667

Luego volvería a ejecutar el mismo pscomando y comprobaría si el proceso aún se estaba ejecutando. Si todavía se está ejecutando, entonces haga un

kill -2 7667

su forma de trabajo a -9.

Para eliminar todos los procesos iniciados por su cuenta, ingrese kill <level> -1. Igual que antes: trabaja hasta llegar -9.

Si conoce el nombre del proceso, simplemente puede ir killall <processname>, donde es lo que está tratando de matar. Por ejemplo: killall fish(pescado, en este sentido, es el amistoso interactivo SHell).

La documentación killallse puede encontrar aquí: http://manpages.ubuntu.com/manpages/hardy/man1/killall.1.html

Alexandre Santos
fuente
3

Con esta aplicación puedes ver listados de programas

instalar htop

sudo apt-get install htop

para ver el proceso y matar el proceso Puede instalarlo y simplemente eliminar

ingrese la descripción de la imagen aquí

Reza Bojnordi
fuente
2

... Todos los procesos en Linux responden a las señales. Las señales son una forma de os-nivel de decirle a los programas que terminen o modifiquen su comportamiento.

Cómo enviar señales de procesos por PID

La forma más común de pasar señales a un programa es con el comando kill.

Como es de esperar, la funcionalidad predeterminada de esta utilidad es intentar matar un proceso:

kill PID_of_target_process

Esto envía la señal TERM al proceso. La señal TERM indica al proceso que finalice. Esto permite que el programa realice operaciones de limpieza y salga sin problemas.

Si el programa se comporta mal y no sale cuando se le da la señal TERM, podemos escalar la señal pasando la señal KILL:

kill -KILL PID_of_target_process

Esta es una señal especial que no se envía al programa.

En cambio, se le da al kernel del sistema operativo, que cierra el proceso. Esto se utiliza para omitir programas que ignoran las señales que se les envían ...

jackal404258
fuente
2

Escribí un pequeño script que escribí para matar (en mi caso) Skype:

kill -s 9 `ps aux | grep skype | head -n 1 | cut -f4 -d" "`

Pero descubrí que tanto como eso funcionó, no funcionó al día siguiente porque el pid tenía una longitud diferente y la cantidad de espacios era diferente

Luego me encontré con este sitio e intenté

pgrep -l -u justin

que convenientemente genera procesos en el formato

[pid] [name]

Así que ajusté mi código en el script a esto:

kill -s 9 `pgrep -l -u justin | grep skype | cut -f1 -d" "`

Lo que esto hace es canalizar todos los procesos que justinse están ejecutando (que se pueden cambiar a cualquier nombre de usuario) a los grepque busca skype(esto se puede cambiar a su proceso) y luego canalizar esa línea a la cutque luego lee solo el PID y finalmente usa ese PID en el killcomando para matarlo.

justingiffard
fuente
Podrías haber dejado caer -l, y correr pgrep -u justin skype, y matar: pkill -u justin skype(o pkill -KILL -u justin skypeenviar SIGKILL).
muru
Esta es definitivamente la forma de Unix. Bien hecho los dos. Usaré este.
SDsolar
1

Aquí hay un script simple de Python que escribí, killProcess.py, que aceptará cualquier cosa como entrada y lo eliminará.

Escribí este script porque tengo muchos procesos de python o de nodo que quiero eliminar de forma individual y programática. No puedo usar "killall python" porque detendrá los procesos que necesito para seguir ejecutándose.

Nombre el archivo "killProcess.py", luego agregue el nombre del script que desea detener. Por ejemplo: python killProcess.py runnablePoller.py matará el archivo runnablePoller.py

import os;
import sys;
for arg in sys.argv:
    if(arg!="killProcess.py"):
        process=arg;
        print(process);
processes =os.popen("ps -ef | grep "+process).read();
processes=processes.split("\n");
processes=processes[0].split(" ");
#print(processes);
for p in processes:
    try:
        pid=int(p);
        print(pid); 
        break;
    except:
        continue;

os.system("kill "+str(pid));
nick carraway
fuente
0

Usé el siguiente procedimiento para matar un proceso en Ubuntu ::

Paso 1: Obtenga el pid del proceso usando grep o puede usar -C también ::

ps aux | -C 'filename'

o

ps -ef | -C 'filename'

o

ps aux | grep 'filename'

o

ps -ef | grep 'filename' 

Paso 2: tenga en cuenta el número pid.

Paso 3: Use el comando 'kill' junto con el número pid como:

kill pidnumber
Akash Kandpal
fuente