Desarrollé un rastreador en PHP que analiza una URL con encabezados específicos y coloca todas las URL de contenido en la cola. Funciona bien.
Desarrollé este código en ubuntu 14.04 y puse un archivo .conf en la carpeta / etc / init con este contenido:
# Info
description "Warm the varnish to get the list of products"
author "Juanjo Aguilella"
# Events
start on startup
stop on shutdown
# Automatically respawn
respawn
respawn limit 100 5
# Run the script
# Note, in this example, if your PHP script return
# the string "ERROR", the daemon will stop itself.
script
[ $(exec /usr/bin/php -f /var/www/crawler.php) = 'ERROR' ] && ( stop; exit 1; )
end script
Funciona bien en Ubuntu 14.04 y puedo iniciar y detener el demonio usando "sudo service crawler start" y "sudo service crawler stop"
Ahora, en el entorno de producción, tengo un servidor Ubuntu 16.04 y pongo el mismo código en la misma carpeta, pero cuando intento iniciar el servicio recibo el mensaje "No se pudo iniciar crawler.service. Unidad crawler.service no encontrada"
¿Me pueden ayudar?
Saludos
ubuntu
daemon
ubuntu-16.04
Juanjo Aguilella Marés
fuente
fuente
Respuestas:
Agregando a @Juanjo Aguilella Marés la respuesta, y una vez que haya copiado / vinculado su script
/etc/systemd/system
, es posible que desee iniciarlo automáticamente cuando se inicie el servidor:Fuente Digital Ocean
También es una buena idea no ejecutarlo como root. Simplemente cambie la
user
línea en su script:fuente
Resolví el problema:
a) Cree un archivo crawler.service en / etc / systemd / system con este código:
mi archivo bash contiene diferentes ejecuciones en paralelo al mismo archivo php con este código:
La suspensión entre ejecuciones es necesaria para salvar el problema de la ejecución tan rápida del servicio.
Si tiene alguna sugerencia sobre la solución, por favor comente, no tengo mucha experiencia en archivos bash y archivos systemd, pero por el momento funciona bien.
fuente
El sistema init para 14.04 es advenedizo. El sistema init para 16.04 es systemd. Debe convertir su secuencia de comandos de inicio en un archivo de unidad systemd . También hay muchos otros recursos disponibles.
fuente
1] Para crear un servicio, vaya a / etc / systemd / system /
2] Cree un archivo de serviceName, por ejemplo, chatSocket.service
3] Ponga contenido para archivar como se indica a continuación
4]. Vuelva a cargar la configuración presionando:
sudo systemctl daemon-reload
5] Habilite el servicio de manera predeterminada, de modo que cuando el servicio de inicio del sistema se inicie automáticamente:
sudo systemctl enable my_service.service
6] Comience su servicio usando el siguiente comando:
sudo systemctl start my_service.service
fuente