Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Bekanntest Problem unter Linux mit noch keiner Idee, woran es liegen kann
Kai
Das ist echt ein down light ,-(. Damit kann ich den Raspberry Pi nicht für meinen Dad einsetzen. Ist zu unzuverlässig.
Meine Beobachtung. Ich hatte letzte Woche nur ein kleines Set an Bindings im Einsatz (KNX, HTTP, DB4j, RRD) und damit ist das überhaupt nicht aufgetreten.
Bekanntest Problem unter Linux mit noch keiner Idee, woran es liegen kann, siehe https://github.com/openhab/openhab/issues/736.
Workaround ist ein manueller "touch" auf die Dateien, die nicht richtig geladen wurden...
Nicht nur unter Linux sondern auch unter OSX, tritt immer mal wieder sporadisch auf. Wenn es denn mal läuft ist es aber zuverlässig.
Vor ein paar Tagen konnte ich den Fehler zuverlässig reproduzieren wenn die vorherige Regel beim Start eine Exception ausgelöst hat, ledre kommt der Bug aber auch ohne eine solche Exception.
Bin für jeden Vorschlag dankbar, wie das zu fixen wäre.
Notfalls müsste man im Code das abfangen und ein mehrfaches Retry implementieren - nicht wirklich hübsch
Hi, ich meine das auch reproduzieren zu können. Probier ich morgen noch mal aus. Wenn ich starte und während dem hochfahren versuche die Webseite zu laden, dann findet er danach das sitemap file nicht mehr.
brauche Hilfe von den Bash Scriptern ,-). Bin dabei ein Script zu erstellen, dass per Cron aufgerufen wird, die logdatei parst und die notwendigen touch Befehle absetzt. Ich gabe dazu die logback.xml angepasst, damit auch das Datum vorkommt.
#!/bin/bash
TODAY=$(date +"%F")
# So gehts:
FILES="$(awk '/2014-05-03.*ERROR.*No such file/ {print $5}' /var/log/openhab/openhab.log | sort -n | uniq)"
# So gehts nicht:
#FILES="$(awk '/$TODAY.*ERROR.*No such file/ {print $5}' /var/log/openhab/openhab.log | sort -n | uniq)"
for i in $FILES
do
echo "Fixing $i"
find /etc/openhab/configurations/ -name "$i" -exec touch {} \;
done
Problem: Habe das Konzept der Variablen Ersetzung in Bash noch nicht vollends verstanden. Ich möchte die Variable $TODAY in der awk Zeile aufgelöst haben, das $5 in der selben Zeile jedoch nicht.
Variablen on doppelten Anführungszeichen werden aufgelöst, in einfachen nicht. Ev. hilft es, das ganze awk Programm in doppelte Anführungszeichen einzuschließen und die Sonderzeichen wie $ und {} zu escapen.
Alternativ kennt awk die Option -v mit der Du interne Variablen setzen kannst, damit kannst Du dann die Bash Variable vor dem eigentlichen "Programmtext" zuweisen.
In diesem Fall sollte es aber auch ein simples grep schon tun, da hast Du das Problem nicht, das Argument kann in doppelte Anführungszeichen eingeschlossen werden.
Aus gegebenem Anlass beim Update auf openhab 1.5.1 hab ich mich heute noch mal mit dem "File not Found" Problem beschäftigt und ein Skript geschrieben um das "tauchen" zu automatisieren.
Aufbauend auf dem Skript von RaK hab ich einen etwas anderen Ansatz gewählt: Ich durchsuche das Log von hinten bis zum letzten Start von openhab nach den "file not found" exceptions und mache es nicht vom Datum abhängig.
Was jetzt noch fehlt ist ein Mechanismus um zu verhindern das das "tauchen" mehrfach passiert, da fehlt mir noch eine Idee. Ich wollte das hier aber trotzdem mal zur Diskussion stellen:
Code:
#!/bin/bash
OPENHAB_LOG="/srv/log/openhab.log"
OPENHAB_CFG="/etc/openhab/configurations/"
FILES="$(tail -r $OPENHAB_LOG | awk '/openHAB runtime has been started / { exit } { print }' | awk '/.*ERROR.*No such file/ {print $5}')"
for i in $FILES
do
echo "Fixing $i"
find $OPENHAB_CFG -name "$i" -exec touch {} \;
done
Ich habe bei mir auf dem Raspberry Pi (Whezzy) installiert und anschliessend OpenHAB hat soweit funktioniert.
Nun wollte ich HABmin noch dazu installieren doch das klappt nicht. In der Installationsanleitung wird immer von dem openHAB "main directory" gesprochen, doch wo ist das bei mir?
Ich finde unter /etc/openhab zwei Verzeichnisse (configurations und jetty) doch das ist wohl nicht da Installationsverzeichnis von openHAB. Da habe ich schon gelesen das openHAB unter /opt/openhab liegen soll, doch da kann ich bei mir auch nichts finden.
Kann mir hier jemand weiter helfen und sagen wo openHAB installiert ist?
Ich hab es auch achon im Bugtracking geschrieben, wollte es aber auch hier noch einmal erwähnen, da ja wohl einige den Touch Workaround nutzen.
Bei der Version 1.6 habe ich jetzt beobachtet, das bei einem touch auf eine der von der "File not found" Exception betroffenen Dateien diese zwar neu eingelesen wurde aber der Fehler kam, dass sie keinen Inhalt hätte. Erst ein zweites touch hat dann zum Erfolg gefüher. Das macht einen automatisierten Woekaround natürlich deutlich schwieriger, was vor allem für "unbeaufsichtigte" Installationen ein Problem werden kann.
Insgesamt tritt das Problem bei mir unter 1.6 auch deutlich verstärkt auf, was aber auch an einer etwas anderen Auswahl der Bindings liegen mag
ich habe die Idee aufgegriffen und für mich abgeändert.
So funktioniert das bei mir (Debian auf QNAP-NAS/arm mit letztem OpenHab build).
Werden nicht gelesen Dateien (FileNotFoundException) gefunden, werden diese mit einem touch angestupst. Dann wird das LogFile in ein neues File gesichert und das LogFile openhab.log geleert, so dass die Dateien nicht mehrfach per touch aktualisiert werden.
Das Skript wird alle 2 Minuten per cron aufgerufen.
Code:
#!/bin/bash
OPENHAB_LOG="/opt/openhab/logs/openhab.log"
OPENHAB_CFG="/opt/openhab/configurations/"
files=`/bin/cat $OPENHAB_LOG | /bin/grep "java.io.FileNotFoundException"`
if [ "$files" != "" ] ; then
echo "$files" | while read line
do
line=${line#*: } #remove exeption with blank
line=${line% (*} #remove (* with blank
echo "touch $line"
find $OPENHAB_CFG -name "$line" -exec touch {} \;
done
# Backup openhab.log and clear it
echo "Backup - openhab.log"
time=$(date +"%Y-%m-%d-%H:%M:%S")
OPENHAB_LOG_SAVE="/opt/openhab/logs/openhab.log.$time"
cp $OPENHAB_LOG $OPENHAB_LOG_SAVE
echo "" > $OPENHAB_LOG
fi
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar