Bash-Skript (läuft nach firefox-Aufruf weiter)

  • Hallo,

    ich würde (unter Linux) vor dem Start von Firefox und nach dem Beenden mittels eines Bash-Skript gerne etwas automatisieren.

    Mein Skript sollte daher etwa so aussehen:

    # tue was vor dem Start
    firefox
    # tue was nach dem Beenden

    Leider wird "tue was nach dem Beenden" sofort ausgeführt und nicht erst nach dem Beenden von Firefox.
    wait $FIREFOXPID geht nicht, weil der Firefox-Prozess kein Kind des Skript-Prozesses ist.

    Irgendwelche Ideen, wie man das "sauber" lösen kann?

    Danke!


  • Mach doch einfach eine abfrage auf die Datei .parentlock (existiert nur, wenn Fx läuft) im Profilverzeichnis. Etwa so:
    If exist /home/$USERNAME/.mozilla/firefox/.../.parentlock then wait else (# tue was nach dem Beenden) oder so ähnlich. Kenne mich nicht so genau aus.

    [Blockierte Grafik: http://firefox.czapura.de/gruss2.png]
    Win XP Home SP3, CPU: Pentium 4, 2,6 GHz, Dual Core, 1 GB RAM
    Mozilla/5.0 (Windows NT 5.1; rv:22.0) Gecko/20100101 Firefox/22.0
    Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/20130620 Thunderbird/17.0.7
    Meine Add-Ons

  • Wie sieht denn dein Skript aus?

    Beispiel:

    Bash
    #!/bin/bash
    
    
    echo "vorher"
    /usr/bin/gedit
    echo "nachher"

    Geht tadellos. Nachher erscheint erst auf der Konsole, wenn gedit wieder beendet wird.

  • Zitat von boardraider

    Wie sieht denn dein Skript aus?


    Etwa so:

    Bash
    #!/bin/bash
    echo "vorher"
    firefox
    echo "nachher"

    Das liefert aber nicht das gewünschte. "nachher" erscheint schon auf der Konsole, während firefox noch läuft.
    Man kann das Problem auch "manuell" nachvolliziehen, wenn man firefox aus der Bash heraus aufruft: Sofort nach dem Aufruf hat man wieder einen Prompt.

    Zitat von Estartu


    Mach doch einfach eine abfrage auf die Datei .parentlock (existiert nur, wenn Fx läuft) im Profilverzeichnis.

    Danke für den Hinweis. Das hatte ich auch auch schon in Betracht gezogen. Sauber finde ich das aber nicht, weil 1. das Skript unnötig Resourcen verscwhendet, 2. das Skript evlt. nicht unmittelba nach Beenden ausgeführt wird (weil es noch "wartet").

  • Zitat von bubbeldibub

    Man kann das Problem auch "manuell" nachvolliziehen, wenn man firefox aus der Bash heraus aufruft: Sofort nach dem Aufruf hat man wieder einen Prompt.

    Überprüfe mal die ~/.bashrc. Das Verhalten entspricht dem normalen

    Code
    firefox &

    mit dem nachgestellten &.

    Probier das mal

    Bash
    #!/bin/bash
    echo "vorher"
    firefox
    wait
    echo "nachher"
  • Zitat von .Ulli

    Überprüfe mal die ~/.bashrc.

    Es ist kein Bash-spezifisches Problem, auch an der ksh-hat man sofort wieder den Prompt.

    Zitat von .Ulli

    Das Verhalten entspricht dem normalen

    Code
    firefox &

    mit dem nachgestellten &.

    Nein. Das Problem ist nicht, der Firefox-Prozess im Hintergrund läuft, sondern, daß er kein Kind-Prozeß des Skripts/Bash ist. U.a. taucht er eben auch nicht in der job-Liste auf. Prozeße im Hintergrund (mit "&") aber schon.

    Zitat von .Ulli

    Probier das mal

    Bash
    #!/bin/bash
    echo "vorher"
    firefox
    wait
    echo "nachher"

    Kein Unterschied.

  • Zitat von bubbeldibub

    Es ist kein Bash-spezifisches Problem, auch an der ksh-hat man sofort wieder den Prompt.

    An dieser Stelle kommt mir Dein Linux ein wenig seltsam vor.

    Zitat von bubbeldibub

    Das Problem ist nicht, der Firefox-Prozess im Hintergrund läuft, sondern, daß er kein Kind-Prozeß des Skripts/Bash ist.

    Und wer ist dann der Vater ? Der Vaterschaftstest läuft über

    Code
    ps axjf | grep firefox

    Die erste angezeigte Nummer ist die PID des Vaters und unterjubeln ist nicht. Kannst Du ja weiterverfolgen mit

    Code
    ps axjf | grep Vater_PID

    bis Du zum Prozess 1 kommst.

    Firefox selbst, ist ja ein Kind, kann sich den Vater nicht aussuchen.

  • Hab es eben mal unter Kubuntu 7.10 getestet:

    Bash
    #!/bin/sh
    echo "vorher"
    /home/USERNAME/bin/firefox/firefox
    echo "nachher"

    Dies hat wunderbar funktioniert.
    Vielleicht nimmst du mal den kompletten Pfad mit rein. :-???

  • D'Oh!

    Ich hatte die ganze Zeit über einen Firefox-Prozeß am Laufen. Das Skript ruft dann (was ich eigentlich wußte) keine zweite Instanz auf.
    Wenn ich zuerst Firefox schließe, dann verhält sich Shell und Skript genau so wie gewohnt.

    Danke für die vielen Antworten.