Herramientas de usuario

Herramientas del sitio


linux:administracionprocesos

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
linux:administracionprocesos [2018/12/21 11:43] – [Monitor del sistema] albertolinux:administracionprocesos [2018/12/23 17:36] (actual) – ↷ Página movida de linux:gestionsistema:administracionprocesos a linux:administracionprocesos alberto
Línea 1: Línea 1:
 ====== Administración de procesos ====== ====== Administración de procesos ======
 +Un proceso es un programa que se está ejecutando, ya sea por el usuario o por el sistema Linux.\\
 +Linux puede ejecutar programas en segundo plano "transparentes al usuario", así como varios programas al mismo tiempo, por lo que se le denomina "multitarea".\\
 +Cuando un programa se está ejecutando en segundo plano hasta el infinito, se denomina "demonio" y suele llevar como última letra la **d**. Ejemplo: httpd (servidor web apache), crond (planificador de tareas de Linux), etc.\\
  
 +Todo proceso se identifica con un número de identificación denominado PID (//Process IDentifier//).\\
 +Para crear procesos, el núcleo Linux provee de dos instrucciones (existentes en cualquier lenguaje de programación):
 +  * **fork**: crea un proceso "hijo" de uno principal.
 +  * **exec**: ejecuta el código que sea necesario en ese proceso.
  
-===== Monitor del sistema =====+De esta forma, todo proceso es hijo de otro, creándose de esta manera un árbol de procesos.\\  
 +El primer proceso del sistema Linux es **init**, su PID es 1 y todos los demás cuelgan de él. No es posible conocer a priori el PID de cualquier otro proceso hijo. 
 + 
 +===== Visualización de procesos ===== 
 +==== ps ==== 
 +Permite ver la lista de procesos del sistema. Extrae toda la información del pseudosistema de archivos **/proc** en el que el núcleo de Linux coloca toda la información respecto al estado del sistema en curso de ejecución.\\ 
 +Tiene muchas opciones, que conviene consultarlas con la opción --help((La versión en español del manual puede estar obsoleta en algunos casos. Pueden verse las páginas del manual en el lenguaje internacional ANSI C (aunque se haya instalado la distribución en español) modificando la variable de entorno $LANG, escribiendo **LANG=C** en el //shell//.)), aunque de forma predeterminada muestra únicamente los procesos iniciados por el usuario desde el terminal.\\ 
 + 
 +Opciones comunes: 
 +  * **ps aux**: Muestra los procesos de todos los usuarios(**a**), y los que no están vinculados a un terminal (**x**), especificando el nombre de usuario y la fecha de inicio (**u**). 
 +  * **ps -ef**: Muestra todos los procesos(**-e**) y mucha información (**-f**). 
 +    * **%CPU** Porcentaje de tiempo que se ha usado el procesador desde la ejecución del comando. 
 +    * **%MEM** Porcentaje de uso de la memoria disponible. 
 +    * **COMMAND** o **CMD** Nombre del comando que originó el proceso. 
 +    * **GID** o **GROUP** Identificación del grupo bajo el que se ejecuta el proceso. 
 +    * **NI** Nivel de prioridad del proceso. 
 +    * **PID** Identificación del proceso. 
 +    * **PPID** Identificación del proceso padre. 
 +    * **RSS** Cantidad de memoria RAM utilizada en KB. 
 +    * **START** o **STIME** Fecha de lanzamiento del proceso. 
 +    * **STAT** Estado del proceso. Definido por tres caracteres: 
 +      * El primer carácter puede tomar alguno de estos valores: 
 +        * **R** Proceso ejecutándose (//Running//). 
 +        * **T** Proceso parado (//sTopped//). 
 +        * **S** Proceso dormido (//Sleeping//), esto es, en espera del procesador. 
 +        * **D** Proceso dormido en espera de un recurso (//Device//, normalmente de entrada/salida). No pueden interrumpirse. 
 +        * **Z** Proceso terminado. Se quedará en este estado hasta que el proceso padre se de cuenta y recupere su código de retorno (//Zombie//). No pueden interrumpirse. 
 +    * **TIME** Tiempo total de uso de la CPU para este proceso. 
 +    * **TT** o **TTY** Terminal al que está vinculado el proceso. Si no está asociado a ninguno (como un demonio) aparece el carácter **?**. 
 +    * **UID** o **USER**: Identificación del usuario bajo el que se ejecuta el proceso.  
 +==== top ==== 
 +Permite visualizar la actividad del procesador en tiempo real.\\ 
 +Tiene las mismas etiquetas que la instrucción **ps**, siendo posible modificar las columnas de información presentes y la ordenación de los procesos.\\ 
 +Con la tecla **[?]** visualizamos la ayuda del comando, y con la tecla **[q]** salimos de top. Para modificar los campos usamos la tecla **[f]**. También se puede enviar señales a los procesos con la tecla **[k]**.\\ 
 + 
 +Podemos usar el archivo de configuración **/etc/toprc** para establecer una configuración global para todos los usuarios y otro en **~/.toprc** (directorio personal del usuario), para establecer una configuración personalizada. 
 + 
 +==== pstree ==== 
 +Muestra los nombres de los procesos de forma jerárquica, lo que nos permite ver rápidamente la filiación de los mismos.\\ 
 +Con la opción **-p** se muestra el PID de cada uno de ellos.\\ 
 +Este comando muestra una línea cuando existen varias instancias del mismo proceso, y el número que aparece delante de ***** indica el número de instancias correspondientes. 
 + 
 +==== Monitor del sistema ====
 Aplicación gráfica que podemos iniciar escribiendo en el lanzador **Monitor del sistema**. Aplicación gráfica que podemos iniciar escribiendo en el lanzador **Monitor del sistema**.
  
Línea 9: Línea 58:
   * **Recursos**: Gráficas de uso de memoria, %CPU y red.   * **Recursos**: Gráficas de uso de memoria, %CPU y red.
   * **Sistemas de archivos**: Información acerca del % de uso del espacio de las particiones en uso por el sistema.   * **Sistemas de archivos**: Información acerca del % de uso del espacio de las particiones en uso por el sistema.
 +
 +===== Señales: kill y killall =====
 +Los comandos **kill** y **killall** permiten enviar señales a los procesos. \\
 +El comando **kill** espera un número de proceso como argumento, mientras que **killall** espera un comando. **killall** debe usarse con precaución, ya que envía la señal a todos los procesos con el nombre pasado como argumento.\\
 +
 +En ambos procesos es posible especificar la señal a enviar, aunque de forma predeterminada envían la señal 15 (SIGTERM, termina el proceso). Para obtener la lista completa de señales, se ejecuta **kill -l**. Para obtener información acerca de las señales, puede consultarse el manual, de la forma **man 7 signal**, así como leer el archivo **/uar/include/asm/signal.h**.
 +
 +
 +===== Trabajo con procesos =====
 +==== Iniciar un proceso. ====
 +Para iniciar un proceso, basta con introducir en el terminal el comando correspondiente. Esto hará que el proceso se ejecute en primer plano.\\
 +Si deseamos que el proceso se ejecute en segundo plano, y de esa forma no dejar sin uso el terminal, mientras éste se ejecuta, basta con introducir el carácter **&** al final de la línea del comando. Aparecerá entonces el PID de este proceso de forma informativa.\\
 +
 +==== Detener un proceso ====
 +En caso de que el proceso se ejecute en primer plano, hay tres maneras de pararlo:
 +  * **ctrl + c**: Se envía la señal 2 (SIGINT, finalización del proceso por interrupción desde el teclado) al proceso.
 +  * **ctrl + \**: Se envía la señal 3 (SIGQUIT, finalización del proceso, previo guardado del espacio de memoria en un archivo llamado //core// (útil para la depuración de aplicaciones).
 +  * Identificar el PID del proceso en otro terminal, y usar el comando **kill** de forma adecuada.
 +
 +En el caso de que el proceso se esté ejecutando en segundo plano, sólo puede detenerse identificando su PID y deteniéndolo a través del comando **kill**.
 +
 +==== Control de procesos ====
 +Al ser posible ejecutar varios procesos desde el mismo terminal al mismo tiempo (ya que algunos pueden estar ejecutándose en segundo plano), son necesarios algunos comandos para controlarlos.
 +
 +=== jobs: lista de procesos ===
 +El comando **jobs** lista la lista de procesos que han sido iniciados desde el terminal actual.
 +
 +=== bg y fg: toma de control de proceso ===
 +Si un proceso largo se ha iniciado en primer plano por error, no es necesario interrumpirlo para iniciarlo en segundo plano.\\
 +Hay que seguir estos pasos:
 +  - **ctrl + z**: El proceso se suspende y el usuario puede tomar de nuevo el control del terminal.
 +  - Se puede volver a ejecutar el proceso en primer plano con el comando **fg**, o en segundo plano con el comando **bg**.
 +  - Para ello hay que introducir como argumento el número de //job// del proceso (entre corchetes, cuando se ejecutra el comando **jobs**) precedido por **%** (sin espacios).
 +
linux/administracionprocesos.1545389010.txt.gz · Última modificación: por alberto

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki