Sign in Join
Wiki copytemporary

Daemons and Services/es

English · Español · Français · Polski · Português · Русский · 中文(中国)

¿Qué son demonios, servicios y agentes?

Las diferentes denominaciones varían segun el sistema operativo, recibiendo el nombre de demonios (daemons) en sistemas Unix, servicios (services) en sistemas Windows y agentes (agents) para macOS. El concepto es que son programas que se ejecutan sin interacción del usuario, incluso sin que este se valide. Aunque su nomenclatura difiere su función viene a ser similar: por ejemplo, los servidores www o ftp se llaman demonios bajo Linux y servicios bajo Windows. Debido a que no interactúan con el usuario directamente cierran sus descriptores stdin (entrada estandar), su stdout (salida estandar) y stderr (estandar error) a su inicio.

Con FreePascal/Lazarus se pueden escribir estos demonios/servicios que son independientes de la plataforma mediante el uso del paquete lazdaemon. Para evitar conflictos de nombres con los componentes de Delphi estas clases se han denominado 'daemons'.

Instalación de LazDaemon

Antes de comenzar a gestionarlos dentro de Lazarus es necesario instalar el paquete LazDaemon. Bien sea vía Componentes/Configurar paquetes instalados o bien abriendo/instalando el fichero .lpk directamente que se encuentra en la ubicación: lazarus/components/daemon/lazdaemon.lpk.

Este paquete instala algunos componentes nuevos y un menú de elementos en el IDE.

Classes

TCustomDaemon

TCustomDaemon es un descendiente de TDataModule que realiza todo el trabajo. Puede haber varias clases TCustomDaemons classes y/o instancias corriendo al mismo tiempo y en el el mismo proceso (multi hebra o hilo (threaded)).

TCustomDaemonApplication

TCustomDaemonApplication es un descendiente de TCustomApplication que crea TCustomDaemons. No necesita cambios. Corre bajo Windows hasta que recibe la llamada de Stop o bajo Linux hasta que recibe la señal TERM (Term Signal).

TDaemonMapper

Este componente maneja el registro de servicio. Cada instancia necesita una entrada en la propiedad DaemonDefs.

Demonios - Paso a Paso

Métodos del demonio

No se dispara bajo Linux. Linux simplemente mata el demonio.

No se dispara bajo Linux porque el núcleo (kernel) detiene completamente el demonio en STOP y lo continúa con CONT.

No se dispara bajo Linux.

registro se completa correctamente.

Aclaraciones antes de comenzar

Antes de que puedas crear una aplicación en la modalidad de Servicio o Demonio es preciso asegurarse de que el paquete "lazdaemon" de encuentra instalado en Lazarus.

Ejemplo

Puedes encontrar un ejemplo simple de todo esto en el directorio examples/cleandir/ de la instalación de Lazarus. Lee el fichero README.txt que se encuentra allí.

Service Installation

Windows

Un servicio se instala ejecutando el proceso con el parámetro install. A continuación Windows Services Manager realizará el resto. A través del Service Manager se puede configurar tanto el servicio como sus opciones.

Ver también: ServiceManager

Linux (Debian en sus versiones antiguas y Devuan)

Descarga. configura y "Salva como" - el script de ejemplo en Script de Servicios.

Sitúa tu propio script en la carpeta /etc/init.d/

Comienza el servicio ejecutando "sudo service trayectoria_completa_y_nombre_de_fichero start"

Para que se auto ejecute el servicio al iniciar el sistema puedes probar a ubicarlo en update-rc.d o de otro modo puede que necesites una utilidad de terceros para lograrlo.

Opción 1:

pascal
sudo update-rc.d Nombre_de_tu_Script defaults

Opción 2:

pascal
sudo apt-get install chkconfig
sudo chkconfig --add Nombre_de_tu_Script
sudo chkconfig --level 2345 Nombre_de_tu_Script on

Linux

Actualmente, las diversas distribuciones de Linux (como Fedora, Debian, SLES12) están tendiendo a abandonar la diversidad de formas de lanzar los demonios, tratando de utilizar un modelo unificado de servicios. Otras (como Devuan y sus derivados) sin embargo defienden la libertad de escoger entre el sistema clásico o el moderno systemd, por tanto hay variedad para los diferentes gustos.

En versiones recientes de Fedora utiliza systemd con start/stop services que son los mismos que utiliza Debian.

ini
[Unit]
Description=Descripción larga de la aplicación
After=network.target

[Service]
Type=simple
ExecStart=trayecto_completo_y_nombre_de_fichero -r
RemainAfterExit=yes
TimeoutSec=25

[Install]
WantedBy=multi-user.target

Hay un ejemplo de configuración de systemd en Service

Software de ejemplo

Listado de software práctico que nos permite examinar su código:

Ver también


From the Free Pascal wiki, page "Daemons and Services/es", as it stood on 2022-01-09 after a change by Slawek, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 3, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.