logo

Demonio de Linux

¿Qué es un demonio?

Un demonio es un tipo de programa sobre un sistema operativo tipo UNIX que se ejecuta discretamente en segundo plano, en lugar de hacerlo mediante el acceso directo de un usuario. Espera a ser activado por la aparición de una condición o evento particular.

Normalmente, los sistemas tipo UNIX ejecutan numerosos demonios, principalmente para atender solicitudes de servicios a través de otros sistemas en la red, para la actividad del hardware y también para responder a otros programas.

Ejemplos de condiciones o acciones que podrían activar demonios en la actividad pueden ser una fecha u hora particular, el paso de un intervalo de tiempo descrito, la recepción de una solicitud web o un correo electrónico creado a partir de una línea de comunicación específica y un archivo que llega a un directorio específico.

java final

No es obligatorio que el autor de una condición o acción sepa que el demonio está escuchando.

Sin embargo, los programas frecuentemente implementarían una acción solo porque saben que despertaría implícitamente un demonio.

Un demonio también se denomina procesos en segundo plano. Es un programa UNIX o Linux que se ejecuta en segundo plano. Casi todos los demonios contienen nombres que terminan con la letra 'd'. Por ejemplo, sshd, este gestiona las conexiones de acceso remoto SSH, o el demonio httpd que gestiona el servidor Apache. A menudo, Linux inicia demonios en el momento de inicio.

Varios scripts de shell se guardan dentro del directorio /etc/init.d. Estos scripts se utilizan para iniciar y detener demonios.

Procesos de Linux

Por lo general, los demonios se crean instancias como procesos. Estos procesos son las instancias en ejecución o ejecución de un programa. Un proceso es manejado por el núcleo, que es el núcleo del sistema operativo, y asigna todos los números de identificación de proceso especiales.

En Linux, existen principalmente tres tipos comunes de procesos que son los siguientes:

  • Lote
  • Interactivo
  • Demonio

El proceso por lotes se envía a través de una cola de procesos y no está relacionado con la línea de comando. Estos procesos son muy adecuados para realizar operaciones recurrentes si el uso del sistema es bajo.

El proceso interactivo lo ejecuta interactivamente el usuario en la línea de comando.

El demonio es identificado por un sistema como aquellos procesos cuyo proceso padre contiene un PID de uno.

Siempre define el proceso init. El proceso de inicio es el proceso inicial que comienza cuando se inicia un sistema Linux y permanece sobre el sistema hasta que se apaga.

software del sistema

El init puede adoptar cualquier tipo de proceso cuyo proceso padre termine o muera sin esperar el estado del proceso hijo.

Entonces, la técnica básica para iniciar el demonio es dividir o bifurcar dos o una vez y también permitir que los procesos principales finalicen mientras el proceso secundario comienza a implementar su función general.

Historia de los demonios

Algunos demonios se publican mediante scripts de inicio de System V. Estos son scripts o programas cortos que se pueden ejecutar automáticamente si el sistema se está iniciando. Pueden reproducirse a intervalos o sobrevivir durante la sesión.

Ahora, varios demonios se inician sólo según sea necesario y mediante un demonio (xinetd) en lugar de ejecutarse continuamente. El xinetd se conoce como superservidor TCP/IP.

Se inicia en el momento de inicio y también escucha varios puertos que están asignados a los procesos enumerados dentro del archivo de configuración, es decir, /etc/xinetd.conf o /etc/inetd.conf.

cuantas ciudades hay en estados unidos

Manualmente, también se pueden iniciar algunos demonios para que los inicien los programas de aplicación y el sistema operativo. Todos los demonios tienen un script individual en varios sistemas operativos tipo UNIX, incluido Linux, con el que se pueden reiniciar y finalizar.

La gestión de estos scripts se implementa según niveles de ejecución. El nivel de ejecución se puede definir como un estado operativo o de configuración de un sistema que solo permite que algunos procesos seleccionados estén disponibles. Comenzar en un nivel de ejecución distinto puede ayudar a resolver ciertos problemas o cuestiones, incluida la rectificación de errores del sistema.

Puntos clave de los demonios

