hd porno ataşehir escort kadıköy escort ataşehir escort ümraniye escort kadıköy escort eskort

Informe de procesos en Linux

¿Qué es un proceso?


Los procesos son una instancia de un programa en funcionamiento. Un proceso es un programa o aplicación que se ejecuta en un momento determinado. En un sistema operativo existen una serie de procesos que se ejecutan constantemente y lo hacen utilizable.

Tipos de procesos

Básicamente hay dos: los procesos de usuario y los demonios:

  • Los procesos de usuario son los programas que utiliza el usuario generalmente y se encuentran conectados a una terminal. El programa aparecerá en pantalla e interactuará con el usuario.
  • Los demonios no están conectados a una terminal, funcionan solos y no interactúan con el usuario.

¿Qué es PID?

Es la segunda columna e indica el numero ID del proceso en cuestión. Este número es necesario para matar luego al proceso.
Para asignar el PID, el kernel utiliza internamente una variable global que se va incrementando con cada nuevo proceso creado con una llamada fork(). Cuando la variable alcanza un cierto valor límite se empieza otra vez desde 0, buscando números que no estén asignados ya a otro proceso en ejecución.

¿Qué es el Proceso Padre?

Los procesos en GNU/Linux son organizados de forma jerárquica, cada proceso es lanzado por un proceso padre y es denominado proceso hijo. De está forma, todos los procesos en GNU/Linux son hijos de init ya que este es el primer proceso que se ejecuta al iniciar el ordenador y éste es padre de todos los procesos. Si se mata al proceso padre, también desaparecerán los procesos hijos.

Proceso /sbin/init

En sistemas Unix y de tipo Unix, init (abreviatura de initialization) es el primer proceso en ejecución tras la carga del kernel y el que a su vez genera todos los demás procesos. Se ejecuta como demonio y por lo general tiene PID 1.

Tradicionalmente, esta funcionalidad se ha implementado de forma distinta en los dos grandes universos Unix: System V y BSD. En el Unix original, el proceso init arrancaba los servicios de mediante un único script denominado /etc/rc. Posteriormente, la versión System V del Unix de AT&T introdujo un nuevo esquema de directorios en /etc/rc.d/ que contenía scripts de arranque/parada de servicios.

Mecanismo forking (bifurcado de procesos)

Los nuevos procesos se crean mediante una técnica llamada forking. Cuando un proceso se bifurca, crea un duplicado de sí mismo. Inmediatamente después de una bifurcación, el proceso recién creado (el hijo) es un duplicado exacto del proceso original (el padre). El hijo hereda una copia idéntica de la memoria del proceso original, los archivos abiertos de padre, copias idénticas de los parámetros del padre, tales como el directorio de trabajo actual o umask.

Mecanismo execing (Ejecución de un nuevo comando)

Los nuevos comandos se ejecutan a través de un técnica llamada execing (abreviatura en inglés para executing). Cuando se ejecuta un nuevo comando, el proceso actual borra y libera la mayoría de sus recursos y carga una nueva colección de instrucciones desde el comando especificado en el sistema de archivos. La ejecución inicia con el punto de entrada del nuevo programa.

Los 5 estados de los procesos

  1. Ejecutable: Son procesos que si tienen la oportunidad de acceder la CPU, la aprovecharán. Los procesos múltiples suelen estar en un estado de ejecución, pero como sólo puede ejecutarse un proceso en la CPU en determinado tiempo, sólo uno de estos procesos en realidad estará ejecutándose en un momento dado. Puesto que los procesos de ejecución entran y salen de la CPU tan rápidamente en el sistema de Linux, parece como si todos los procesos se estuvieran ejecutando de manera simultánea.
  2. Dormido voluntario (interrumpible) (S): Es un proceso que no tiene nada que hacer hasta que suceda algo interesante. Un ejemplo clásico es el comando top, que lista procesos cada cinco segundos. Mientras espera que pasen los cinco segundos, se duerme voluntariamente.
  3. Dormido involuntario (no interrumpible) (D): En ocasiones, dos procesos tratan de acceder al mismo recurso de sistema al mismo tiempo. En estas situaciones, el kernel fuerza al proceso a dormir. Cuando el recurso es liberado, el kernel pondrá el proceso de nuevo en su estado ejecutable. Aunque los procesos están constantemente durmiendo involuntariamente, no suelen estarlo por mucho tiempo. Como resultado, los usuarios no suelen ver los procesos en dormido involuntario, excepto en sistemas ocupados.
  4. Procesos detenidos (suspendidos) (T): Ocasionalmente, los usuarios deciden suspender procesos. Los procesos suspendidos no realizarán ninguna acción hasta no ser reiniciados por el usuario. En la shell bash, la secuencia de teclas CONTROL-Z puede utilizarse para suspender un proceso.
  5. Procesos zombi (Z): Cada proceso muriendo pasa a través de un estado zombi transitorio. No obstante, en ocasiones, algunos se quedan en ese estado. Los procesos zombis han terminado de ejecutar, han liberado toda su memoria y casi todos sus recursos. Dado que no están consumiendo recursos, son poco más que una molestia que puede aparecer en listados de procesos.

