Gestión de Procesos en Sistemas Linux
Un programa es un conjunto de instrucciones y datos almacenados en un archivo. Cuando se carga en memoria para ejecutarse, se convierte en un proceso. El sistema operativo asigna recursos a los procesos (memoria, procesador, entrada/salida, etc.) para su correcta ejecución. Cada proceso tiene un identificador único (PID - Process Identifier) asignado por el núcleo. Además del PID, cada proceso tiene un PPID (Parent PID) que identifica al proceso padre, y un PGID que identifica al grupo de procesos relacionados.
Estados de un Proceso
Ejecutándose: En sistemas con un solo procesador, solo un proceso puede estar en este estado a la vez. Linux permite compartir la CPU entre varios procesos, dividiendo el tiempo de procesador en cuantos y asignándolos a cada proceso.
- Durmiendo: El proceso espera un recurso o la finalización de una operación de E/S.
- Listo: El proceso está listo para ejecutarse y espera la asignación de la CPU por el planificador.
Linux define los siguientes estados:
- D: Ininterrumpible (entrada/salida)
- S: Dormido (sleeping)
- R: Ejecutándose (running)
- T: Parado (stop)
- X: Muerto (dead)
- Z: Zombie (en proceso de defunción)
Comandos para la Gestión de Procesos
ps
Muestra información sobre los procesos en ejecución. Sin argumentos, muestra los procesos asociados al terminal actual.
Sintaxis: ps [argumentos]
Ejemplo: ps -ax
Campos:
- uid: Identificador del usuario
- pid: Identificador del proceso
- ppid: Identificador del proceso padre
- c: Recursos de CPU utilizados recientemente
- stime: Instante de inicio
- tty: Terminal asociado
- time: Tiempo de CPU asignado
- command: Nombre del programa/proceso
- pri: Prioridad
- ni: Valor nice (prioridad). Un valor positivo indica menor tiempo de CPU
- vsz: Tamaño en memoria virtual
- rss: Tamaño en memoria (KB)
- stat: Estado
kill
Envía señales a procesos.
Sintaxis: kill [-señal] PID [PID...]
Señales comunes:
1 (SIGHUP): Hangup (cierre de terminal)2 (SIGINT): Interrupción (Ctrl+C)3 (SIGQUIT): Salida (Ctrl+\)4 (SIGILL): Instrucción ilegal5 (SIGTRAP): Depuración6 (SIGIOT): Fallo hardware7 (SIGEMT): Fallo hardware8 (SIGFPE): Error en coma flotante9 (SIGKILL): Terminación inmediata10 (SIGBUS): Error de acceso a memoria11 (SIGSEGV): Violación de segmento12 (SIGSYS): No se usa13 (SIGPIPE): Escritura en pipe sin lector14 (SIGALRM): Temporizador15 (SIGTERM): Terminación16 (SIGUSR1): Usuario17 (SIGUSR2): Usuario18 (SIGCHLD): Muerte de hijo19 (SIGPWR): Fallo de alimentación
nice
Ajusta la prioridad de un proceso.
Sintaxis: nice [-N] orden
nohup
Ejecuta un proceso en segundo plano.
Sintaxis: nohup orden &
sleep
Pausa la ejecución.
Sintaxis: sleep segundos
time
Mide el tiempo de ejecución.
Sintaxis: time orden [argumentos]
w
Muestra información de usuarios y procesos.
fg
Trae un proceso en segundo plano al primer plano.
top
Monitoriza procesos en tiempo real.
free
Muestra el estado de la memoria.
uptime
Muestra el tiempo de actividad del sistema.