europe.osm.pbf File per täglichem Diff-Abgleich aktuell halten

Hallo
Habe mit 14.04 Osmupdate benutzt, es hat manuell funktioniert.
Neue Karte No 1 ist online.

Jetzt möchte ich wieder alles automatisch laufen haben.
Osmupdate geht nicht wenn ich es per Script in “Geplante Aufgaben” starten möchte

Das Programm startet bricht dann aber wieder ab.
Beste Grüße

zum 2. mal: “Ich würde dringenst mal die Environment-Variablen und dort die Pfade überprüfen. Hat du daran schon mal gedacht?”

bau den Befehl env > /tmp/sh_env.txt im Script ein und vergleiche das Ergebnis mit env > /tmp/term_env.txt am Terminal.

Der häufigste Grund, warum cronjobs nicht laufen, obwohl sie in der Shell funktionieren, sind andere Pfade und Umgebungsvariablen. Manchmal hat man auch den User unter dem das Script läuft falsch eingegeben. In seltenen Fällen übersieht man, dass das Script zwischendurch nach einer Eingabe verlangt.

Hallo
Das ist jetzt etwas verwirrend :roll_eyes:

PS:
Ich hab das von einem Bekannten bekommen. Ich solle das verwenden:

Dieser liegt in user/bin als ausführbar, starten tut es arbeitet aber nicht 100% richtig.

#!/bin/sh
cd ~/Dokumente/mkgmap
osmupdate -v deu-old.osm.pbf --hour --day --keep-tempfiles deu.osm.pbf -B=deu.poly

Eventuell könntet Ihr mir einen besseren geben?

Wie gesagt im Terminal manuell geht der Befehl.

Hier ist nochmal der Fehler im Terminal:

osmupdate Parameter: deu-old.osm.pbf
osmupdate Parameter: --hour
osmupdate Parameter: --day
osmupdate Parameter: --keep-tempfiles
osmupdate Parameter: deu.osm.pbf
osmupdate Parameter: -B=deu.poly
osmupdate: timestamp of deu-old.osm.pbf: 2014-04-15T04:00:00Z
osmupdate: newest hourly timestamp: (no timestamp)
osmupdate Error: Could not get the newest hourly timestamp from the Internet.
Press ENTER to continue and close this window.

Besten Dank
Beste Grüße

ich glaube, der Tip in #62 war schon ganz gut. Hast du das gemacht? Was kam dabei raus?

Hallo
Ich weiß jetzt nicht ob das so richtig ist ?

Das habe ich genutzt:

#!/bin/sh
cd ~/Dokumente/mkgmap
env > /tmp/sh_env.txt
osmupdate -v deu-dnk-aut-che-old.osm.pbf --hour --day --keep-tempfiles deu-dnk-aut-che.osm.pbf -B=deu-dnk-aut-che.poly

Ergebnis mit Fehler beendet:

osmupdate Parameter: deu-dnk-aut-che-old.osm.pbf
osmupdate Parameter: --hour
osmupdate Parameter: --day
osmupdate Parameter: --keep-tempfiles
osmupdate Parameter: deu-dnk-aut-che.osm.pbf
osmupdate Parameter: -B=deu-dnk-aut-che.poly
osmupdate: timestamp of deu-dnk-aut-che-old.osm.pbf: 2014-04-15T16:00:00Z
osmupdate: newest hourly timestamp: (no timestamp)
osmupdate Error: Could not get the newest hourly timestamp from the Internet.
Press ENTER to continue and close this window.

Manuell im Terminal geht es:

marko@marko-desktop:~$ #!/bin/sh
marko@marko-desktop:~$ cd ~/Dokumente/mkgmap
marko@marko-desktop:~/Dokumente/mkgmap$ env > /tmp/sh_env.txt
marko@marko-desktop:~/Dokumente/mkgmap$ osmupdate -v deu-dnk-aut-che-old.osm.pbf --hour --day --keep-tempfiles deu-dnk-aut-che.osm.pbf -B=deu-dnk-aut-che.poly
osmupdate Parameter: deu-dnk-aut-che-old.osm.pbf
osmupdate Parameter: --hour
osmupdate Parameter: --day
osmupdate Parameter: --keep-tempfiles
osmupdate Parameter: deu-dnk-aut-che.osm.pbf
osmupdate Parameter: -B=deu-dnk-aut-che.poly
osmupdate: timestamp of deu-dnk-aut-che-old.osm.pbf: 2014-04-15T16:00:00Z
osmupdate: newest hourly timestamp: 2014-04-17T04:00:00Z
osmupdate: newest daily timestamp: 2014-04-17T00:00:00Z
osmupdate: hourly changefile 13965: downloading
osmupdate: hourly changefile 13964: 2014-04-17T03:00:00Z
osmupdate: hourly changefile 13964: downloading
osmupdate: hourly changefile 13963: 2014-04-17T02:00:00Z
osmupdate: hourly changefile 13963: downloading
osmupdate: hourly changefile 13962: 2014-04-17T01:00:00Z
osmupdate: hourly changefile 13962: downloading
osmupdate: hourly changefile 13961: 2014-04-17T00:00:00Z
osmupdate: daily changefile 582: downloading
osmupdate: daily changefile 581: 2014-04-16T00:00:00Z
osmupdate: daily changefile 581: downloading
osmupdate: daily changefile 580: 2014-04-15T00:00:00Z
osmupdate: Merging changefiles.
osmupdate: Creating output file.


