domingo, 30 de diciembre de 2007

Procesos en Linux

Fuente: LinuTeca

Un proceso puede ejecutarse en foreground (interactivamente) o en background (compartiendo la CPU pero sin molestarnos hasta que acaba).

Para ejecutar procesos en background pondremos al final del comando el carácter &. Entonces nos indicará el identificador de este proceso [3] 821 (el 3 es el numero de JOB y el 821 es el PID). Obsérvese que si el programa lee o escribe en la stdin (entrada estándar) o en la stdout (salida estándar) resulta suspendido. En este caso se puede recurrir al direccionamiento (ver más abajo).

El sistema nos devolverá el control. Al finalizar el proceso nos lo indicará con el PID.

Los siguientes comands son los más usados en procesos:

fg %numero_de_job (lo reanuda en foreground)
bg %numero_de_job (lo reanuda en background)

El comando ps nos muestra la lista de todos los procesos que se están ejecutando en ese momento, con sus PID’s. También se pueden matar con el comando kill que envía un senal al proceso (-9 es la señal para matarlo); ejemplos:

prog_bucle_infinito >file.out &[3] 821ps

PID TT STAT TIME COMMAND

821 co S 0:31 prog_bucle_infinito

922 co R 0:00 ps

kill -9 821

[3] killed prog_bucle_infinito >file.out

También podemos matarlo haciendo:

kill %3[3] killed prog_bucle_infinito >file.out

En este caso le hemos indicado el número de trabajo que es. Para saber el número de trabajo basta con ejecutar el comando jobs.

Los programas en background finalizan automáticamente cuando el usuario cierra la sesión. Para evitar esto, se puede forzar a que no finalice anteponiendo “nohup” a la línea de comando y posponiendo la indicación de background. Por defecto la salida se redirigirá a un archivo llamado nohup.out.

nohup proceso &

No hay comentarios: