Suponga que se encuentra explorando la línea de comandos de Linux por primera vez o ingresando a la administración de Linux. En ese caso, es esencial una comprensión de bajo nivel de cómo moverse por la terminal y completar las tareas básicas. Para ayudarlo a comprender esos conceptos, consulte mis dos artículos anteriores:
- 10 comandos para comenzar en la terminal
-
10 comandos más para manipular archivos
Sin embargo, si se siente cómodo con esos conceptos, avanzaremos un poco más en su conocimiento de Linux en este artículo. Analizaremos los procesos y cómo gestionarlos.
Entonces, ¿qué es exactamente un proceso ?
En Linux, un proceso es cualquier instancia activa (en ejecución) de un programa. Pero, ¿qué es un programa ? Bueno, técnicamente, un programa es cualquier archivo ejecutable almacenado en su máquina. Cada vez que ejecuta un programa, ha creado un proceso. En un nivel básico, esto es bastante fácil de administrar, y eso es lo que vamos a ver hoy.
Lo que necesitas para empezar
Le recomiendo que lo siga en su máquina virtual favorita. De esa manera, puedes intentarlo y fallar sin consecuencias (lo que definitivamente es la mejor manera de sentirte cómodo en la terminal).
Para esta demostración, voy a iniciar el proceso de suspensión durante 500 segundos. Este enfoque le permite ver el proceso sin que yo realice cambios significativos en mi sistema.
[tcarrigan@client ~]$ sleep 500
^Z
[1]+ Stopped sleep 500
Luego detuve el proceso con Ctrl+Z para que podamos usar nuestra terminal.
1. Listar procesos
Para mostrar sus procesos actualmente activos, use el ps
comando:
[tcarrigan@client ~]$ ps
PID TTY TIME CMD
2648 pts/0 00:00:00 bash
3293 pts/0 00:00:00 sleep
3300 pts/0 00:00:00 ps
Aquí obtiene un poco de información sobre los procesos activos en su sistema. Deberá prestar atención al PID (ID de proceso único), el TIME (cantidad de tiempo que el proceso se ha estado ejecutando), y el CMD (el comando ejecutado para iniciar el proceso).
2. Lista detallada (procesos)
Para ver una lista de procesos increíblemente detallada, puede usar el ps aux
comando.
- a - todos los usuarios
- u - muestra el usuario/propietario
- x:muestra procesos no ejecutados en la terminal (lo que hace que la salida sea bastante larga)
Puede ver el comando aquí (salida editada por longitud):
[tcarrigan@client ~]$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
tcarrig+ 3293 0.0 0.0 215292 520 pts/0 T 13:41 0:00 sleep 500
root 3380 0.0 0.0 0 0 ? I 13:45 0:00 [kworker/1:1-mm_percpu_wq]
root 3381 0.0 0.0 0 0 ? I 13:45 0:00 [kworker/1:3]
root 3398 0.0 0.0 0 0 ? I 13:46 0:00 [kworker/3:2-ata_sff]
root 3481 0.0 0.0 0 0 ? I 13:50 0:00 [kworker/u8:2-flush-253:0]
root 3482 0.0 0.0 0 0 ? I 13:50 0:00 [kworker/0:1-events]
root 3483 0.0 0.0 0 0 ? I 13:50 0:00 [kworker/0:2]
root 3508 0.0 0.0 0 0 ? I 13:51 0:00 [kworker/3:0-ata_sff]
root 3511 0.0 0.0 18892 7732 ? S 13:52 0:00 systemd-userwork
root 3512 0.0 0.0 18892 7656 ? S 13:52 0:00 systemd-userwork
root 3513 0.0 0.0 18892 7656 ? S 13:52 0:00 systemd-userwork
root 3566 0.4 0.0 432792 8024 ? Ssl 13:54 0:00 /usr/libexec/fprintd
tcarrig+ 3598 0.0 0.0 228208 3948 pts/0 R+ 13:54 0:00 ps aux
3. Matar por PID
Inevitablemente, un proceso se bloqueará y deberá kill
eso. Cuanto más tiempo pase en la CLI, más probable es que necesite kill
dominio. La forma más precisa de identificar un proceso es mediante el ID de proceso (PID).
Utilice la siguiente sintaxis:
[tcarrigan@client ~]$ kill PID
Este comando envía el SIGTERM señal. Sin embargo, si se trata de un proceso atascado, agregue el -9
opción.
[tcarrigan@client ~]$ ps
PID TTY TIME CMD
2648 pts/0 00:00:00 bash
3293 pts/0 00:00:00 sleep
4684 pts/0 00:00:00 sleep
40527 pts/0 00:00:00 sleep
40540 pts/0 00:00:00 ps
[tcarrigan@client ~]$ sudo kill -9 3293
[sudo] password for tcarrigan:
[1] Killed sleep 500
4. Matar por nombre/palabra clave
Usa el killall
Comando para matar un proceso por su nombre. Este comando eliminará todos los procesos con la palabra clave/nombre que especifique.
La sintaxis es:
[tcarrigan@client ~]$ killall sleep
Esto mataría a todos sleep
procesos activos en el sistema (el -9
opción funciona aquí también). Aquí hay un ejemplo:
[tcarrigan@client ~]$ ps
PID TTY TIME CMD
2648 pts/0 00:00:00 bash
4684 pts/0 00:00:00 sleep
40527 pts/0 00:00:00 sleep
40540 pts/0 00:00:00 ps
[tcarrigan@client ~]$ killall -9 sleep
[2]- Killed sleep 500
[3]+ Killed sleep 500
Estos dos comandos siguientes van de la mano. Le permiten mover/administrar comandos en segundo plano. Daré una mirada básica a la sintaxis a continuación; sin embargo, para ver en profundidad estos comandos, consulte mi artículo anterior sobre el tema.
5. Enumere trabajos en segundo plano y reanude trabajos en segundo plano
Para listar y administrar trabajos en segundo plano, usaremos el bg
dominio. Empecé un nuevo sleep 500
proceso y luego lo detuvo, enviándolo a un segundo plano. Por lo tanto, lo vemos en la lista cuando se ejecuta bg
a continuación:
[tcarrigan@client ~]$ bg
[1]+ sleep 500 &
6. Trae el trabajo más reciente al primer plano
Para hacer esto, vamos a usar el fg
dominio. Esto trae el trabajo/proceso ejecutado más recientemente al primer plano. El siguiente ejemplo es una continuación del comando anterior. El sleep 500
proceso que está en segundo plano ahora está activo en segundo plano. Saquémoslo a la luz...
[tcarrigan@client ~]$ fg
sleep 500
Este comando nos lleva a nuestro comando final en esta lista.
7. Poner un trabajo específico en primer plano
Utilice el fg
comando de nuevo, pero seleccione un trabajo específico para traerlo a primer plano (en lugar del más reciente). Para hacer esto, solo agregaremos el nombre del trabajo/proceso al comando.
[tcarrigan@client ~]$ fg XXXample
Esto trae trabajo XXXample al primer plano.
[ ¿Quiere poner a prueba sus habilidades de administrador de sistemas? Tome una evaluación de habilidades hoy. ]
Conclusión
En los conceptos básicos de comandos de Linux de hoy, analizamos los procesos y cómo administrarlos. Ahora puede completar tareas generales de administración de procesos, desde enumerar y eliminar hasta moverse entre el fondo y el primer plano. Si hay otras áreas generales de administración de Linux para las que le gustaría ver una lista dedicada de comandos, envíe un correo electrónico al equipo a [email protected] y haré todo lo posible para desarrollarlo.