Estoy ejecutando ASSP en CentOS 7 que usa systemd. El único archivo de servicio prediseñado que pude encontrar (howtoforge.com) utiliza el tipo oneshot, que no estoy seguro de que sea correcto. Más importante aún, el comando detener parece eliminar todos los programas Perl que tengo en ejecución (así que lo comenté). Pero ahora no estoy seguro de que se detenga correctamente al apagarlo. ¿Alguien puede aconsejarme sobre cómo mejorar el archivo de servicio?
[Unit]
Description=AntiSpam SMTP Proxy
After=network.target
[Service]
Type=Simple
Environment=PERL5LIB=/root/perl5/lib/perl5/
ExecStartPre=-rm -f /usr/local/assp/pid
ExecStart=/usr/bin/perl /usr/local/assp/assp.pl /usr/local/assp/
ExecStopPost=-rm -f /usr/local/assp/pid
[Install]
WantedBy=multi-user.target
Respuesta1
Type=oneshot
no tiene sentido para ningún programa que deba ejecutarse continuamente, ya sea como demonio o no. Entonces tienes razón en eso. De hecho, has encontrado otro malo tutorial en Internet (en un sitio infame por ellos; y ese tutorial también tiene muchos otros problemas).
Al revisar el script de inicio de muestra en la wiki de assp, parece que el programa se ejecuta en primer plano y no se demoniza. Type=simple
(el valor predeterminado) es apropiado para este tipo de servicio.
Generalmente no se requiere una ExecStop=
línea para un Type=simple
servicio, ya que systemd ya sabe qué proceso detener. Sólo sería necesario para algo con un procedimiento de detención inusual, pero assp simplemente acepta una señal y finaliza, como cualquier otro proceso. Puedes omitir esta línea.
Aparte de esos problemas, ha duplicado una ExecStartPre=
línea. Probablemente sólo lo necesites una vez. También es posible que desee configurar el WorkingDirectory=
directorio en el que instaló assp, ya que el script de inicio de estilo antiguo también hacía esto.