Algunos puntos clave importantes de los Daemons se explican a continuación:

  • La palabra demonio proviene de la metodología griega demonio. Se trataba de seres sobrenaturales que se encontraban entre los mortales y los dioses y que poseían poderes o conocimientos únicos.
  • En 1963, el término demonio se aplicó por primera vez dentro del contexto de un sistema en el proyecto pionero MAC con la ayuda de IBM 7094.
  • Se inspiró en el demonio de la termodinámica y la física de Maxwell, que era un agente abstracto que soportaba tipos de moléculas de distintas velocidades y trabajaba en segundo plano incansablemente.
  • Posteriormente, el término se utilizó para describir los procesos en segundo plano que trabajaban incansablemente en la implementación de las tareas del sistema.
  • La primera computadora demonio fue un programa que creaba copias de seguridad en cinta automáticamente.
  • Este término se utilizó para el uso de computadoras. Era una forma abreviada de Disk and Execution MONitor.
  • Varios programas llamados servicios funcionan como demonios en el sistema operativo Microsoft Windows. Sin embargo, la palabra demonio a veces también se aplica a esos sistemas.

Implementación de demonios

Sistemas tipo Unix

El proceso de un sistema tipo Unix es un demonio si su proceso padre muere y este demonio es designado proceso de inicio (proceso número 1) como proceso padre y no contiene ningún terminal de control en el sentido estrictamente técnico.

Sin embargo, un demonio podría ser cualquier proceso en segundo plano, ya sea hijo del proceso de inicio o no.

La técnica básica para que un procedimiento se convierta en un demonio en un sistema tipo UNIX cuando el procedimiento se inicia a través de la línea de comando o scripts de inicio como el script System Starter o el script de inicio, implica:

  • Eliminar variables innecesarias a través del entorno opcionalmente.
  • Ejecutando como tarea en segundo plano saliendo y bifurcando. Permite que el padre del demonio (proceso de inicio o shell) reciba notificaciones de salida y continúe con la ejecución normal.
  • La separación a través de la sección de invocación, generalmente realizada mediante una operación individual, setsid():
    • Disociar a través del control tty.
    • Crear una sesión más nueva y convertirse en el líder de esa sesión.
    • Convertirse en el líder del grupo de proceso.
  • Si el demonio desea asegurarse de que no heredará un nuevo control tty, podría salir y bifurcarse nuevamente. Significa que ya no es ningún líder de sesión dentro de la nueva sesión y no puede heredar ningún control de tty.
  • Configurar el directorio de trabajo actual como directorio raíz para que el proceso no utilice ningún directorio que pueda estar sobre un sistema de archivos montado.
  • Modificar la umask a 0 para permitir create(), open() y otras llamadas del sistema operativo para facilitar su máscara de permiso y no depender de toda la umask de la persona que llama.
  • Redirigir los descriptores de archivo 0, 1 y 2 para las secuencias estándar (stderr, stdout, stdin) a un archivo de registro o /dev/null y cerrar todos los demás archivos descriptores adquiridos a través del proceso principal.

Cuando el proceso comienza con cualquier demonio de súper servidor como systemd, launchd o inetd, el súper servidor implementará esas funciones para este proceso, excepto aquellos demonios de estilo antiguo que no se transformaron para ejecutarse bajo systemd y se describen como servidores de datagramas multiproceso y Type=bifurcación. sobre inetd.

cadena java a json

MS-DOS

El programa tipo demonio se ejecutó como software de terminación y permanencia residente (en resumen, TSR) dentro de la plataforma Microsoft DOS.

WindowsNT

Los programas conocidos como servicios de Windows implementan las funciones de estos demonios en los sistemas Microsoft Windows NT. Se ejecutan como procesos y normalmente no interactúan con el mouse, el teclado y el monitor. Es posible que se inicien con la ayuda del sistema operativo en el momento del arranque.

Los servicios de Windows se detienen, inician y configuran manualmente mediante el Panel de control (un programa de control/configuración dedicado), el sistema de secuencias de comandos PowerShell o los comandos net stop y net start, el elemento controlador de servicios del administrador de control de servicios.

Sin embargo, cualquier aplicación de Windows puede implementar las responsabilidades de un demonio no solo como un servicio y algunos demonios de Windows contienen la opción de ejecutarse como un proceso normal.

macOS y Mac OS clásicos

Varios servicios y funciones opcionales se vieron facilitados por los archivos cargados en el momento del arranque que reconstruyen el sistema operativo en el Mac OS clásico.

Estos se denominaron paneles de control y extensiones del sistema. Las versiones posteriores del sistema operativo Mac estándar las ampliaron con aplicaciones de fondo sin rostro y completamente desarrolladas.

Estas aplicaciones son aplicaciones normales que se ejecutan en segundo plano. Estas todavía se especificaban como extensiones habituales del sistema para el usuario.

macOS es un sistema Unix y utiliza demonios. macOS aplica el término del servicio para designar software que implementa funciones elegidas a través del menú de servicios en lugar de aplicar ese término como lo hace Windows para los demonios.

