Introducción
un servidor Linux, como cualquier otro equipo con el que esté familiarizado, ejecuta aplicaciones. Para el ordenador, Estos son considerados «procesos».
mientras que Linux se encargará de la gestión de bajo nivel, detrás de escena en el ciclo de vida de un proceso, necesitará una forma de interactuar con el sistema operativo para administrarlo desde un nivel superior.
en esta guía, discutiremos algunos aspectos simples de la gestión de procesos. Linux proporciona una abundante colección de herramientas para este propósito.,
exploraremos estas ideas en un Ubuntu 12.04 VPS, pero cualquier distribución moderna de Linux funcionará de una manera similar.
Cómo ver los procesos en ejecución en Linux
top
la forma más fácil de averiguar qué procesos se están ejecutando en su servidor es ejecutar el comando top
:
top
la parte superior de la información proporciona estadísticas del sistema, como la carga del sistema y el número total de tareas.
Puede ver fácilmente que hay 1 proceso en ejecución, y 55 procesos están durmiendo (también conocido como inactivos/sin usar recursos de CPU).,
la parte inferior tiene los procesos en ejecución y sus estadísticas de uso.
htop
Una versión mejorada de top
llamado htop
, se encuentra disponible en los repositorios. Instalar con este comando:
sudo apt-get install htop
Si ejecutamos el htop
comando, veremos que hay una más fácil visualización:
htop
Usted puede aprender más acerca de cómo utilizar la parte superior y htop aquí.,
cómo usar ps para listar procesos
tanto top
como htop
proporcionan una interfaz agradable para ver los procesos en ejecución similar a un administrador de tareas gráfico.
sin embargo, estas herramientas no siempre son lo suficientemente flexibles para cubrir adecuadamente todos los escenarios. Un poderoso comando llamado ps
es a menudo la respuesta a estos problemas.,
Cuando se llama sin argumentos, la salida puede ser un poco lack-luster:
ps
PID TTY TIME CMD 1017 pts/0 00:00:00 bash 1262 pts/0 00:00:00 ps
esta salida muestra todos los procesos asociados con la sesión de usuario y terminal actual. Esto tiene sentido porque solo estamos ejecutando bash
y ps
con este terminal actualmente.,
para obtener una imagen más completa de los procesos en este sistema, podemos ejecutar lo siguiente:
ps aux
estas opciones le dicen a ps
para mostrar los procesos propiedad de todos los usuarios (independientemente de su asociación de terminales) en un formato fácil de usar.
para ver una vista en árbol, donde se ilustran las relaciones jerárquicas, podemos ejecutar el comando con estas opciones:
ps axjf
como puede ver, el proceso kthreadd
se muestra como un padre del proceso ksoftirqd/0
y los demás.,
una nota sobre los ID de proceso
en sistemas Linux y Unix, a cada proceso se le asigna un ID de proceso, o PID. Así es como el sistema operativo identifica y realiza un seguimiento de los procesos.
Una forma rápida de obtener el PID de un proceso es con la etiqueta pgrep
comandos:
pgrep bash
1017
Esto simplemente consulta el proceso de IDENTIFICACIÓN y devolución.
el primer proceso generado en el arranque, llamado init, recibe el PID de «1».,
pgrep init
1
Este proceso es responsable de generar todos los demás procesos en el sistema. Los procesos posteriores reciben números PID más grandes.
el padre de un proceso es el proceso responsable de generarlo. Los procesos padre tienen un PPID, que puede ver en los encabezados de columna en muchas aplicaciones de administración de procesos, incluidas top
, htop
y ps
.,
cualquier comunicación entre el Usuario y el sistema operativo sobre los procesos implica la traducción entre los nombres de los procesos y los PIDs en algún momento durante la operación. Es por eso que las utilidades le dicen el PID.
relaciones padre-hijo
la creación de un proceso hijo ocurre en dos pasos: fork(), que crea un nuevo espacio de direcciones y copia los recursos propiedad del padre a través de copy-on-write para estar disponible para el proceso hijo; y exec(), que carga un ejecutable en el espacio de direcciones y lo ejecuta.,
en el caso de que un proceso hijo muera antes que su padre, el hijo se convierte en un zombi hasta que el padre haya recopilado información sobre él o indicado al núcleo que no necesita esa información. Los recursos del proceso hijo serán liberados. Sin embargo, si el proceso padre muere antes que el niño, el niño será adoptado por init, aunque también puede ser reasignado a otro proceso.
cómo enviar señales de procesos en Linux
todos los procesos en Linux responden a señales. Las señales son una forma a nivel del sistema operativo de decirle a los programas que terminen o modifiquen su comportamiento.,
cómo enviar señales de procesos por PID
la forma más común de pasar señales a un programa es con el comando kill
.
Como era de esperar, la funcionalidad por defecto de esta utilidad es intentar matar a un proceso de:
<pre>
matar <span class=»highlight»>PIDoftarget_process</span>
</pre>
Esto envía el TÉRMINO de la señal para el proceso., La señal de término le dice al proceso que por favor termine. Esto permite que el programa realice operaciones de limpieza y salga sin problemas.,
Si el programa se está portando mal y no sale cuando se le da el TÉRMINO de la señal, podemos escalar la señal al pasar el KILL
señal:
<pre>
kill-KILL <span class=»highlight»>PIDoftarget_process</span>
</pre>
Esto es una señal especial que no se envía al programa.,
en su lugar, se le da al kernel del sistema operativo, que apaga el proceso. Esto se usa para omitir programas que ignoran las señales que se les envían.
cada señal tiene un número asociado que se puede pasar en lugar del nombre. Por ejemplo, puede pasar «-15 «en lugar de»- TERM», y» -9 «en lugar de»- KILL».
Cómo utilizar señales para otros fines
Las señales no solo se utilizan para apagar programas. También se pueden utilizar para realizar otras acciones.
por ejemplo, muchos demonios se reiniciarán cuando se les dé la señal HUP
, o hang-up., Apache es un programa que funciona así.
<pre>
sudo kill-HUP <span class=»highlight»>pidofapache</span>
</pre>
El comando anterior será causa de Apache para volver a cargar su archivo de configuración y reanudar la porción de contenido.,
Puede enumerar todas las señales que se pueden enviar con kill escribiendo:
kill -l
cómo enviar señales de procesos por nombre
aunque la forma convencional de enviar señales es a través del uso de PIDs, también hay métodos para hacer esto con nombres de procesos regulares.,
El pkill
comando funciona en casi exactamente de la misma manera como kill
, pero opera en un proceso nombre:
pkill -9 ping
El comando anterior es equivalente a:
kill -9 `pgrep ping`
Si usted quiere enviar una señal a cada instancia de un proceso determinado, puede utilizar la etiqueta killall
comandos:
killall firefox
El comando enviar el TÉRMINO de la señal para cada instancia de firefox que se ejecutan en el equipo.,
cómo ajustar las prioridades del proceso
a menudo, querrá ajustar qué procesos tienen prioridad en un entorno de servidor.
algunos procesos pueden considerarse de misión crítica para su situación, mientras que otros pueden ejecutarse siempre que haya recursos sobrantes.
Linux controla la prioridad a través de un valor llamado niceness.
Las tareas de alta prioridad se consideran menos agradables, porque no comparten recursos también. Los procesos de baja prioridad, por otro lado, son agradables porque insisten en tomar solo recursos mínimos.,
cuando ejecutamos top
al principio del artículo, había una columna marcada con «NI». Este es el valor nice del proceso:
top
los valores Nice pueden variar entre «-19 / -20» (prioridad más alta) y «19/20» (prioridad MÁS BAJA) dependiendo del sistema.,
To run a program with a certain nice value, we can use the nice
command:
<pre>
nice -n 15 <span class=»highlight”>commandtoexecute</span>
</pre>
This only works when beginning a new program.,=»9b4b74b24a»>:
<pre>
renice 0 <span class=»highlight»>pidtoprioritize</span>
</pre>
nota: mientras que nice opera con un nombre de comando por necesidad, renice Opera llamando al proceso pid
conclusión
la gestión de procesos es un tema que a veces es difícil de entender para los nuevos usuarios porque las herramientas utilizadas son diferentes de sus contrapartes gráficas.,
sin embargo, las ideas son familiares e intuitivas, y con un poco de práctica, se volverán naturales. Debido a que los procesos están involucrados en todo lo que haces con un sistema informático, aprender a controlarlos de manera efectiva es una habilidad esencial.
<div class=»autor»>Por Justin Ellingwood</div>
Leave a Reply