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
.