Funciones típicas de demonios

  • Ejecute acciones programadas como cron.
  • Supervise sistemas como la matriz RAID o el estado del disco duro.
  • Responda a la solicitud de la red y abra el puerto de red (como el puerto 80).

¿Cómo iniciamos, reiniciamos o detenemos demonios para un indicador de shell?

Necesitamos aplicar sus comandos de servicio como se muestra a continuación:

 service daemon-name-here start service daemon-name-here stop service daemon-name-here restart 

En el siguiente ejemplo, estrellas, reiniciar y detener.

 service httpd start service httpd stop service httpd restart 

¿Cómo comprobamos la lista de cada demonio en ejecución?

Para verificar el estado de cada demonio instalado, escriba:

 service - -status-all 

Planificando nuestro demonio

¿Qué demonio va a hacer?

El demonio debe implementar una cosa y hacerlo bien. Eso podría ser tan complicado como manejar muchos buzones de correo en más de un dominio o tan fácil como llamar a sendmail para enviarlo por correo a un administrador y especificar un informe.

Debemos tener una mejor idea de lo que debe hacer un demonio en cualquier caso. Interactuará con algunos otros demonios que podríamos especificar o no. También es algo más que examinar.

alfabeto a números

Interacción

Los demonios nunca deben tener ninguna comunicación con el usuario directamente a través de un terminal. Cada comunicación pasa por un tipo de interfaz (que podríamos tener que especificar o no), que podría ser tan complicada como GUI+GTK o tan simple como un conjunto individual.

La estructura básica del demonio.

Daemon tiene que implementar algunas tareas domésticas de bajo nivel para prepararse para el trabajo real cuando comience. Implica algunos pasos que son los siguientes:

  • Bifurcar un superproceso (proceso padre)
  • Modificar máscara del modo de archivo (umask)
  • Abrir registros para escribir
  • Cree una ID de sesión especial (en resumen, SID)
  • Modificar el directorio de trabajo (actual) a un lugar seguro
  • Cerrar descriptores de clasificación de archivo
  • Ingrese el código del demonio original

Lista de servicios de demonio para sistemas similares a Unix y Linux

    anacron:Ejecuta acciones cron retrasadas en el momento del inicio.amd:Significa Auto Mount Daemon.etc:Ejecuta trabajos en cola aplicando el en la herramienta.apmd:Significa Demonio de Gestión Avanzada de Energía.crondo:Es un demonio programador de tareas.autofs:Ayuda al demonio de montaje automático a permitir desmontar y montar dispositivos según la demanda.dhcpd:Significa Protocolo de configuración dinámica de host. Además, es un servidor de protocolo Bootstrap de Internet.tazasd:Significa demonio de impresora CUPS.ftpd:Significa FTP Server Daemon.httpd:Es un demonio de servidor web.cerrado:Puede enrutar los demonios que reemplazan a egpup y enrutar y administrar más de un protocolo de enrutamiento.lpd:Significa Line Printer Daemon.imapd:Es el demonio del servidor imap.ined:Significa Internet Superserver Daemon.memchachado:Es un demonio de almacenamiento en caché de objetos distribuidos en memoria.MySQL:Es un demonio servidor de bases de datos.montado:Es un demonio de montura.nfsd:Significa Network File Sharing Daemon.llamado:Es un demonio de servidor DNS.bandada:Se aplica para iniciar y detener los servicios de bloqueo de archivos nfs.ntpd:Significa demonio de servicio de protocolo de tiempo de red.nmbd:Significa Network Message Block Daemon.postgresql:Es un demonio servidor de bases de datos.sufijo:Es un agente de transporte de correo y se utiliza como sustituto de Sendmail.enlace rpc:Significa Llamada a procedimiento remoto Bind Daemon.enrutado:Maneja tablas de enrutamiento.smbd:Es un demonio de Samba.enviar correo:Es un demonio agente de transferencia de correo.smtpd:Significa Demonio del Protocolo Simple de Transferencia de Correo.calamar:Es un demonio de servidor proxy de almacenamiento en caché de páginas web.snmpd:Significa Demonio de protocolo de administración de red simple.sincronizar:Puede mantener sincronizados varios sistemas de archivos junto con la memoria del sistema.sshd:Es un demonio de servidor Secure Shell.registro del sistema:Significa demonio de registro del sistema.telnetd:Es un demonio de servidor Telnet.tcpd:Tiene un contenedor de servicios que puede restringir la autorización a servicios basados ​​en inetd desde hosts.deny y hosts.allow.vsftpd:Significa Demonio FTP Muy Seguro.administrador web:Es un demonio de servidor de administración basado en web.xntd:Es un demonio del servidor de hora de red.xinetd:Es un demonio de superservidor de Internet mejorado.