Comando PSTREE

Debido a que cada proceso a excepción del primero se crea por bifurcación, dentro de los procesos existe un linaje bien definido de relaciones padre e hijo. El primer proceso iniciado por el kernel inicia fuera del árbol de familia, el cual puede examinarse con el comando pstree.

En otras palabras, el comando pstree muestra un árbol de los procesos.

Creación de procesos huérfanos

Un proceso huérfano se crea al morir el proceso padre antes que el proceso hijo.
Una de las responsabilidades especiales del primer proceso iniciado por el kernel (init) es “adoptar” huérfanos.

Comando TOP

El comando TOP muestra a tiempo real un listado de los procesos que se están ejecutando en el sistema, especificando además el % de Cpu y Memoria que están utilizando, sus IDs, usuarios que lo están ejecutando, etc. Todo esto y mucho más lo hace una de las herramientas imprescindibles para la administración de cualquier tipo de sistema Unix y derivado.

La salida por pantalla de Top, puede dividirse en dos partes, la “cabecera” muestra entre otras cosas, el Uptime del servidor, nº de usuarios conectados y load average. En la siguiente línea podemos ver el nº de procesos ejecutándose en el sistema, así como el uso de disco, memoria y CPUs.

Posteriormente podemos observar un listado de procesos, que pueden ser ordenados por uso de CPU o memoria, lo que es una excelente ayuda para detectar procesos que consumen excesivos recursos en el servidor. Este listado, muestra varios detalles de cada uno de los procesos, como pueden ser el PID de proceso, usuario que lo ejecuta, % CPU y memoria que consume, comando que está ejecutando o tiempo de ejecución del proceso entre otros.

Diferencia entre comandos TOP y PS

El comando TOP actualiza constantemente los procesos que están en ejecución (muestra en tiempo real) y PS sólo muestra una captura de los procesos.
El comando TOP ordena los procesos por porcentaje de CPU utilizado y el comando PS los ordena por PID.

Proceso NICENESS

NICENESS es el valor estático de un proceso. Este valor tiene un rango que va de -20 a 19 para cualquier proceso, iniciando en 0 por defecto.

El comando nice en Linux nos permite modificar la prioridad de un proceso frente al resto dentro del sistema. El kernel Linux es el encargado de planificar y asignar tiempo de CPU a cada uno de los procesos que corren en el sistema. El rango de asignación de prioridad disponible es de -20 a 20, siendo -20 la mayor prioridad y 20 la menor. Gracias a nice podemos asegurarnos que en momentos de usos elevados de CPU los procesos adecuados reciban el mayor % de la misma.

Proceso RENICE

El comando renice puede utilizarse para cambiar el niceness de un proceso en ejecución. Los procesos pueden ser especificados por el ID del proceso, nombre de usuario, o nombre de grupo, dependiendo de cuál de las siguientes opciones se utilicen.

Opciones comando RENICE:

  • -p interpreta los argumentos restantes como ID del proceso (por defecto)
  • -u interpreta los argumentos restantes como nombres de usuarios.
  • -g interpreta los argumentos restantes como ID de grupo.

El comando renice a diferencia del comando nice, no espera que el valor de niceness sea especificado como una opción, sino como un argumento.

Como se puede apreciar, ha cambiado el NI a -15 con el comando renice.

Comando KILL

El comando kill se utiliza para enviar señales a otros procesos. Éste espera ser llamado con una opción numérica o simbólica que especifica la señal a enviar y un ID de proceso que especifica el proceso que debería recibirlo.

Por defecto el mensaje que se envía es la señal de terminación (SIGTERM), que solicita al proceso limpiar su estado y salir.

