Los demonios trabajan duro para que tú no tengas que hacerlo.
Imagina que estás escribiendo un artículo, una página web o un libro. Tu intención es precisamente eso: escribir. Es bastante agradable no tener que iniciar manualmente los servicios de impresora y de red y luego monitorearlos todo el día para asegurarse de que estén funcionando correctamente.
Podemos agradecer a los demonios por eso, hacen ese tipo de trabajo por nosotros.
¿Qué es un demonio en Linux?
Un demonio (generalmente pronunciado como: day-mon
, pero a veces se pronuncia como si rima con diamond
) es un programa con un propósito único. Son programas de utilidad que se ejecutan silenciosamente en segundo plano para monitorear y cuidar ciertos subsistemas para garantizar que el sistema operativo se ejecute correctamente. Un demonio de impresora supervisa y se encarga de los servicios de impresión. Un demonio de red supervisa y mantiene las comunicaciones de red, etc.
Habiendo repasado la pronunciación de daemon, agregaré que, si quieres pronunciarlo como demon, no me quejaré.
Para aquellas personas que vienen a Linux desde el mundo de Windows, los demonios se conocen como servicios. Para los usuarios de Mac, el término servicios tiene un uso diferente. El sistema operativo de Mac es realmente UNIX, por lo que usa demonios. El término servicios se utiliza, pero solo para etiquetar el software que se encuentra bajo la Services
menú.
Los demonios realizan ciertas acciones en momentos predefinidos o en respuesta a ciertos eventos. Hay muchos demonios que se ejecutan en un sistema Linux, cada uno diseñado específicamente para vigilar su propia pequeña parte del sistema, y debido a que no están bajo el control directo de un usuario, son efectivamente invisibles, pero esenciales. Debido a que los demonios hacen la mayor parte de su trabajo en segundo plano, pueden parecer un poco misteriosos y, por lo tanto, quizás difíciles de identificar y de lo que realmente hacen.
¿Qué demonios se están ejecutando en su máquina?
Para identificar un demonio, busque un proceso que termine con la letra d. Es una regla general de Linux que los nombres de los demonios terminen de esta manera.
Hay muchas formas de vislumbrar un demonio en ejecución. Pueden verse en listados de procesos a través de ps
, top
, o htop
. Estos son programas útiles por derecho propio: tienen un propósito específico, pero para ver todos los demonios que se ejecutan en su máquina, el pstree
El comando se adaptará mejor a nuestra discusión.
El pstree
command es una pequeña utilidad útil que muestra los procesos que se están ejecutando actualmente en su sistema y los muestra en un diagrama de árbol. Abra una terminal y escriba este comando:
pstree
Verá una lista completa de todos los procesos que se están ejecutando. Es posible que no sepa cuáles son algunos de ellos, o qué hacen, están enumerados. El pstree
La salida es una buena ilustración de lo que está sucediendo con su máquina. ¡Están pasando muchas cosas!
demonio – ejecución de pstree completada
Mirando la captura de pantalla, se pueden ver algunos demonios aquí: udisksd, gvfsd, sistema, Iniciar sesión y algunos otros.
Nuestra lista de procesos era lo suficientemente larga como para que la lista no pudiera caber en una sola ventana de terminal, pero podemos desplazarnos hacia arriba usando el mouse o las teclas del cursor:
demonio – parte superior de pstree
Demonios de desove
Imagen solo con fines de representación
Nuevamente, un demonio es un proceso que se ejecuta en segundo plano y generalmente está fuera del control del usuario. Se dice que un demonio no tiene una terminal de control.
Un proceso es un programa en ejecución. En un instante particular de tiempo, puede estar en ejecución, durmiendo o zombi (un proceso que completó su tarea, pero esperando que su proceso padre acepte el valor de retorno).
En Linux, hay tres tipos de procesos: interactivo, por lotes y demonio.
Los procesos interactivos son aquellos que son ejecutados por un usuario en la línea de comando y se denominan procesos interactivos.
Los procesos por lotes son procesos que no están asociados con la línea de comando y se presentan a partir de una lista de procesos. Piense en estos como “grupos de tareas”. Estos son mejores en momentos en que el uso del sistema es bajo. Copias de seguridad del sistema, para example, generalmente se ejecutan por la noche, ya que los trabajadores diurnos no utilizan el sistema. Cuando era administrador de sistemas a tiempo completo, solía ejecutar inventarios de uso del disco, scripts de análisis del comportamiento del sistema, etc., por la noche.
Los procesos interactivos y los trabajos por lotes no son demonios, aunque pueden ejecutarse en segundo plano y pueden realizar algún trabajo de supervisión. La clave es que estos dos tipos de procesos involucran la participación humana a través de algún tipo de control terminal. Los demonios no necesitan una persona para iniciarlos.
Sabemos que un demonio es un programa de computadora que se ejecuta como un proceso en segundo plano, en lugar de estar bajo el control directo de un usuario interactivo. Cuando se completa el arranque del sistema, el proceso de inicialización del sistema comienza a generar (crear) demonios a través de un método llamado bifurcación, eliminando la necesidad de una terminal (esto es lo que se entiende por no controlar la terminal).
No entraré en todos los detalles del proceso de bifurcación, pero espero poder ser lo suficientemente breve como para mostrar un poco de información de fondo para describir lo que se hizo. Si bien existen otros métodos para crear procesos, tradicionalmente en Linux, la forma de crear un proceso es haciendo una copia de un proceso existente para crear un proceso hijo. Luego se realiza una llamada al sistema ejecutivo para iniciar otro programa.
Por cierto, el término bifurcación no es arbitrario. Recibe su nombre del lenguaje de programación C. Una de las bibliotecas que utiliza C se llama biblioteca estándar y contiene métodos para realizar servicios operativos. Uno de estos métodos, llamado fork, está dedicado a crear nuevos procesos. El proceso que inicia una bifurcación se considera el proceso padre del proceso hijo recién creado.
El proceso que crea demonios es la inicialización (llamado init
) proceso bifurcando su propio proceso para crear otros nuevos. Hecho de esta manera, el init
El proceso es el proceso principal absoluto.
Hay otra forma de generar un demonio y es que otro proceso bifurque un proceso hijo y luego muera (un término que se usa a menudo en lugar de salida). Cuando el padre muere, el proceso hijo se convierte en huérfano. Cuando un proceso hijo queda huérfano, es adoptado por el init
proceso.
Si escuchas discusiones, o lees material en línea, sobre demonios que tienen “un ID de proceso principal de 1”, esta es la razón. Algunos demonios no se generan en el momento del arranque, sino que son creados más tarde por otro proceso que murió, y init
lo adoptó.
Es importante que no confunda esto con un zombi. Recuerde, un zombi es un proceso hijo que ha terminado su tarea y está esperando que el padre acepte el estado de salida.
Ejemplos de demonios de Linux
Nuevamente, la forma más común de identificar un demonio de Linux es buscar un servicio que termine con la letra d. A continuación se muestran algunos ejemplos de demonios que pueden estar ejecutándose en su sistema. Podrá ver que los demonios se crean para realizar un conjunto específico de tareas:
systemd
– el propósito principal de este demonio es unificar la configuración y el comportamiento del servicio en las distribuciones de Linux.
rsyslogd
– utilizado para registrar mensajes del sistema. Esta es una versión más nueva de syslogd
que tiene varias características adicionales. Admite el registro en sistemas locales y en sistemas remotos.
udisksd
– maneja operaciones como consultar, montar, desmontar, formatear o desconectar dispositivos de almacenamiento como discos duros o memorias USB
logind
– un pequeño demonio que gestiona los inicios de sesión y los asientos de los usuarios de varias formas
httpd
– el administrador de servicios HTTP. Esto normalmente se ejecuta con software de servidor web como Apache.
sshd
– Demonio encargado de gestionar el servicio SSH. Se utiliza en prácticamente cualquier servidor que acepte conexiones SSH.
ftpd
– administra el servicio FTP – FTP o Protocolo de transferencia de archivos es un protocolo de uso común para transferir archivos entre computadoras; uno actúa como cliente, el otro actúa como servidor.
crond
– el demonio del planificador para acciones basadas en el tiempo, como actualizaciones de software o comprobaciones del sistema.
¿Cuál es el origen de la palabra, demonio?
Cuando comencé a escribir este artículo, planeaba cubrir solo lo que es un demonio y dejarlo así. Trabajé con UNIX antes de que apareciera Linux. En aquel entonces, pensaba en un demonio como era: un proceso en segundo plano que realizaba tareas del sistema. Realmente no me importaba cómo obtuvo su nombre. Con conversaciones adicionales sobre otras cosas, como zombis y huérfanos, me di cuenta de que los creadores del sistema operativo tenían un sentido del humor deformado (muy parecido al mío).
Siempre investigo un poco cada pieza que escribo y me sorprendió saber que, aparentemente, muchas otras personas querían saber cómo surgió la palabra y por qué.
La palabra ciertamente ha generado un poco de curiosidad y, después de leer varios intercambios animados, admito que yo también sentí curiosidad. Realice una búsqueda sobre el significado o etimología de la palabra (el origen de las palabras) y encontrará varias respuestas.
Con el fin de contribuir a la discusión, aquí está mi opinión al respecto.
La forma más antigua de la palabra, daemon, se deletreaba como daimon, una forma de ángel de la guarda: espíritus asistentes que ayudaron a formar el carácter de las personas a las que asistían. Sócrates afirmó tener uno que le servía de forma limitada, pero correcta. El daimon de Sócrates solo le dijo cuándo debía mantener la boca cerrada. Sócrates describió a su daimon durante su juicio en el 399 a. C., por lo que la creencia en los daimons ha existido durante bastante tiempo. A veces, la ortografía de daimon se muestra como daemon. Daimon y daemon, aquí, significan lo mismo.
Mientras que un demonio es un asistente, un demonio es un personaje maligno de la Biblia. Las diferencias en la ortografía son intencionales y aparentemente se decidieron en el siglo XVI. Los demonios son los buenos y los demonios los malos.
El uso de la palabra demonio en informática se produjo en 1963. Proyecto MAC es la abreviatura de Project on Mathematics and Computation, y fue creado en el Instituto de Tecnología de Massachusetts. Fue aquí donde la palabra, demonio, entró en uso común para significar cualquier proceso del sistema que monitorea otras tareas y realiza acciones predeterminadas dependiendo de su comportamiento, la palabra, daemon fue nombrada El demonio de Maxwell.
El demonio de Maxwell es el resultado de un experimento mental. En 1871, James Clerk Maxwell Imaginó un ser inteligente e ingenioso que era capaz de observar y dirigir el viaje de moléculas individuales en una dirección específica. El propósito del ejercicio de pensamiento era mostrar la posibilidad de contradecir la segunda ley de la termodinámica.
Vi algunos comentarios de que la palabra, daemon, era un acrónimo de Disk And Executive MONitor
. Los usuarios originales de la palabra, daemon, nunca lo usé para ese propósito, por lo que la idea del acrónimo, creo, es incorrecta.
Por último, para terminar con esto en una nota ligera, está la mascota de BSD: un demonio que tiene la apariencia de un demonio. El demonio BSD recibió su nombre de los demonios de software, pero adquiere su apariencia al jugar con la palabra.
El nombre del demonio es Beastie. No he investigado esto completamente (todavía), pero encontré un comentario que dice que Beastie proviene de arrastrar las letras, BSD. Intentalo; Hice. Diga las letras lo más rápido que pueda y saldrá un sonido muy parecido a beastie.
Beastie se ve a menudo con un tridente que simboliza la bifurcación de procesos de un demonio.