Forum: PC-Programmierung Bash-Script Problem beim Beenden von qiv


von Olli (Gast)


Lesenswert?

Hallo liebes Forum,

ich wollte mir aus einem Raspberry Pi einen digitalen Bilderrahmen 
bauen. Als Bildbetrachter/Slideshow benutze ich qiv, welches ein 
gesamtes Verzeichnis samt Unterverzeichnis (falls vorhanden) in einer 
Slideshow anzeigt. Das funktioniert auch ganz gut, selbst wenn man 
Bilder löscht. Nur werden mir neue Bilder nicht angezeigt. Ich möchte 
ebenfalls, dass das ganze ohne angeschlossene Tastatur oder Maus läuft. 
Also habe ich mir im Netz ein Script gesucht, welches einen Ordner 
überwacht, bei Änderungen das qiv killt und im Anschluss erneut startet, 
damit auch Bilder, welche zum Ordner hizugefügt werden angezeigt werden. 
Jedoch muss ich immer noch auf ESC drücken, dann startet erst das qiv 
neu. Ich vermute also, dass der Prozess nicht beendet wird. Habe mir die 
Finger bereits wundgegoogelt und einiges ausprobiert, aber nichts hat 
geklappt. Hoffe Ihr könnt mir sagen, wo der Fehler liegt. Ausgeführt 
wird das ganze im LXDE unter dem Standard-Benutzer Pi.
Gruß, Olli

#! /usr/bin/env bash
FILELIST=/tmp/filelist
MONITOR_DIR=/slideshow
[[ -f ${FILELIST} ]] || ls ${MONITOR_DIR} > ${FILELIST}
while : ; do
    cur_files=$(ls ${MONITOR_DIR})
    diff <(cat ${FILELIST}) <(echo $cur_files) || \
         { echo "Alert: ${MONITOR_DIR} changed" ;
           echo $cur_files > ${FILELIST} ;
      pkill qiv  #Hier scheint der Fehler
      qiv -fsiutmTd 3 /slideshow
         }

    echo "Waiting for changes."
    sleep 5
done

von Peter II (Gast)


Lesenswert?

test mal mit

killall -9 qiv

von Olli (Gast)


Lesenswert?

Klappt leider auch nicht. Gerade getestet. Selbes Spiel.
Ich muss auf ESC drücken, dann wird der Desktop ca. eine Sekunde 
angezeigt und erst danach startet die Diashow neu mit den neuen Bildern. 
Aber von alleine tut der das leider nicht.

von Andreas D. (rackandboneman)


Lesenswert?

Das Skript heisst nicht zufällig qiv und wird von pkill gleich mit 
erwischt?

PS bevor Du noch ganz anderes mit erwischt: pkill hat eine -v Option die 
NICHT verbose bedeutet sondern auf maximalen Überraschungseffekt 
ausgelegt ist.

von Konrad S. (maybee)


Lesenswert?

Olli schrieb:
> qiv -fsiutmTd 3 /slideshow
1
qiv -fsiutmTd 3 /slideshow &

von Olli (Gast)


Lesenswert?

2 Tage habe ich mir die Finger, teilweise bis 6 Uhr morgens 
wundgegoogelt um auf eine Lösung zu kommen. Konrad S. (maybee) hatte 
sie.
Vielen Lieben Dank. Hat auf Anhieb geklappt.

von Olli (Gast)


Lesenswert?

Und schon wieder ewig gegoogelt aber leider nichts gefunden.
Was bedeutet das "&"??? Startet es das Programm dann im Hintergrund? 
Zumindest habe ich sowas in der Art gelesen...

von Konrad S. (maybee)


Lesenswert?

Olli schrieb:
> Was bedeutet das "&"??? Startet es das Programm dann im Hintergrund?

So ist es.
Wenn du das nicht machst, dann wartet dein Script auf das Ende von qiv, 
also bis du ESC drückst.

von g457 (Gast)


Lesenswert?

> Was bedeutet das "&"???
1
If  a command is terminated by the control operator &,
2
the shell executes the command in the background in a subshell.
3
The shell does not wait for the command to finish, and the
4
return status is 0.
Aus: man bash

von 2:50 (Gast)


Lesenswert?

Olli schrieb:
> wieder ewig gegoogelt

Falls noch nicht bemerkt, google sucks.


Auch das  Programm man hat natuerlich seine manpage,
man man gibt die Hinweise zum Umgang mit selbigen.

oder ein deutschsprachiges howto:
http://www.ostc.de/howtos/man-HOWTO.txt

-> Textsuche (per "/TEXT..." <RETURN>)

eine Moeglichkeit.


Normalerweise alles an Board.

von zu spät 03:xx (Gast)


Lesenswert?

> Normalerweise alles an Board.

Spät es war und dunkel auch,
einfach mal in einer aufgerufenen manpage h drücken.
Dann erscheint die Hilfe zur less-syntax.


-----
man man

manpager
..... By default, man uses /usr/bin/less -is.

von Olli (Gast)


Lesenswert?

Ich glaube ich werde mir mal ein gutes Buch über die Linux-Grundlagen 
besorgen.
Danke für eure Hilfe.

von Andreas D. (rackandboneman)


Lesenswert?

Ok, noch zwei Tipps zu Umgang mit man (von modernem Linux-System 
ausgehend):

Die Sektion, zB wenn es passwd(1) und passwd(5) gibt, wählt man mit "man 
1 passwd" bzw "man 5 passwd" aus.

Suchen kann man in der offenen Manpage mit /Suchbegriff , weitersuchen 
mit "n" , an Anfang und Ende kommt man mit "g" und "G" .

von Olli (Gast)


Lesenswert?

Ich glaube ich habe was passendes für den Einstieg gefunden.
http://openbook.galileocomputing.de/linux/
Da werde ich mich erst mal reinarbeiten.

Vielen lieben Dank, an alle die sich dem Problem angenommen haben und 
mir geholfen haben. Besonderen Dank an maybee für die Lösung des 
Problems.

von Olli (Gast)


Lesenswert?

@Andy
Was verstehst du unter einem "nicht modernen" Linux-System?
Ist nicht alles, was ich als aktuelle Version aus dem Netz beziehe 
modern?
Bestehen da Unterschiede, falls ich bspw. mal mit der C- oder 
Python-Programmierung anfangen möchte?
Bisher habe ich nur Bascom (ja, ich weiß) und ASM (weil Bascom eben 
nicht so toll war) auf AVR programmiert.
Ich habe mir heute zum probieren und testen von allem möglichen ein 
Ubuntu 12.04 LTS auf nem alten PC installiert, da das Raspbian auf dem 
RPi wohl auf der selben Grundlage aufgebaut sein soll. Reicht das für 
den Anfang?

Gruß, Olli

von 01:59 (Gast)


Lesenswert?

Olli schrieb:
> Linux-System?

bash, gcc, etc. ist eigentlich GNU, nicht Linux.
http://directory.fsf.org/wiki/GNU

Mehr Lektuere unter http://www.gnu.org
An deren Konzept hat sich nicht viel geaendert seit 1984,
(Warum auch?)

von Konrad S. (maybee)


Lesenswert?

Olli schrieb:
> Ubuntu 12.04 LTS

Das ist schon OK, wird bis 2017 mit Security-Updates versorgt. Zum 
Arbeiten mit Linux taugt es allemal.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.