GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo matar un proceso o detener un programa en Linux

Cuando un proceso se comporta mal, a veces es posible que desee finalizarlo o eliminarlo. En esta publicación, exploraremos algunas formas de finalizar un proceso o una aplicación desde la línea de comandos, así como desde una interfaz gráfica, usando gedit como una aplicación de muestra.

Uso de la línea de comando/caracteres de terminación

Ctrl+C

Un problema al invocar gedit desde la línea de comando (si no está usando gedit & ) es que no liberará el indicador, por lo que la sesión de shell está bloqueada. En tales casos, Ctrl+C (la tecla Control en combinación con 'C') resulta útil. Eso terminará gedit y todo el trabajo se perderá (a menos que se haya guardado el archivo). Ctrl+C envía el SIGINT señal a gedit . Esta es una señal de parada cuya acción por defecto es terminar el proceso. Le indica al shell que detenga gedit y regrese al ciclo principal, y obtendrá el mensaje nuevamente.

$ gedit
^C

Ctrl+Z

Esto se llama un carácter de suspensión . Envía un SIGTSTP señal a procesar. Esta también es una señal de detención, pero la acción predeterminada no es matar sino suspender el proceso.

Detendrá (matará/terminará) gedit y devolver el indicador de shell.

   $ gedit
   ^Z
   [1]+  Stopped                 gedit
   $

Una vez que se suspende el proceso (en este caso, gedit ), no es posible escribir ni hacer nada en gedit . En segundo plano, el proceso se convierte en un trabajo . Esto puede ser verificado por los jobs comando.

  $ jobs
  [1]+  Stopped                 gedit

jobs le permite controlar múltiples procesos dentro de una sola sesión de shell. Puede detener, reanudar y mover trabajos al fondo o al primer plano según sea necesario.

Reanudemos gedit en segundo plano y liberar un aviso para ejecutar otros comandos. Puedes hacer esto usando el bg comando, seguido de la identificación del trabajo (observe [1] de la salida de jobs sobre. [1] es el ID del trabajo).

   $ bg 1
   [1]+ gedit &

Esto es similar a iniciar gedit con &, :

   $ gedit &

Usando matar

kill permite un control preciso sobre las señales, lo que le permite señalar un proceso especificando un nombre de señal o un número de señal, seguido de una ID de proceso o PID.

Lo que me gusta de kill es que también puede funcionar con ID de trabajo. Comencemos gedit en segundo plano usando gedit & . Suponiendo que tengo una ID de trabajo de gedit de los jobs comando, enviemos SIGINT a gedit :

   $ kill -s SIGINT %1

Tenga en cuenta que la identificación del trabajo debe tener el prefijo % , o kill lo considerará un PID.

kill puede funcionar sin especificar una señal explícitamente. En ese caso, la acción predeterminada es enviar SIGTERM , que terminará el proceso. Ejecute kill -l para listar todos los nombres de las señales, y use el man kill Comando para leer la página del manual.

Usando killall

Si no desea especificar un ID de trabajo o PID, killall le permite especificar un proceso por su nombre. La forma más sencilla de terminar gedit usando killall es:

   $ killall gedit

Esto eliminará todos los procesos con el nombre gedit . Me gusta kill , la señal predeterminada es SIGTERM . Tiene la opción de ignorar mayúsculas y minúsculas usando -I :

   $ gedit &
   [1] 14852

   $ killall -I GEDIT
   [1]+  Terminated              gedit

Para obtener más información sobre varias banderas proporcionadas por killall (como -u , que le permite matar procesos propiedad del usuario) consulte la página del manual (man killall )

Uso de xkill

¿Alguna vez ha encontrado un problema en el que un reproductor multimedia, como VLC, se atenuó o se colgó? Ahora puede encontrar el PID y eliminar la aplicación usando uno de los comandos enumerados anteriormente o usar xkill .

xkill le permite matar una ventana usando un mouse. Simplemente ejecute xkill en una terminal, que debería cambiar el cursor del mouse a una x o un pequeño icono de calavera. Haz clic en x en la ventana que desea cerrar. Tenga cuidado al usar xkill , sin embargo, como explica su página de manual, puede ser peligroso. ¡Has sido advertido!

Consulte la página del manual de cada comando para obtener más información. También puede explorar comandos como pkill y pgrep .


Linux
  1. ¿Cómo eliminar un proceso que se ejecuta en un puerto específico en Linux?

  2. ¿Cómo matar un proceso que se ejecuta en un puerto particular en Linux?

  3. Cómo configurar la ID del proceso en Linux para un programa específico

  4. Cómo pausar/reanudar un proceso en Linux

  5. Cómo detener manualmente un script de Python que se ejecuta continuamente en Linux

Comando matar en Linux

Cómo matar procesos Zombie en Linux

Cómo matar el proceso de ejecución de Linux en un puerto particular

Cómo encontrar el ID de proceso de un programa y eliminarlo [Consejo rápido]

Cómo MATAR un proceso en Linux

Cómo matar o terminar un proceso de Linux:la guía definitiva