150 likes | 274 Views
Realizado por: Kepa Bengoetxea jipbekok@vc.ehu.es. Gestión de Procesos. Gestión de Procesos: Foreground y Background. Primer plano: comando Ejm: yes >> /dev/null Segundo plano: comando & Ejm: yes >> /dev/null & [1] 22300 ([nº_de_tarea] nºPID)
E N D
Realizado por: Kepa Bengoetxea jipbekok@vc.ehu.es Gestión de Procesos
Gestión de Procesos: Foreground y Background • Primer plano: comando • Ejm: yes >> /dev/null • Segundo plano: comando & • Ejm: yes >> /dev/null & [1] 22300 ([nº_de_tarea] nºPID) • Pasar a 1º plano: fg %num_de_tarea(Con jobs visualiza el número tarea de los procesos) • Pasar a 2º plano: Ctrl+z (manda STOP a la tarea que esta en primer plano) y bg %nº_de_tarea • Matar un proceso en primer plano: Ctrl+C ó kill -9 nºPID
Gestión de Procesos: Foreground • El bash padre realiza una llamada a sistema para crear un proceso hijo (fork()). En estos momentos tendremos 2 bash (hijo y padre) • El bash hijo realiza una llamada a sistema exec, que inicia la ejecución del comando “ls” • Mientras tanto el padre esta esperando a que el hijo finalice (foreground) Bash$ ls fork() exec(ls) exit() wait()
Gestión de Procesos: PID • Linux dispone de un sistema de ficheros especial llamado proc, que contiene información interesante acerca de los procesos • Los procesos están organizados en árbol, donde init es el padre de todos y su PID es 1 • Comando “pstree” muestra los procesos en forma de árbol. Opciones: • -u muestra el nombre de usuario que inicio el proceso • -p pid del proceso
Gestión de Procesos: PID init(1)─gnome-terminal(5770,kepa) ─bash(5772) ─pstree(5871) │ │ ├ ─yes(5821) │ │ ├ ─yes(5822) │ │ ─yes(5823) │ ─bash(5802) │ ─gnome-pty-helpe(5771)
Control de Procesos • Comando “ps” lista información de los procesos. -u alumno01 (muestra los procesos del alumno01) -t pts/0 (muestra los procesos de la terminal 0) -p pid (muestra la información del proceso pid) -a muestra los procesos iniciados por los otros usuarios -x muestra los procesos con o sin terminal -f full (formato árbol) -e todos los procesos
Control de Procesos • Se pueden mostrar la siguiente información: UID (Identificador de usuario) PID (Número Identificador de proceso) PPID (Número Identificador de proceso padre) TTY (Terminal asociado al proceso (pts/0;pts/3) START (Hora de inicio de ejecución del proceso) TIME (Tiempo acumulado de uso de CPU) CMD (Nombre de comando)
Control de Procesos • Señal: mensajes que el kernel puede enviar a los procesos para intercomunicarse con ellos. - Se identifican por un número - kill -l ;Nos informa de las señales que se pueden enviar. - Existen 64 señales diferentes: Las señales de 33 a 64 son señales de tiempo real kill: nos permite enviar señales a un proceso. kill -x PID donde x es un número 1 a 64 o nombre de la señal Ejm:$ kill -9 8248 ó $ kill -KILL 8248 - Las señales que realmente interesa conocer al usuario son:
Control de Procesos -KILL:obligaalproceso PID a finalizar. -HUP: señala al proceso con número pid, que vuelva a leer de sus archivos de configuración. -INT: Señala al proceso con número , que será interrumpido . Es la interrupción de teclado Ctrl+C. -TERM: Señala al proceso con número pid, que debe de terminar, a diferencia de -KILL, esta opción da la oportunidad al proceso terminar correctamente. -STOP: Señala al proceso con número pid , que pare momentáneamente (Ctrl+Z) -CONT: Señala al proceso con número pid, que continúe , este comando se utiliza para reanudar un proceso que le fue parado con -STOP. killall A diferencia de kill , killall permite mandar una señal al proceso por nombre. Envia la señal -TERM al proceso con el nombre especificado. NOTA: Por “default” la señal que toma kill y killall es -TERM .
Control de Procesos • kill: nos permite enviar señales a un proceso. Ejm: kill -x PID kill -l ;Nos informa de las señales que se pueden enviar. Si x es -9: obliga al proceso PID a finalizar. Ejm: $ yes > /dev/null& [1] 8248 $ kill -9 8248 ó $ kill -KILL 8248 $ ps PID TTY TIME CMD 8249 pts/0 00:00:00 ps [1]+ Killed yes >/dev/null
Control de Procesos • Comando “top” : muestra los procesos que más %cpu, %mem ... están utilizando de forma online • Ayuda presionando “h”. • “f” selecciona campos “o” ordena por algún campo: • a: PID = Process Id • e: USER = User Name • h: PR = Priority • w: S = Process Status • k: %CPU = CPU usage • * N: %MEM = Memory usage (RES) • ...
Control de Procesos • Comando “nohup” : Siempre que un proceso padre muere antes de que su hijo muera, este es adoptado por el proceso init. Excepción: al usar bash, y lanzar un proceso hijo si el bash se cierra o muere también muere el proceso hijo. Para evitar que el proceso hijo muera se lanza: nohup comando
Control de Procesos • Comando “nice”: comando que nos permite cambiar la prioridad de un proceso. Sintaxis: nice -n <x> yes > /dev/null& <x> varía entre -20 y +19, donde -20 es la prioridad más alta (más tiempo de cpu) Solo root puede especificar niveles menores que 0. Para cambiar la prioridad de comando que ya se esta ejecutando: renice <x> PID
Control de Procesos • Ejm: $yes > /dev/null & [1] 9862 $ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 500 9841 5770 0 75 0 - 1409 wait pts/1 00:00:00 bash 0 R 500 9862 9841 65 85 0 - 1203 - pts/1 00:00:03 yes 0 R 500 9863 9841 0 76 0 - 597 - pts/1 00:00:00 ps
Control de Procesos $ renice +19 9862 9862: prioridad antigua 0, nueva prioridad 19 $ sudo renice -20 9862 (como root, para menores de 0) 9862: prioridad antigua 19, nueva prioridad -20 kill -9 9862