El comando kill –l muestra una lista de señales con su respectivo número de señal.

Algunas señales útiles son:

SIGKILL: es la señal que se envía a un proceso para que termine inmediatamente.

La forma de utilizar el comando es la siguiente:

PID es el ID del proceso a terminar.

SIGSTOP: es la señal que se envía a un proceso para que se detenga.

La forma de utilizar el comando es la siguiente:

PID es el ID del proceso a detener.

SIGCONT: es la señal que se envía a un proceso para que se reinicie.

La forma de utilizar el comando es la siguiente:

PID es el ID del proceso a reiniciar.

El comando kill posee los siguientes atributos:

  •  -s: Especifica la señal a enviar. La señal puede ser un nombre de señal o un número.
  •  -l: Escribe todos los valores de señal soportados por la implementación, si no se da ningún operando.
  •  -pid: Identificador de proceso o trabajo.
  •  -9: Fuerza el kill de un proceso.

Comando PKILL

El comando pkill se puede utilizar para enviar señales a procesos seleccionados por medios más generales. El comando pkill espera la siguiente sintaxis.

pkill [-signal] [OPCIONES] [PATRÓN]

El primer símbolo especifica opcionalmente el número de señal para enviar (por defecto, el número de señal 15). PATTERN es una expresión regular extendida que coincidirá con nombres de comandos. El siguiente cuadro lista las opciones de comando más utilizadas. Los procesos que cumplen con todos los criterios especificados enviarán la señal especificada.

Opciones del comando pkill:

  • -n: Selecciona únicamente los procesos coincidentes iniciados más recientemente.
  • -u: USER Selecciona procesos pertenecientes al usuario USER.
  • -t: TERM Selecciona procesos controlados por terminal TERM.

Comando KILLALL

Igual que pkill, el comando killall envía señales a procesos especificados por el nombre de comando.

Opciones del comando killall:

  • -i, –interactive: De modo interactivo pregunta al usuario antes de enviar la señal a un proceso.
  • -w, –wait: Espera hasta que todos los procesos estén muertos antes de retornar.

Secuencias de teclas

CTRL-Z: se utiliza para suspender procesos.

BG: El comando bg se utiliza para mover un trabajo a segundo plano. El usuario puede ejecutar un proceso en segundo plano añadiendo un símbolo “&” al final del comando.

La sintaxis es: bg [opciones] [proceso]

Posee las siguientes opciones:

  • -l: Informa del identificador del grupo de proceso y la carpeta de trabajo de las operaciones.
  • -p: Informa únicamente del identificador del grupo de proceso de las operaciones.
  • -x: Sustituye cualquier job_id encontrado en el comando o argumentos con el identificador de grupo de proceso correspondiente, después ejecuta el comando dándole argumentos.
  • Job: Especifica el proceso que quiere ejecutarse en segundo plano.

FG: Un trabajo de segundo plano puede traerse al primer plano con el comando incorporado fg. El comando fg espera un número de trabajo como un argumento o si ninguno es provisto pondrá el trabajo actual en primer plano.

La sintaxis es: fg [especifica proceso]

AT: El comando at se utiliza para someter trabajos al demonio atd para que se ejecuten en una hora específica. Los comandos que se van a ejecutar son sometidos ya sea como script (con la opción -f) o escritos directamente via la stdin. La salida estándar del comando se envía por correo al usuario.

La sintaxis es: at [[-f filename] | [-m]] TIME

Posee las siguientes opciones:

  • -f filename: ejecuta el script especificado por el nombre de archivo.
  • -m: Notifica al usuario por correo electrónico cuando se ejecuta, incluso si no hay salida.

Comandos relacionados con AT:

  • atd: El demonio que ejecuta trabajos sometidos. Los usuarios no utilizan el comando atd directamente.
  • at: Somete trabajos al demonio atd para que se ejecuten en un tiempo específico.
  • batch: Somete trabajos al demonio atd para que se ejecuten cuando el sistema no esté ocupado.
  • atq: Lista trabajos en espera con el demonio atd.
  • atrm: Cancela un trabajo en espera con el demonio atd antes de ejecutarse.

Enviar procesos a segundo plano

Para enviar procesos a segundo plano, se debe utilizar el comando BG.

La sintaxis es: bg [opciones] [proceso]

El siguiente es un ejemplo