• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

[10.7 Lion] Script für das "killen" von Prozessen beim Herunterfahren?

Killermuhkuh

Macoun
Registriert
23.04.09
Beiträge
119
Hallo!

Ich habe das nervige Problem, dass ich nicht mal eben meinen Mac neustarten oder herunterfahren kann, weil mehrere Programme das "verhindern", sich dann aber von selbst schließen und somit dann ein Herunterfahren möglich machen.

Ich würde gerne was auch immer da im Hintergrund passiert als Script haben, was dann quasi die entsprechenden Programme killt und dann ganz normal herunterfährt.

Im Einzelnen ist das bei mir iTunes wegen des Plugins Amarra, dann der jDownloader und Teamviewer.

Kann man sich da was basteln oder gibt es eine elegantere Lösung?
 
Code:
try
  tell app "iTunes" to quit
  tell app "Heppmfleppm" to quit
  tell app "Labskaus macht doof" to quit

  tell app "Finder" to shut down
end try
 
Danke!

Ich hab gerade herausgefunden, dass wenn ich im Terminal per shutdown-Befehl herunterfahre oder neu starte, keine der Apps "blöd macht".
Die Frage ist allerdings:
Ich muss immer sudo shutdown und dann mein Passwort eingeben.
Wenn ich das in ein Script verpacken will, wie binde ich da mein Passwort ein?
 
Überhaupt nicht. Du unterlässt es, deine GUI mit solchen Mitteln langsam und leise zu ermorden. "shutdown" ist ein Spielzeug mit dem du ggf den Single-User Mode beenden kannst, ansonsten vergiss es. Wenn du per Terminal runterfahren willst:
Code:
osascript -e "tell app \"Finder\" to shut down"
 
Code:
try
  tell app "iTunes" to quit
  tell app "Heppmfleppm" to quit
  tell app "Labskaus macht doof" to quit

  tell app "Finder" to shut down
end try

Dieses Script hier, mit eigenen Apps eingetragen, funktioniert übrigens tadellos. Dankeschön dafür! Habe auch eine Abwandlung davon gespeichert, mit

tell app "Finder" to restart


Da wirft sich mir aber noch eine Frage auf... wenn das so tadellos hinhaut:
Mac OS sendet ja bestimmt allen anderen Programmen den selben Befehl, oder?
Wenn das ausgerechnet bei diesen nicht funktioniert, müsste es doch (wie fast immer) irgendwo eine plist oder sonstige Datei geben, in die man das dauerhaft einbettet, um so auch wieder per GUI herunterfahren und neustarten zu können.

Oder liege ich da völlig daneben?
 
Warum genau bei diesen bestimmten Programmen Probleme auftreten, müsste man im Einzelfall genau bestimmen. Ich behaupte einfach mal: Die lassen sich einfach viel zu viel Zeit mit der erwarteten Reaktion auf die Aufforderung zum Beenden. Mit SnowLeopard und dann nochmals verschärft mit Lion hat ein neues (und recht pfiffiges) Modell der schnellen Beendigung von Prozessen Einzug gehalten, mit dem alter Code evtl nicht so gut klar kommt - wenn der Entwickler sich damals einen feuFu um gute Ratschläge in den Entwickler-Dokus gekümmert hat.
Das Skript ist geduldiger als die Sitzungsverwaltung und macht erst weiter, wenn die Schlafmützen unter den Programmen so weit sind und brav ihre Reaktion abliefern. (AppleScript benutzt weiterhin die ganz traditionellen Methoden aus der Frühzeit von Mac OS --> Langsamer, aber kompatibel auch mit Dinosauriern.)
Das ist der ganze Trick - aber nur ein Provisorium. Sieh zu, ob bzw wann es für die Sorgenkinder aktualisierten Ersatz gibt.
Wenn deine gesamte Software endlich mal auf die neuen Methoden angepasst sein wird, und zwar wirklich restlos, dann werden im "best case" Szenario (d.h. keine Programme aktiv, die noch offene Aktionen oder Rückfragen an dich haben) für eine Unix-Maschine wirklich beeindruckende Shutdown-Zeiten von nur ein bis zwei Sekunden möglich. Da macht dann das Ausschalten oder Neustarten echt wieder Spass.
:-)
 
Wobei ich sagen muss, dass ich seit Lion die Maschine deutlich öfter herunterfahre und auch geneigter bin, sie mal neu zu starten, seitdem es die Resume-Funktion gibt. Deswegen hat mich unter Snow Leopard auch das eine oder andere Programm nicht gestört, das sich nicht beenden ließ :-)

Aber ich schau natürlich nach Updates, speziell Teamviewer hab ich eh selten laufen, der jDownloader aktualisiert sich ja quasi bei jedem Start selbst, und Amarra... nun, das ist die einzige Ausnahme, das läuft dauernd.