Ich habe in PHP einen Crawler entwickelt, der eine URL mit bestimmten Headern analysiert und alle URLs des Inhalts in die Warteschlange stellt. Es funktioniert gut.
Ich habe diesen Code in einem Ubuntu 14.04 entwickelt und im Ordner / etc / init eine .conf-Datei mit folgendem Inhalt abgelegt:
# 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
Es funktioniert gut in Ubuntu 14.04 und ich kann den Daemon mit "sudo service crawler start" und "sudo service crawler stop" starten und stoppen
Jetzt in der Produktionsumgebung habe ich einen Ubuntu 16.04-Server und den gleichen Code im gleichen Ordner, aber wenn ich versuche, den Dienst zu starten, erhalte ich die Meldung "crawler.service konnte nicht gestartet werden. Unit crawler.service nicht gefunden".
Können Sie mir helfen?
Grüße
ubuntu
daemon
ubuntu-16.04
Juanjo Aguilella Marés
quelle
quelle
Antworten:
Wenn Sie zu @Juanjo Aguilella Marés hinzufügen und Ihr Skript kopiert / verlinkt haben
/etc/systemd/system
, möchten Sie es möglicherweise automatisch starten, wenn der Server gestartet wird:Quelle Digital Ocean
Es ist auch eine gute Idee, es nicht als root auszuführen. Ändern Sie einfach die
user
Zeile in Ihrem Skript:quelle
Ich habe das Problem gelöst:
a) Erstellen Sie eine Datei crawler.service in / etc / systemd / system mit folgendem Code:
Meine Bash-Datei enthält verschiedene Ausführungen parallel zur gleichen PHP-Datei mit diesem Code:
Der Ruhezustand zwischen den Ausführungen ist erforderlich, um das Problem bei der Ausführung des Dienstes so schnell wie möglich zu beheben.
Wenn Sie Vorschläge zur Lösung haben, kommentieren Sie bitte, ich habe nicht viel Erfahrung mit Bash-Dateien und Systemd-Dateien, aber im Moment funktioniert es einwandfrei.
quelle
Das Init-System für 14.04 ist upstart. Das Init-System für 16.04 ist systemd. Sie sollten Ihr Upstart-Skript in eine systemd- Unit-Datei konvertieren . Es gibt auch viele andere Ressourcen zur Verfügung.
quelle
1]. Um einen Dienst zu erstellen, gehen Sie zu / etc / systemd / system /
2]. Erstellen Sie eine Datei mit dem Namen serviceName, z. B. chatSocket.service
3]. Legen Sie den Inhalt wie unten angegeben ab
4]. Konfiguration neu laden durch Drücken von:
sudo systemctl daemon-reload
5]. Dienst standardmäßig aktivieren, damit beim Systemstart der Dienst automatisch gestartet wird:
sudo systemctl enable my_service.service
6]. Starten Sie Ihren Dienst mit dem folgenden Befehl:
sudo systemctl start my_service.service
quelle