Ich weiß nicht, wo ich mit der Suche anfangen soll. Ich habe über Daemons gelesen und das Konzept nicht verstanden.
Mehr Details :
- Ich habe einen Crawler geschrieben, der nie anhält und im Internet nach RSS crawlt.
- Der Crawler wurde in Java geschrieben, daher handelt es sich derzeit um ein Jar.
- Ich bin Administrator auf einem Rechner mit Ubuntu 11.04.
- Es besteht eine gewisse Wahrscheinlichkeit, dass die Maschine abstürzt, daher möchte ich, dass der Crawler bei jedem Start der Maschine ausgeführt wird.
- Außerdem möchte ich, dass es weiterläuft, auch wenn ich mich abgemeldet habe. Ich bin nicht sicher, ob das möglich ist, aber die meiste Zeit bin ich abgemeldet und möchte trotzdem, dass es crawlt.
Irgendwelche Ideen? Kann mir jemand den richtigen Weg weisen?
Ich suche nur nach der einfachsten Lösung.
Antwort1
Hier ist eine einfache Möglichkeit, dies mit SysVInit zu tun. Anleitung:
Erstellen Sie das Start- und Stoppskript Ihrer Anwendung. Legen Sie es in einem Verzeichnis ab, in unserem Beispiel ist es:
- Skript starten:
/usr/local/bin/myapp-start.sh
- Skript stoppen:
/usr/local/bin/myapp-stop.sh
Jeder enthält Anweisungen zum Ausführen/Stoppen der App. Der
myapp-start.sh
Inhalt kann beispielsweise so einfach sein wie der folgende:#!/bin/bash java -jar myapp.jar
Für das Stoppskript kann es etwa so aussehen:
#!/bin/bash # Grabs and kill a process from the pidlist that has the word myapp pid=`ps aux | grep myapp | awk '{print $2}'` kill -9 $pid
- Skript starten:
Erstellen Sie das folgende Skript (
myscript
) und fügen Sie es ein/etc/init.d
./etc/init.d/myscript
Inhalt:#!/bin/bash # MyApp # # description: bla bla case $1 in start) /bin/bash /usr/local/bin/myapp-start.sh ;; stop) /bin/bash /usr/local/bin/myapp-stop.sh ;; restart) /bin/bash /usr/local/bin/myapp-stop.sh /bin/bash /usr/local/bin/myapp-start.sh ;; esac exit 0
Setzen Sie das Skript so ein, dass es mit dem System startet (mit SysV). Führen Sie einfach den folgenden Befehl aus (als root):
update-rc.d myscript defaults
PS: Ich weiß, dass Upstart großartig ist und bla bla, aber ich bevorzuge das alte SysV-Init-System.
Antwort2
Ja, es ist möglich. :)Emporkömmlingist die beste Lösung, um sicherzustellen, dass der Dienst weiterhin ausgeführt wird. Es gibt fünf Pakete, die alle standardmäßig installiert sind:
- Upstart-Init-Daemon und Initctl-Dienstprogramm
- upstart-logd stellt den Logd-Daemon und die Jobdefinitionsdatei für den Logd-Dienst bereit
- upstart-compat-sysv stellt Jobdefinitionsdateien für die RC-Aufgaben und die Tools „reboot“, „runlevel“, „shutdown“ und „telinit“ bereit, die Kompatibilität mit SysVinit gewährleisten.
- startup-tasks stellt Jobdefinitionsdateien für Systemstartaufgaben bereit
- system-services stellt Jobdefinitionsdateien für TTY-Dienste bereit
Das Lernen macht sehr viel Spaß und lohnt sich. Upstart hat eine Website:http://upstart.ubuntu.com/
Antwort3
3 schnelle Vorschläge ...
Ein ... kreierenStart Skript im
/etc/rc3.d
(Multiuser-Konsolenmodus) mit entsprechendenKill-Skripte einbinden/etc/rc.0
und/etc/rc6.d
Ihr Java-Programm kontrolliert beenden, wenn das System herunterfährt (Runlevel 0) oder neu startet (Runlevel 6). SieheEine Einführung in Runlevels.Sie können Ihre Java-App möglicherweise in Runlevel 2 (rc2.d) starten, aber als Crawler benötigt sie TCP/IP. Stellen Sie also vorher sicher, dass Ihr Netzwerkdienst in Ihrem Runlevel 2 verfügbar/gestartet ist. Das Netzwerk ist in Runlevel 3 definitiv aktiviert.
/etc/init.d
enthält alle eigentlichen Start-/Kill-Skripte./etc/rcN.d
Verzeichnisse enthalten lediglich Links zu ihnen, mit dem Präfix S oder K, um sie pro Runlevel N jeweils zu starten oder zu beenden.Ein von ausgeführter Prozess
crond
sollte zwischen den Abmeldungen bestehen bleiben. Fügen Sie ihn möglicherweise zu Ihrer Crontab hinzu.Ein mit ausgeführter Prozess
nohup
sollte ebenfalls bestehen bleiben. Siehenohup: Führen Sie einen Befehl aus, auch nachdem Sie sich abgemeldet haben.$ nohup java -jar myapp.jar &
Standardmäßig
myapp.jar
wird die Standardausgabe von in eine Datei mit dem Namen gesendet./nohup.out
, oder$HOME/nohup.out
wenn erstere nicht beschreibbar ist.
Antwort4
Einfache Startskripte mit Java-Versionsprüfung für LinuxAuthentifizierungsagent und Windowsauth-agent.bat