Beste Grüße

Du solltest schauen, ob die Umgebungsvariablen für das Script andere sind als im Terminal…

Im Script diese Zeile einbauen:
env > /tmp/sh_env.txt

Wenn das Script gelaufen ist (je nach Cronjob-Einstellungen täglich, stündlich, bei Start), sprich: die Datei /tmp/sh_env.txt ist vorhanden, dann folgende Zeile händisch im Terminal ausführen:
env > /tmp/term_env.txt

Schritt 3 wieder im Terminal, Unterschiede feststellen:
diff /tmp/sh_env.txt /tmp/term_env.txt

Zwischendurch keinen Neustart machen, dabei wird /tmp/* aufgeräumt.

wenn die beiden temps zu unübersichtlich sind:

grep PATH /tmp/_env.txt*

vergleicht die wichtigste Variable PATH

ansonsten möchte ich dir noch einen Trick verraten. Ich benutze “Geplane Aufgaben” nicht, nehme aber an, dass der in Endeffekt einen Cronjob absetzt. Ich starte meine Cronjobs nach dem folgenden Schema:

*/1 * * * * /home/walter/osm/db/planet2/updatepl planet2 400 >> /home/walter/osm/db/planet2/cron.log 2>&1

also Startzeiten, Befehl mit Argumenten, Output nach cron.log und - das ist der Trick - alle Fehlermeldungen mit 2>&1 auch in das Logfile.

Im Cronjob mach ich

*#!/bin/bash

#set -x

cd /home/walter/osm/db/planet2*

und wenn es ganz eng wird

*#!/bin/bash

set -x

cd /home/walter/osm/db/planet2*

Damit bin ich eigentlich ganz gut zurecht gekommen (war auch mal Linux-Newbie, ist nur einige Jährchen her). Daher gratuliere ich dir nachträglich zu dieser Entscheidung, die dir langfristig viel bringen wird. Entspricht in etwa einem Umstieg auf Josm - der tut am Anfang auch ein wenig weh.

Gruss
walter

ach ja: bei >> ist kein Lehrzeichen dazwischen, das sieht nur so aus.

Hallo

Also wenn ich richtig verstanden habe:

Habe ich das genommen:

#!/bin/bash
#
set -x
#
cd ~/Dokumente/mkgmap
osmupdate -v deu-old.osm.pbf --hour --day --keep-tempfiles deu.osm.pbf -B=deu.poly

Ergebnis bricht ab:

+ cd /home/marko/Dokumente/mkgmap
+ osmupdate -v deu-old.osm.pbf --hour --day --keep-tempfiles deu.osm.pbf -B=deu.poly
osmupdate Parameter: deu-old.osm.pbf
osmupdate Parameter: --hour
osmupdate Parameter: --day
osmupdate Parameter: --keep-tempfiles
osmupdate Parameter: deu.osm.pbf
osmupdate Parameter: -B=deu.poly
osmupdate: timestamp of deu-old.osm.pbf: 2014-04-15T04:00:00Z
osmupdate: newest hourly timestamp: (no timestamp)
osmupdate Error: Could not get the newest hourly timestamp from the Internet.
Press ENTER to continue and close this window.


Ich denke das ein Fehler in Osmupdate ist, obwohl es ja manuell geht?
Das Programm holt sich wie den Zeitfaktor nicht?

Beste Grüße

Für den Zeitstempel ruft osmupdate wieder ein externes Tool (wget) auf, was wohl als Job irgendwie nicht funktioniert.
Wir brauchen da mehr Logging Infos. Setz mal vorübergehend den Logging Level von 1 auf 3 hoch, probier das ganze nochmal und poste hier die Ausgabe.

Alt:


osmupdate -v deu-old.osm.pbf --hour --day --keep-tempfiles deu.osm.pbf -B=deu.poly

Neu:


osmupdate -v=3 deu-old.osm.pbf --hour --day --keep-tempfiles deu.osm.pbf -B=deu.poly

ick klink mich aus solange ich nicht den Diff der PATH-Variablen sehe. Mehr als 5x von verschiedenen Postern kann man da nicht nachfragen.

walter

Hallo

Ich schrieb ich hab keine Ahnung bekam das Script nur.

Danke für die neue Zeile.

Script:

#!/bin/bash
#
set -x
#
cd ~/Dokumente/mkgmap
osmupdate -v=3 deu-old.osm.pbf --hour --day --keep-tempfiles deu.osm.pbf -B=deu.poly

Ergebnis:

+ cd /home/marko/Dokumente/mkgmap
+ osmupdate -v=3 deu-old.osm.pbf --hour --day --keep-tempfiles deu.osm.pbf -B=deu.poly
osmupdate Parameter: deu-old.osm.pbf
osmupdate Parameter: --hour
osmupdate Parameter: --day
osmupdate Parameter: --keep-tempfiles
osmupdate Parameter: deu.osm.pbf
osmupdate Parameter: -B=deu.poly
osmupdate: Executing shell command:
./osmconvert --out-timestamp "deu-old.osm.pbf" 2>&1
osmupdate: Got shell command result:
2014-04-15T04:00:00Z

osmupdate: timestamp of deu-old.osm.pbf: 2014-04-15T04:00:00Z
osmupdate: Executing shell command:
wget -q http://planet.openstreetmap.org/replication/hour/state.txt -O - 2>&1
osmupdate: Got shell command result:

osmupdate: newest hourly timestamp: (no timestamp)
osmupdate Error: Could not get the newest hourly timestamp from the Internet.
Press ENTER to continue and close this window.


Besten Dank für den neuen Test.

Jetzt lief etwas mehr durch ?
Beste Grüße

OK, danke für die Infos!

Nunja, wir haben etwas mehr Diagnose-Infos, aber der Fehler ist natürlich noch da. Dummerweise sagt das Log nicht, warum wget nicht ausgeführt werden konnte (die Fehlermeldung wird unterdrückt).

Ich denke, es macht am meisten Sinn, mal folgende Anleitung zu konsultieren:

Wenn Du dann crontab -e auf der Konsole aufrufst, sollte aktuell mindestens ein Eintrag für dein Script drin sein, richtig? Steht da auch was mit PATH=…?
Falls nicht, bau mal die Zeile 5 aus der Anleitung oben mit rein, also:

Dann nochmal testen und es sollte laufen…

Hallo
Cron bedarf einer Überarbeitung ?

Ich habe das so verstanden:

#!/bin/bash --login
#
set -x
#
cd ~/Dokumente/mkgmap
osmupdate -v=3 deu-old.osm.pbf --hour --day --keep-tempfiles deu.osm.pbf -B=deu.poly

mit Login bring die selbe Fehler Meldung wie im letzten Post.
Beste Grüße
Marko

Ja genau, Du musst deinem crontab noch den Pfad beibringen. Das hatte ich in Post #73 doch geschrieben.

Äh, nein. Ich meinte nicht Login, sondern Logging. Das bedetet soviel wie mehr Infos ausgeben, damit man eher sieht wo es klemmt.
Damit sind wir aber fertig.

Schau Dir nochmal die Anleitung für crontab an, die ich oben gepostet habe und prüfe, ob dort am Anfang ein Eintrag für PATH zu finden ist.
Wichtig: Wenn nicht, dann wie beschrieben den PATH ergänzen.

Crontab ist eine Textdatei, in der drinsteht, wann auf deinem System welches Script ausgeführt werden soll.
Dem crontab kannst Du auch sagen, wo es nach Dateien suchen soll (das wäre dann der PATH).
Daran hapert es im Moment.

Prinzip jetzt klarer?

Kannst Du das –login am Ende der Zeile wieder entfernen? Das war nicht verlangt und bringt uns nicht weiter.

Hallo

Ich habe jetzt folgenden Befehl:

#!/bin/bash
#
PATH=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11
#
set -x
#
cd ~/Dokumente/mkgmap
osmupdate -v=3 deu-old.osm.pbf --hour --day --keep-tempfiles deu.osm.pbf -B=deu.poly

Ergebnis ist:

