ubuntuusers.de

Beenden eines Programmes an ein Skript melden

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

Fredo Team-Icon

Avatar von Fredo

Anmeldungsdatum:
27. Juni 2005

Beiträge: 5244

Wohnort: Bochum

Hallo!

Gerade habe ich mich mal an mein erstes größeres Bash-Skript gemacht. Die Idee habe ich von hier, es geht um eine Art "Aktenkoffer", also die Synchronisation zwischen Laptop und Desktop. Das wollte jetzt noch ein bisschen ausbauen.

Ein Teil besteht darin, dass eine NFS-Freigabe gemountet wird, das Verzeichnis mit Nautilus geöffnet wird, und nach dem Schließen von Nautilus wieder ungemountet wird. Nur weiß ich nicht recht, wie ich das Schließen von Nautilus abwarten kann, um dann das unmounten aufzurufen.

Hier mal der relevante Teil:

mounten () {
 mount ~/Aktenkoffer/
  if [ $? = "32" ] ; then
   zenity --error --text="Kann Laptop nicht mounten!"
   exit 2
  fi
}

unmounten () {
 umount ~/Aktenkoffer/
}

mounten
nautilus --no-desktop /home/frederik/Aktenkoffer
unmounten

Hat vielleicht jemand einen Tipp, wie man das lösen könnte?

Liebe Grüße
Fredo

sowatt

Anmeldungsdatum:
30. Oktober 2004

Beiträge: 72

Wohnort: Hamburg

Moin,
ich habe ja nicht so den Durchblick, Shellscript's betreffend, aber wenn Du
den Nautilus zum öffnen verwendest muss das ganze doch eine Prozess ID bekommen.
Die wiederum kannst Du doch auf vorhanden sein oder nicht prüfen. Wenn der Prozess
nicht mehr besteht sollte der Nautilus geschlossen sein und Du kannst das umount machen.

MfG
sowatt

tsmart

Anmeldungsdatum:
13. Oktober 2005

Beiträge: Zähle...

Weiss nicht wie du den Nautilus automatisierst aber unabhaengig davon geht eigentlich sowas mount -t smbfs //192.168... /mnt/sync && ( nautilusSyncDings && umount /mnt/sync && echo "Hat funktioniert" >> /var/log/mysync ) || echo "Konnte nicht mounten" >> /var/log/mysync
//edit
Eben seh ich wie alt das eigentlich schon ist D

Fredo Team-Icon

(Themenstarter)
Avatar von Fredo

Anmeldungsdatum:
27. Juni 2005

Beiträge: 5244

Wohnort: Bochum

Hallo!

Danke für die Tipps. Leider haben nur beide Ansätze einen Haken: Das Nautilus unter GNOME ja eigentlich immer läuft (z.B. als Desktop), wird auch immer eine Prozess-ID gesendet. Ich weiß nicht, ob man auch eine ID für den Unterprozess "geöffnetes Nautilusfenster" bekommen kann.

Und der Ansatz von tsmart funktioniert für die Synchronisation gut, aber ich will eben auch ein Nautilus-Fenster mit dem Mount-Ordner öffnen. Und da wartet das Skript nicht, bis das Fenster wieder geschlossen wird, sondern meldet direkt "Hat funktioniert" und macht normal weiter, z.B. mit dem unmounten. Und dann hat man ein geöffnetes Fenster, aber der Mountpoint ist schon wieder ausgehängt.

Vielleicht gibt es ja noch Ideen, sonst muss man eben per Hand aushängen.

Liebe Grüße
Fredo

tsmart

Anmeldungsdatum:
13. Oktober 2005

Beiträge: 3

Ich sehs grad dass es nicht geht.
Auch ein
nautilus --no-desktop --browser /mnt & && wait
hilft nix da sich der beobachtende Prozess gleich wieder verabschiedet und unter einem neuen das Programm nochmals aufruft das dann in X dargestellt wird. Kein Plan was du da machen kannst. Mit allen nicht-X-Anwendungen gehts wunderbar.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17625

Wohnort: Berlin

Angenommen Du startest den Nautilus zum mounten mit einem Script 'mountit.sh':

nautilus --no-desktop /home/frederik/Aktenkoffer


und rufst so nautilus indirekt auf:

mounten
mountit.sh
unmounten

Dann kannst Du auf das laufen des Scriptes 'mountit.sh' testen:

mountpid=$(ps -o pid= -C mountit.sh)

umarmung Team-Icon

Avatar von umarmung

Anmeldungsdatum:
26. Oktober 2004

Beiträge: 5632

Das wird leider nicht funktionieren, da der Aufruf von nautilus nicht blockiert und deshalb das Skript sofort wieder beendet wird.

Ich weiss aber auch keine Möglichkeit das Problem zu lösen. 😳

Fredo Team-Icon

(Themenstarter)
Avatar von Fredo

Anmeldungsdatum:
27. Juni 2005

Beiträge: 5244

Wohnort: Bochum

Hallo!

Na, dann lass ich den Teil wohl raus. Ist eigentlich auch nicht das wichtigste.

Diejenigen, die das mal im Zusammenhang ansehen wollen, die können sich meinen Artikel zu Unison ansehen. Ich würde mich über Feedback natürlich freuen!

Liebe Grüße
Fredo

haraldkl

Avatar von haraldkl

Anmeldungsdatum:
21. Juli 2005

Beiträge: 1903

Wohnort: Würselen

Hi,
die Prozess-ID des letzten im Hintergrund gestarteten Prozesses kannst du meines Wissens mit $! in Erfahrung bringen. Etwas in der Art könnte dir also helfen:

mounten
nautilus --no-desktop pfad &
wait $!
unmounten

Siehe dazu auch: http://www.tldp.org/LDP/abs/html/internalvariables.html 😉

Fredo Team-Icon

(Themenstarter)
Avatar von Fredo

Anmeldungsdatum:
27. Juni 2005

Beiträge: 5244

Wohnort: Bochum

Hallo!

Nee, hat leider auch nicht funktioniert. Aber trotzdem danke für den Tipp! Jetzt muss es halt ohne gehen.

Gruß
Fredo

Antworten |