Programm als Dienst vs. im Autostart (Windows)
Patrick Andrieu
- programmiertechnik
Hallo alle!
Ich habe mir eben ein kleines Perl-Programm geschrieben, der eine Log-Rotation für meinen noch frisch installierten Apache (Xampp, wer outet sich, und gibt zu, doch noch die langen Threads gelesen zu haben? *g*) »organisiert«.
Das Progrämmche habe ich im Taskplaner eingenistet, es startet um Punkt 00.00 Uhr, stoppt den Apache, wenn dieser läuft, verschiebt die Logs in /xampp/apache/logs/old, weckt den Häuptling wieder und hat dann alle Ruhe, die eben verschobenen Logfiles (error.log, access.log) umzubenennen... yeah, alles zufriedenstellend...
Da ich mir das hier [1] Dargestellte überlegt habe, habe ich den Xampp-Apache nicht als Dienst laufen lassen wollen, sondern wollte mein Programm in den Autostart-Ordner von Windows legen. Aber eben das quittiert mir Apache mit einem Programmabruch (»Apache hat ein Problem festgestellt und muss beendet werden). Wenn ich das Teil aus dem Autostart herausnehme, und irgendwann, lange nach dem ich sicher bin, dass Windoof und seinen was-weiß-ich-wie-vielen-Hilfsproggis geladen wurde, den Apache dennoch über mein Programm starte, ja, dann läuft es.
Was passiert also beim Booten genau, wann werden Dienste geladen, wann wird der Autostart durchgegangen, kann das sein, dass da noch nicht alles zur Verfügung steht...?
[1] Gegen den Apache als Dienst sprach das Folgende: Das Programm vergleicht das aktuelle Datum (sagen wir mal »heute«, was eben time() ausgibt), mit dem mtime-Zeitstempel der Logfiles. Wenn Apache als Dienst läuft, dann wird er ja quasi sofort mit Windows gestartet. Und nun folgendes Gedankenspiel:
Gegen einen anderen Vergleich (auf ctime.Zeitstempel) spricht, dass der »Created time« der access.log zum Beispiel unverändert bleibt. OK, man könnte die Datei gleich nach dem Verschieben unlinken, so dass wirklich eine Nagelneue vom Apache erstellt wird... aber dennoch wurmt mich die Sache mit dem Autostart...
Viele Grüße aus Frankfurt/Main,
Patrick
Hi Patrick,
Da ich mir das hier [1] Dargestellte überlegt habe, habe ich den Xampp-Apache nicht als Dienst laufen lassen wollen, sondern wollte mein Programm in den Autostart-Ordner von Windows legen. Aber eben das quittiert mir Apache mit einem Programmabruch (»Apache hat ein Problem festgestellt und muss beendet werden).
Bei mir Poppt um exakt 00.00 Uhr ein Fensterchen auf, das mir mitteilt, was xampp grade tut. :)
Nämlich Dateien verschieben, dein Script lebt. *g (ist im Autostart Verzeichnis von AllUser)
Also bei mir läuft es, häng aber irgendwie an meinem Kram fest und komm nicht zum Testen.
Grüße aus H im R,
Engin
Hallo Engin!
Danke für die Rückmeldung!
Bei mir Poppt um exakt 00.00 Uhr ein Fensterchen auf, das mir mitteilt, was xampp grade tut. :)
Nämlich Dateien verschieben, dein Script lebt. *g
Ja, der Start als geplanter Task funktioniert bei mir auch. Nur wenn eine Verknüpfung
im Autostart Verzeichnis von AllUser
ist, kommt es zum Programmabbruch. Nehme ich die Verknüpfung heraus, starte den lahmen Laptop, vergesse ihn zehn Minuten, und starte dann das Progrämmche, dann flutscht es wieder wie geschmiert. Der Schleppi ist aber sehr alt und riecht zudem oft nach Fish&Fries... ;)
Also bei mir läuft es, häng aber irgendwie an meinem Kram fest und komm nicht zum Testen.
Nenn Dich einfach: Komzunix!
Viele Grüße aus Frankfurt/Main,
Patrick
Hi Patrick,
Danke für die Rückmeldung!
Gerne doch!
im Autostart Verzeichnis von AllUser
ist, kommt es zum Programmabbruch. Nehme ich die Verknüpfung heraus, starte den lahmen Laptop, vergesse ihn zehn Minuten, und starte dann das Progrämmche, dann flutscht es wieder wie geschmiert. Der Schleppi ist aber sehr alt und riecht zudem oft nach Fish&Fries... ;)
Ja, den kenn ich doch auch noch. Wobei mein Dell auch nicht besser ist, 512MB Arbeitsspeicher,
wenn ich hier voll zu gange bin geht garnichts mehr, zum Glück stürzt der mir nicht ab, dafür bleibt der umso öfter
hängen. Über mein Haus Rechner will ich erst garnicht anfangen. *g
Nenn Dich einfach: Komzunix!
Klingt gut, mal schauen. :)
Grüße aus H im R,
Engin
Hallo Patrick,
Da ich mir das hier [1] Dargestellte überlegt habe, habe ich den Xampp-Apache nicht als Dienst laufen lassen wollen, sondern wollte mein Programm in den Autostart-Ordner von Windows legen.
warum diese Klimmzüge. Lass den apache als Dienst laufen, stelle die Startart
jedoch auf manuell. Das geht supereinfach im Diensteapplet. Wo ist das Problem?
Freundliche Grüße
Vinzenz
Hallo Vinzenz!
warum diese Klimmzüge. Lass den apache als Dienst laufen, stelle die Startart
jedoch auf manuell. Das geht supereinfach im Diensteapplet. Wo ist das Problem?
Muss ich ausprobieren, danke. Hautpsache, er rührt die Zeitstempel dann nicht an ;)
Viele Grüße aus Frankfurt/Main,
Patrick
Moin Moin!
Ich habe mir eben ein kleines Perl-Programm geschrieben, der eine Log-Rotation für meinen noch frisch installierten Apache (Xampp, wer outet sich, und gibt zu, doch noch die langen Threads gelesen zu haben? *g*) »organisiert«.
Das Progrämmche habe ich im Taskplaner eingenistet, es startet um Punkt 00.00 Uhr, stoppt den Apache, wenn dieser läuft, verschiebt die Logs in /xampp/apache/logs/old, weckt den Häuptling wieder und hat dann alle Ruhe, die eben verschobenen Logfiles (error.log, access.log) umzubenennen... yeah, alles zufriedenstellend...
Warum so umständlich? Der Apache bringt seit mindestens 1.3 ein rotatelogs-Tool mit, das ohne Service-Ausfall funktioniert. Siehe http://httpd.apache.org/docs/2.2/logs.html#piped. Wenn Dir das Verhalten von Apaches rotatelogs nicht gefällt, kannst Du Dir auch ein eigenes schreiben, das eben nicht nach 24 Stunden, sondern immer um Mitternacht GMT oder Localtime die Log-Datei wechselt.
Alexander
Hallo Alexander!
Warum so umständlich? Der Apache bringt seit mindestens 1.3 ein rotatelogs-Tool mit, das ohne Service-Ausfall funktioniert. Siehe http://httpd.apache.org/docs/2.2/logs.html#piped. Wenn Dir das Verhalten von Apaches rotatelogs nicht gefällt
Es ist nicht, dass es mir nicht gefällt, und auch nicht, dass ich das nicht kannte (ich habe natürlich zunächst nach mitgelieferten Möglichkeiten gesucht, und kenne diese Seite also)... Aber es funktionierte bei mir nicht:
piped log program '/xampp/apache/bin/rotatelogs.exe logs/access.log 86400' failed unexpectedly
Beim Start des Apache startet ein cmd-Fenster, das nicht schließt (finde ich nicht gerade schön), und so bald ich eine Datei aufrief, poppte ein solches Fenster, ging wieder auf, wieder zu, etc... eine Art Endlosschleife aus der ich nur 'rauskam, wenn ich Apache wieder stoppte...
Aus dem Abschnitt darüber auf der verlinkten Webseite (Log Rotation) bin ich auch nicht schlau geworden.
kannst Du Dir auch ein eigenes schreiben, das eben nicht nach 24 Stunden, sondern immer um Mitternacht GMT oder Localtime die Log-Datei wechselt.
Sowas tut mein Programm ja auch, als geplanter Task um Punkt Mitternacht funktioniert es hervorragend.
Aber nachdem ich heute den müden Schleppi wieder zwangsabschalten musste, und der Apache danach sich nicht starten ließ, habe ich eben etwas länger gesucht, die Ereignisanzeige studiert und etwas gegooglet. Schuld ist die Datei libapr-1.dll im Verzeichnis /xampp/apache/bin:
Ereignisanzeige/Anwendung:
Fehlgeschlagene Anwendung httpd.exe, Version 2.2.6.0, fehlgeschlagenes Modul libapr-1.dll, Version 1.2.11.0, Fehleradresse 0x00004250.
Fehlgeschlagene Anwendung apache.exe, Version 2.2.6.0, fehlgeschlagenes Modul libapr-1.dll, Version 1.2.11.0, Fehleradresse 0x00004250.
Ereignisanzeige/System:
Generate Activation Context ist für E:\xampp\apache\bin\libapr-1.dll fehlgeschlagen. Referenzmeldung: Der Vorgang wurde erflogreich beendet.
Resolve Partial Assembly ist für Microsoft.VC80.CRT fehlgeschlagen. Referenzfehlermeldung: Die referenzierte Assemblierung ist nicht auf dem Computer installiert.
Abhängige Assemblierung "Microsoft.VC80.CRT" konnte nicht gefunden werden. "Last Error": Die referenzierte Assemblierung ist nicht auf dem Computer installiert.
Zufriedenstellende Lösungen habe ich allerdings nicht gefunden. Nach ein paar Mal Um- und Wiederbenennen der libapr-1.dll wollte der Apache dann wieder doch aus den ewigen Jagdgründen auferstehen ;)
Viele Grüße aus Frankfurt/Main,
Patrick