SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexión
Gestión de Procesos en
GNU/Linux
Objetivo
● Analizar técnicas y herramientas para
gestionar procesos en GNU/Linux:
– Listar procesos en ejecución
– Obtener información de procesos
– Iniciar y detener procesos
– Determinar y alterar la prioridad
de ejecución de procesos
– Gestionar procesos en segundo plano
Procesos
●
●
Un proceso es uno de los conceptos
fundamentales más importante de los
sistemas operativos GNU/Linux.
Un proceso es una instancia de un
programa en ejecución.
Crear procesos
● ¿Cómo crear un proceso?
– Iniciar una sesión:
man login
– Ejecutar un programa:
mkdir /tmp/prueba
cd /tmp/prueba
touch doc.txt
nano doc.txt
Identificadores de un proceso
●
●
●
Process ID (PID): Identificador único.
User ID (UID) y Group ID (GID): Usuario y
grupo al que el proceso pertenece:
– UID y GID reales (heredados del padre)
– UID y GID efectivos (los procesos con
UID efectivo igual a 0 son privilegiados
ya que se ejecutan como superusuario)
Parent Process ID (PPID): PID del proceso
padre.
Listar procesos
● El comando ps muestra un snapshot de
los procesos actuales:
man ps
ps
ps u
ps l
ps aux
ps U root u root u
ps
● Utilizando ps se puede obtener
información relacionada a los procesos,
por ejemplo:
– Identificadores (USER, PID, UID, GID, PPID)
– Hora de inicio (START)
– % de uso de memoria (%MEM) y CPU (%CPU)
– Tiempo de CPU acumulado (TIME)
– Estado (STAT)
– Terminal asociada (TTY)
– Comando (CMD/COMMAND)
Estado de procesos
D Sleep Ininterrumpido (IO)
R. Corriendo o ejecutable (en cola de
ejecución)
S. Sleep interrumpible (esperando que se
complete el evento)
T. Detenido, ya sea por una señal de
control o por retraso
X Muerto (Nunca debe ser visto)
Z Defunct ("zombie") process, terminated but
not reaped by its parent
Estado de procesos
Información adicional
< Alta-prioridad (Perjudica a usuarios)
N Baja-prioridad (Equilibrado )
L Paginas de memoria Bloqueadas (IO en
tiempo real)
s Líder de Sesión (Padre)
l Multihilo (Usando CLONE_THREAD,
como lo hacen los procesos NPTL
(Librerías de hilos nativos de POSIX))
+ Procesos en primer plano
El proceso init
●
●
●
●
●
En Linux cada proceso tiene un proceso
padre.
“init” es el primer proceso que crea el
kernel Linux cuando inicia el sistema (boot)
Todos los procesos son hijos de init (de
forma directa o indirecta).
El proceso init no puede ser matado (kill),
excepto cuando se apaga el sistema.
El proceso init siempre tiene el PID = 1.
Árbol de procesos
●
●
Es posible visualizar la jerarquía de
procesos en forma de árbol a partir de init
(PID = 1):
pstree
ps jf
ps axjf
ps ejH
Si se especifica un PID, el árbol se inicia
desde tal proceso. Si se especifica un
usuario válido se mostrará la jerarquía de
todos los procesos del mismo.
Demonios (daemons)
●
●
●
En un momento determinado pueden existir en el
sistema procesos invocados por el usuario
actual, invocados por otros usuarios, o invocados
por el sistema operativo (daemons).
Los demonios son procesos que necesitan
ejecutarse en segundo plano (background) por
largos períodos de tiempo y no requieren una
terminal que los controle (TTY).
man 4 tty
No interactúan directamente con los usuarios,
sino en forma de servicio.
Señales
●
●
●
Mensajes que se envían a un proceso para
notificar eventos importantes.
Por su naturaleza, los procesos son
interrumpidos y forzados a manejarlas
inmediatamente.
Cada señal se identifica con un número
entero al igual que un nombre simbólico:
kill l
man 7 signal
Terminar procesos
●
●
●
El comando kill se utiliza para enviar
señales a procesos.
Por defecto envía la señal TERM
(Termination Signal).
¿Cómo matar un proceso?
– Enviar SIGTERM:
kill 15 [pid]
– Si no responde, enviar SIGKILL:
kill 9 [pid]
[off-topic] Todo es un archivo
●
●
" Todo es un archivo " describe una de las
características principales de GNU/Linux. Que una
amplia gama de recursos de entrada/salida, como
documentos, directorios, discos duros, módems,
teclados, impresoras e incluso algunas
comunicaciones entre procesos y redes son flujos
simples de bytes expuestos a través del espacio
de nombres del sistema de archivos.
La ruta del archivo se convierte en el sistema
de direccionamiento y el descriptor del
archivo es la interfaz de E / S de flujo de
bytes.
[off-topic] Todo es un archivo
●
●
●
Existe un rango de pseudo y sistemas de archivos
virtuales que expone información sobre procesos
y otra información del sistema en una estructura
jerárquica similar a un archivo.
Un ejemplo de este sistema de archivos
puramente virtual está bajo /proc el cual expone
características del sistema como archivos.
Todos estos "archivos" tienen atributos de archivo
estándar de Linux al igual propietario y permisos de
acceso, y pueden consultarse con las mismas
herramientas y filtros clásicos.
“Destripar” procesos
●
●
●
●
El pseudo sistema de archivos proc se
utiliza como interfase a las estructuras de
datos del kernel.
Generalmente es montado en /proc.
En su mayor parte es de sólo lectura, pero
algunos archivos permiten modificar
variables del kernel.
Existe un subdirectorio numérico por cada
proceso, cuyo nombre coincide con el PID
de los mismos.
/proc
man proc
ls l /proc
ls l /proc/[pid]
(cat /proc/[pid]/cmdline; echo) | tr '0' ' '
ls l /proc/[pid]/cwd
cd /proc/[pid]/cwd; pwd
(cat /proc/[pid]/environ; echo) | tr '0' 'n'
ls l /proc/[pid]/exe
ls l /proc/[pid]/fd
Experimento: manipular la
entrada estándar de otro proceso
●
●
Ejecutar el editor de texto “vi”:
touch /tmp/prueba/doc2.txt
vi /tmp/prueba/doc2.txt
[INSERT]
Desde otra terminal inyectar texto:
ps u
echo hola >> /proc/[pid]/fd/0
Más /proc
cat /proc/[pid]/limits
cat /proc/[pid]/maps
cat /proc/[pid]/mountinfo
ls l /proc/[pid]/root
cat /proc/[pid]/smaps
cat /proc/[pid]/stat
cat /proc/[pid]/statm
cat /proc/[pid]/status
cat /proc/[pid]/task
¿Qué pasa con el directorio /proc/[pid] cuando matamos el
proceso?
Multiprogramación
● Linux (como la mayoría de sistemas
operativos modernos) puede ejecutar
múltiples procesos compartiendo CPU,
memoria y otros recursos entre ellos.
top
htop
Tiempo compartido
●
●
●
En general existen más procesos que
CPU.
Es necesario compartir estos recursos de
CPU limitados entre los procesos que
compiten por ellos.
Esto se hace seleccionando un proceso
para ejecución y dejándolo ejecutar por un
periodo o hasta que necesite esperar algún
evento (por ejemplo E/S).
Prioridad de ejecución
●
●
●
Para garantizar que procesos importantes
no se queden sin CPU, la selección se
efectúa de acuerdo a una prioridad.
La columna NI en la salida del comando
top indica la prioridad de ejecución onice.
Esta prioridad oscila desde -20 (mayor
prioridad) hasta 19 (menor prioridad).
man nice
ps o pid,ni,comm,args
ps l
Alterar la prioridad de ejecución
●
●
Iniciar un proceso con baja prioridad:
nice n 19 grep Ri net /
Modificar la prioridad de un proceso:
grep Ri net /
ps o pid,ni,comm,args
renice n 19 p [pid]
ps o pid,ni,comm,args
Procesos en segundo plano
●
●
●
En Linux podemos iniciar procesos en
primer plano (foreground) o en segundo
plano (background).
Un proceso iniciado en foreground
monopoliza la terminal e impide iniciar más
procesos desde la misma.
Un proceso en background, una vez
iniciado deja de monopolizar la terminal, y
devuelve el control al usuario (prompt).
Iniciar procesos en background
●
●
●
Es posible iniciar procesos en background
utilizando el caracter ampersand:
&
Es posible detener procesos utilizando:
Ctrl+Z
A cada proceso en background se le
asigna un identificador numérico.
man jobs
man bg
man fg
Alternar foreground entre
procesos
top [Ctrl+Z]
ping 8.8.8.8 > /dev/null &
jobs
tail f /var/log/dmesg > /dev/null &
jobs
> /dev/zero [Ctrl+Z]ping 8.8.4.4
jobs
bg 4
jobs
fg 3 [Ctrl+Z]
jobs l
fg
ps
Más herramientas...
●
●
●
●
●
Listar procesos: pgrep, atop
Enviar señales: killall, pkill, skill
Esperar procesos: wait
Medir procesos: time
“Inmortalizar” procesos: nohup, disown
Referencias
● An overview of Linux processes -
[https://www.ibm.com/developerworks/community/blogs/58e72888-6340-46ac-b488-
d31aa4058e9c/entry/an_overview_of_linux_processes21]
●
●
●
●
●
Parent process - [http://en.wikipedia.org/wiki/Parent_process]
Linux Filesystem Hierarchy - 1.14. /proc - [http://www.tldp.org/LDP/Linux-
Filesystem-Hierarchy/html/proc.html]
Everything is a file - [http://en.wikipedia.org/wiki/Everything_is_a_file]
Prioridades de ejecución de procesos -
[http://www.ibm.com/developerworks/ssa/linux/library/l-lpic1-v3-103-6/]
Introduction To Unix Signals Programming -
[http://titania.ctie.monash.edu.au/signals/]

Más contenido relacionado

La actualidad más candente

Linux presentation
Linux presentationLinux presentation
Linux presentationNikhil Jain
 
Automate your network with Ansible and NAPALM
Automate your network with Ansible and NAPALMAutomate your network with Ansible and NAPALM
Automate your network with Ansible and NAPALMMohamed Radwan
 
Unix/Linux Basic Commands and Shell Script
Unix/Linux Basic Commands and Shell ScriptUnix/Linux Basic Commands and Shell Script
Unix/Linux Basic Commands and Shell Scriptsbmguys
 
Presentation on samba server
Presentation on samba serverPresentation on samba server
Presentation on samba serverVeeral Bhateja
 
Performance Analysis Tools for Linux Kernel
Performance Analysis Tools for Linux KernelPerformance Analysis Tools for Linux Kernel
Performance Analysis Tools for Linux Kernellcplcp1
 
Presentación Sistema OPerativo Linux
Presentación Sistema OPerativo  Linux Presentación Sistema OPerativo  Linux
Presentación Sistema OPerativo Linux Dhariana Leguisamo
 
Embedded linux system development (slides)
Embedded linux system development (slides)Embedded linux system development (slides)
Embedded linux system development (slides)Jaime Barragan
 
Evolución de linux
Evolución de linuxEvolución de linux
Evolución de linuxleopoldo16
 
estructura de sistemas operativos
estructura de sistemas operativosestructura de sistemas operativos
estructura de sistemas operativosernesto perez
 
Ssoo cuadro comparativo
Ssoo  cuadro comparativoSsoo  cuadro comparativo
Ssoo cuadro comparativoalixonrios
 
Línea del tiempo de sistemas operativos
Línea del tiempo de sistemas operativosLínea del tiempo de sistemas operativos
Línea del tiempo de sistemas operativosJose Luis Chacon
 

La actualidad más candente (20)

Linux presentation
Linux presentationLinux presentation
Linux presentation
 
Sistema operativo linux
Sistema operativo linux Sistema operativo linux
Sistema operativo linux
 
Gestion de memoria en Linux
Gestion de memoria en LinuxGestion de memoria en Linux
Gestion de memoria en Linux
 
Automate your network with Ansible and NAPALM
Automate your network with Ansible and NAPALMAutomate your network with Ansible and NAPALM
Automate your network with Ansible and NAPALM
 
Linux
LinuxLinux
Linux
 
Unix/Linux Basic Commands and Shell Script
Unix/Linux Basic Commands and Shell ScriptUnix/Linux Basic Commands and Shell Script
Unix/Linux Basic Commands and Shell Script
 
Presentation on samba server
Presentation on samba serverPresentation on samba server
Presentation on samba server
 
Linux memory
Linux memoryLinux memory
Linux memory
 
USB Drivers
USB DriversUSB Drivers
USB Drivers
 
Linux device drivers
Linux device drivers Linux device drivers
Linux device drivers
 
Performance Analysis Tools for Linux Kernel
Performance Analysis Tools for Linux KernelPerformance Analysis Tools for Linux Kernel
Performance Analysis Tools for Linux Kernel
 
Presentación Sistema OPerativo Linux
Presentación Sistema OPerativo  Linux Presentación Sistema OPerativo  Linux
Presentación Sistema OPerativo Linux
 
Embedded linux system development (slides)
Embedded linux system development (slides)Embedded linux system development (slides)
Embedded linux system development (slides)
 
Evolución de linux
Evolución de linuxEvolución de linux
Evolución de linux
 
estructura de sistemas operativos
estructura de sistemas operativosestructura de sistemas operativos
estructura de sistemas operativos
 
Memoria virtual
Memoria virtualMemoria virtual
Memoria virtual
 
Ssoo cuadro comparativo
Ssoo  cuadro comparativoSsoo  cuadro comparativo
Ssoo cuadro comparativo
 
Sistema Operativo Mac Os
Sistema Operativo Mac OsSistema Operativo Mac Os
Sistema Operativo Mac Os
 
Línea del tiempo de sistemas operativos
Línea del tiempo de sistemas operativosLínea del tiempo de sistemas operativos
Línea del tiempo de sistemas operativos
 
Linux Memory Management
Linux Memory ManagementLinux Memory Management
Linux Memory Management
 

Similar a Procesos linux

Semana 10 administracion de procesos
Semana 10 administracion de procesosSemana 10 administracion de procesos
Semana 10 administracion de procesosvictdiazm
 
Linux ud7 - gestion de procesos
Linux   ud7 - gestion de procesosLinux   ud7 - gestion de procesos
Linux ud7 - gestion de procesosJavier Muñoz
 
9 managing processes
9  managing processes9  managing processes
9 managing processesyimfer1
 
9 managing processes
9  managing processes9  managing processes
9 managing processesJuan Camilo
 
9 managing processes
9  managing processes9  managing processes
9 managing processescyberleon95
 
Curso de software03
Curso de software03Curso de software03
Curso de software03enriqueaco
 
Administración y Comando Básicos
Administración y Comando BásicosAdministración y Comando Básicos
Administración y Comando BásicosAbrilRojasMedina
 
Planificador
PlanificadorPlanificador
Planificadorbluekn
 
Tarea 3_individual_Nelis Rivero
Tarea 3_individual_Nelis RiveroTarea 3_individual_Nelis Rivero
Tarea 3_individual_Nelis RiveroNelisRivero
 
Como instalar unix ...lili
Como instalar unix ...liliComo instalar unix ...lili
Como instalar unix ...lilijassley 2000
 
Miranda castillo UNIX
Miranda castillo UNIXMiranda castillo UNIX
Miranda castillo UNIXmiranda696
 
Cristian medina Instalar unix
Cristian medina Instalar unixCristian medina Instalar unix
Cristian medina Instalar unixCRISTIAN23MEDINA
 
Sandra saldaña instalarunix
Sandra saldaña instalarunixSandra saldaña instalarunix
Sandra saldaña instalarunixsandrasal23
 
Sandra saldaña instalarunix
Sandra saldaña instalarunixSandra saldaña instalarunix
Sandra saldaña instalarunixsandrasal23
 

Similar a Procesos linux (20)

Semana 10 administracion de procesos
Semana 10 administracion de procesosSemana 10 administracion de procesos
Semana 10 administracion de procesos
 
Linux ud7 - gestion de procesos
Linux   ud7 - gestion de procesosLinux   ud7 - gestion de procesos
Linux ud7 - gestion de procesos
 
9 managing processes
9  managing processes9  managing processes
9 managing processes
 
9 managing processes
9  managing processes9  managing processes
9 managing processes
 
9 managing processes
9  managing processes9  managing processes
9 managing processes
 
Curso de software03
Curso de software03Curso de software03
Curso de software03
 
Administración y Comando Básicos
Administración y Comando BásicosAdministración y Comando Básicos
Administración y Comando Básicos
 
Presentacion
PresentacionPresentacion
Presentacion
 
Planificador
PlanificadorPlanificador
Planificador
 
Tarea 3_individual_Nelis Rivero
Tarea 3_individual_Nelis RiveroTarea 3_individual_Nelis Rivero
Tarea 3_individual_Nelis Rivero
 
Como instalar unix ...lili
Como instalar unix ...liliComo instalar unix ...lili
Como instalar unix ...lili
 
Mary cervantes
Mary cervantesMary cervantes
Mary cervantes
 
Genesis campos
Genesis camposGenesis campos
Genesis campos
 
Miranda castillo UNIX
Miranda castillo UNIXMiranda castillo UNIX
Miranda castillo UNIX
 
Jadira palta
Jadira paltaJadira palta
Jadira palta
 
Cristian medina Instalar unix
Cristian medina Instalar unixCristian medina Instalar unix
Cristian medina Instalar unix
 
Ambar galeas
Ambar galeasAmbar galeas
Ambar galeas
 
Sandra saldaña instalarunix
Sandra saldaña instalarunixSandra saldaña instalarunix
Sandra saldaña instalarunix
 
Instalar unixElvis Urquizo
Instalar unixElvis UrquizoInstalar unixElvis Urquizo
Instalar unixElvis Urquizo
 
Sandra saldaña instalarunix
Sandra saldaña instalarunixSandra saldaña instalarunix
Sandra saldaña instalarunix
 

Último

Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webDecaunlz
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenadanielaerazok
 
institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenajuniorcuellargomez
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAdanielaerazok
 
Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdflauradbernals
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfOscarBlas6
 
12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdfedwinmelgarschlink2
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfisrael garcia
 

Último (8)

Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la web
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalena
 
institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalena
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
 
Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdf
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdf
 
12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
 

Procesos linux

  • 1. Gestión de Procesos en GNU/Linux
  • 2. Objetivo ● Analizar técnicas y herramientas para gestionar procesos en GNU/Linux: – Listar procesos en ejecución – Obtener información de procesos – Iniciar y detener procesos – Determinar y alterar la prioridad de ejecución de procesos – Gestionar procesos en segundo plano
  • 3. Procesos ● ● Un proceso es uno de los conceptos fundamentales más importante de los sistemas operativos GNU/Linux. Un proceso es una instancia de un programa en ejecución.
  • 4. Crear procesos ● ¿Cómo crear un proceso? – Iniciar una sesión: man login – Ejecutar un programa: mkdir /tmp/prueba cd /tmp/prueba touch doc.txt nano doc.txt
  • 5. Identificadores de un proceso ● ● ● Process ID (PID): Identificador único. User ID (UID) y Group ID (GID): Usuario y grupo al que el proceso pertenece: – UID y GID reales (heredados del padre) – UID y GID efectivos (los procesos con UID efectivo igual a 0 son privilegiados ya que se ejecutan como superusuario) Parent Process ID (PPID): PID del proceso padre.
  • 6. Listar procesos ● El comando ps muestra un snapshot de los procesos actuales: man ps ps ps u ps l ps aux ps U root u root u
  • 7. ps ● Utilizando ps se puede obtener información relacionada a los procesos, por ejemplo: – Identificadores (USER, PID, UID, GID, PPID) – Hora de inicio (START) – % de uso de memoria (%MEM) y CPU (%CPU) – Tiempo de CPU acumulado (TIME) – Estado (STAT) – Terminal asociada (TTY) – Comando (CMD/COMMAND)
  • 8. Estado de procesos D Sleep Ininterrumpido (IO) R. Corriendo o ejecutable (en cola de ejecución) S. Sleep interrumpible (esperando que se complete el evento) T. Detenido, ya sea por una señal de control o por retraso X Muerto (Nunca debe ser visto) Z Defunct ("zombie") process, terminated but not reaped by its parent
  • 9. Estado de procesos Información adicional < Alta-prioridad (Perjudica a usuarios) N Baja-prioridad (Equilibrado ) L Paginas de memoria Bloqueadas (IO en tiempo real) s Líder de Sesión (Padre) l Multihilo (Usando CLONE_THREAD, como lo hacen los procesos NPTL (Librerías de hilos nativos de POSIX)) + Procesos en primer plano
  • 10. El proceso init ● ● ● ● ● En Linux cada proceso tiene un proceso padre. “init” es el primer proceso que crea el kernel Linux cuando inicia el sistema (boot) Todos los procesos son hijos de init (de forma directa o indirecta). El proceso init no puede ser matado (kill), excepto cuando se apaga el sistema. El proceso init siempre tiene el PID = 1.
  • 11. Árbol de procesos ● ● Es posible visualizar la jerarquía de procesos en forma de árbol a partir de init (PID = 1): pstree ps jf ps axjf ps ejH Si se especifica un PID, el árbol se inicia desde tal proceso. Si se especifica un usuario válido se mostrará la jerarquía de todos los procesos del mismo.
  • 12. Demonios (daemons) ● ● ● En un momento determinado pueden existir en el sistema procesos invocados por el usuario actual, invocados por otros usuarios, o invocados por el sistema operativo (daemons). Los demonios son procesos que necesitan ejecutarse en segundo plano (background) por largos períodos de tiempo y no requieren una terminal que los controle (TTY). man 4 tty No interactúan directamente con los usuarios, sino en forma de servicio.
  • 13. Señales ● ● ● Mensajes que se envían a un proceso para notificar eventos importantes. Por su naturaleza, los procesos son interrumpidos y forzados a manejarlas inmediatamente. Cada señal se identifica con un número entero al igual que un nombre simbólico: kill l man 7 signal
  • 14. Terminar procesos ● ● ● El comando kill se utiliza para enviar señales a procesos. Por defecto envía la señal TERM (Termination Signal). ¿Cómo matar un proceso? – Enviar SIGTERM: kill 15 [pid] – Si no responde, enviar SIGKILL: kill 9 [pid]
  • 15. [off-topic] Todo es un archivo ● ● " Todo es un archivo " describe una de las características principales de GNU/Linux. Que una amplia gama de recursos de entrada/salida, como documentos, directorios, discos duros, módems, teclados, impresoras e incluso algunas comunicaciones entre procesos y redes son flujos simples de bytes expuestos a través del espacio de nombres del sistema de archivos. La ruta del archivo se convierte en el sistema de direccionamiento y el descriptor del archivo es la interfaz de E / S de flujo de bytes.
  • 16. [off-topic] Todo es un archivo ● ● ● Existe un rango de pseudo y sistemas de archivos virtuales que expone información sobre procesos y otra información del sistema en una estructura jerárquica similar a un archivo. Un ejemplo de este sistema de archivos puramente virtual está bajo /proc el cual expone características del sistema como archivos. Todos estos "archivos" tienen atributos de archivo estándar de Linux al igual propietario y permisos de acceso, y pueden consultarse con las mismas herramientas y filtros clásicos.
  • 17. “Destripar” procesos ● ● ● ● El pseudo sistema de archivos proc se utiliza como interfase a las estructuras de datos del kernel. Generalmente es montado en /proc. En su mayor parte es de sólo lectura, pero algunos archivos permiten modificar variables del kernel. Existe un subdirectorio numérico por cada proceso, cuyo nombre coincide con el PID de los mismos.
  • 18. /proc man proc ls l /proc ls l /proc/[pid] (cat /proc/[pid]/cmdline; echo) | tr '0' ' ' ls l /proc/[pid]/cwd cd /proc/[pid]/cwd; pwd (cat /proc/[pid]/environ; echo) | tr '0' 'n' ls l /proc/[pid]/exe ls l /proc/[pid]/fd
  • 19. Experimento: manipular la entrada estándar de otro proceso ● ● Ejecutar el editor de texto “vi”: touch /tmp/prueba/doc2.txt vi /tmp/prueba/doc2.txt [INSERT] Desde otra terminal inyectar texto: ps u echo hola >> /proc/[pid]/fd/0
  • 20. Más /proc cat /proc/[pid]/limits cat /proc/[pid]/maps cat /proc/[pid]/mountinfo ls l /proc/[pid]/root cat /proc/[pid]/smaps cat /proc/[pid]/stat cat /proc/[pid]/statm cat /proc/[pid]/status cat /proc/[pid]/task ¿Qué pasa con el directorio /proc/[pid] cuando matamos el proceso?
  • 21. Multiprogramación ● Linux (como la mayoría de sistemas operativos modernos) puede ejecutar múltiples procesos compartiendo CPU, memoria y otros recursos entre ellos. top htop
  • 22. Tiempo compartido ● ● ● En general existen más procesos que CPU. Es necesario compartir estos recursos de CPU limitados entre los procesos que compiten por ellos. Esto se hace seleccionando un proceso para ejecución y dejándolo ejecutar por un periodo o hasta que necesite esperar algún evento (por ejemplo E/S).
  • 23. Prioridad de ejecución ● ● ● Para garantizar que procesos importantes no se queden sin CPU, la selección se efectúa de acuerdo a una prioridad. La columna NI en la salida del comando top indica la prioridad de ejecución onice. Esta prioridad oscila desde -20 (mayor prioridad) hasta 19 (menor prioridad). man nice ps o pid,ni,comm,args ps l
  • 24. Alterar la prioridad de ejecución ● ● Iniciar un proceso con baja prioridad: nice n 19 grep Ri net / Modificar la prioridad de un proceso: grep Ri net / ps o pid,ni,comm,args renice n 19 p [pid] ps o pid,ni,comm,args
  • 25. Procesos en segundo plano ● ● ● En Linux podemos iniciar procesos en primer plano (foreground) o en segundo plano (background). Un proceso iniciado en foreground monopoliza la terminal e impide iniciar más procesos desde la misma. Un proceso en background, una vez iniciado deja de monopolizar la terminal, y devuelve el control al usuario (prompt).
  • 26. Iniciar procesos en background ● ● ● Es posible iniciar procesos en background utilizando el caracter ampersand: & Es posible detener procesos utilizando: Ctrl+Z A cada proceso en background se le asigna un identificador numérico. man jobs man bg man fg
  • 27. Alternar foreground entre procesos top [Ctrl+Z] ping 8.8.8.8 > /dev/null & jobs tail f /var/log/dmesg > /dev/null & jobs > /dev/zero [Ctrl+Z]ping 8.8.4.4 jobs bg 4 jobs fg 3 [Ctrl+Z] jobs l fg ps
  • 28. Más herramientas... ● ● ● ● ● Listar procesos: pgrep, atop Enviar señales: killall, pkill, skill Esperar procesos: wait Medir procesos: time “Inmortalizar” procesos: nohup, disown
  • 29. Referencias ● An overview of Linux processes - [https://www.ibm.com/developerworks/community/blogs/58e72888-6340-46ac-b488- d31aa4058e9c/entry/an_overview_of_linux_processes21] ● ● ● ● ● Parent process - [http://en.wikipedia.org/wiki/Parent_process] Linux Filesystem Hierarchy - 1.14. /proc - [http://www.tldp.org/LDP/Linux- Filesystem-Hierarchy/html/proc.html] Everything is a file - [http://en.wikipedia.org/wiki/Everything_is_a_file] Prioridades de ejecución de procesos - [http://www.ibm.com/developerworks/ssa/linux/library/l-lpic1-v3-103-6/] Introduction To Unix Signals Programming - [http://titania.ctie.monash.edu.au/signals/]