+ cd /home/marko/Dokumente/mkgmap
+ osmupdate -v=3 deu-old.osm.pbf --hour --day --keep-tempfiles deu.osm.pbf -B=deu.poly
osmupdate Parameter: deu-old.osm.pbf
osmupdate Parameter: --hour
osmupdate Parameter: --day
osmupdate Parameter: --keep-tempfiles
osmupdate Parameter: deu.osm.pbf
osmupdate Parameter: -B=deu.poly
osmupdate: Executing shell command:
./osmconvert --out-timestamp "deu-old.osm.pbf" 2>&1
osmupdate: Got shell command result:
2014-04-15T04:00:00Z

osmupdate: timestamp of deu-old.osm.pbf: 2014-04-15T04:00:00Z
osmupdate: Executing shell command:
wget -q http://planet.openstreetmap.org/replication/hour/state.txt -O - 2>&1
osmupdate: Got shell command result:

osmupdate: newest hourly timestamp: (no timestamp)
osmupdate Error: Could not get the newest hourly timestamp from the Internet.
Press ENTER to continue and close this window.

Beste Grüße

Und Besten Dank für die Hilfe

Ok, kein Problem. Wir machen mal was anderes:

Ändere mal:

ab in:


export PATH=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11

und teste nochmal.

Hallo
Und Danke schön für die neue Zeile.

Wollte mal die KDE Anwendung testen, die in Ubuntuusers/cron steht, die kann ich aber nicht starten unter Gnome?

Test gestartet aus"Geplante Aufgaben" mit:

#!/bin/bash
#
export PATH=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11
#
set -x
#
cd ~/Dokumente/mkgmap
osmupdate -v=3 deu-old.osm.pbf --hour --day --keep-tempfiles deu.osm.pbf -B=deu.poly

Ergebnis , dauert gefühlt länger bis das Ende kommt?

Ergebnis:

+ cd /home/marko/Dokumente/mkgmap
+ osmupdate -v=3 deu-old.osm.pbf --hour --day --keep-tempfiles deu.osm.pbf -B=deu.poly
osmupdate Parameter: deu-old.osm.pbf
osmupdate Parameter: --hour
osmupdate Parameter: --day
osmupdate Parameter: --keep-tempfiles
osmupdate Parameter: deu.osm.pbf
osmupdate Parameter: -B=deu.poly
osmupdate: Executing shell command:
./osmconvert --out-timestamp "deu-old.osm.pbf" 2>&1
osmupdate: Got shell command result:
2014-04-15T04:00:00Z

osmupdate: timestamp of deu-old.osm.pbf: 2014-04-15T04:00:00Z
osmupdate: Executing shell command:
wget -q http://planet.openstreetmap.org/replication/hour/state.txt -O - 2>&1
osmupdate: Got shell command result:

osmupdate: newest hourly timestamp: (no timestamp)
osmupdate Error: Could not get the newest hourly timestamp from the Internet.
Press ENTER to continue and close this window.


Wie geschrieben der rest bis zur Kartenerstellung geht alles in “Geplante Aufgaben” getestet.

Beste Grüße

wollte mich ja raushalten, aber solange das mit den Diff-Files nach dem Server-Crash heute Nacht nicht gefixt ist, würde ich die Finger von dem Update lassen. Der kann eigentlich gerade überhaupt nicht funktionieren.

walter

Hallo

Danke für die Info, ich teste ab morgen alles noch mal.

Gerade manuell im Terminal getestet, da geht es wieder:

Neuer Stempel vom 18.04.

marko@marko-desktop:~$ #!/bin/sh
marko@marko-desktop:~$ cd ~/Dokumente/mkgmap
marko@marko-desktop:~/Dokumente/mkgmap$ osmupdate -v deu-old.osm.pbf --hour --day --keep-tempfiles deu.osm.pbf -B=deu.poly
osmupdate Parameter: deu-old.osm.pbf
osmupdate Parameter: --hour
osmupdate Parameter: --day
osmupdate Parameter: --keep-tempfiles
osmupdate Parameter: deu.osm.pbf
osmupdate Parameter: -B=deu.poly
osmupdate: timestamp of deu-old.osm.pbf: 2014-04-15T04:00:00Z
osmupdate: newest hourly timestamp: 2014-04-18T00:00:00Z
osmupdate: newest daily timestamp: 2014-04-18T00:00:00Z
osmupdate: daily changefile 583: downloading
osmupdate: daily changefile 582: 2014-04-17T00:00:00Z
osmupdate: daily changefile 582: downloading
osmupdate: daily changefile 581: 2014-04-16T00:00:00Z
osmupdate: daily changefile 581: downloading
osmupdate: daily changefile 580: 2014-04-15T00:00:00Z
osmupdate: Merging changefiles.
osmupdate: Creating output file.


Beste Grüße