Wie lässt sich ein Skript oder eine App so konfigurieren, dass sie automatisch ausgeführt oder angehalten wird, wenn das System gestartet wird, ein Benutzer sich zu einem bestimmten Zeitpunkt anmeldet, eine Festplatte angeschlossen ist usw.?
Wie lässt sich ein Skript oder eine App so konfigurieren, dass sie automatisch ausgeführt oder angehalten wird, wenn das System gestartet wird, ein Benutzer sich zu einem bestimmten Zeitpunkt anmeldet, eine Festplatte angeschlossen ist usw.?
Antworten:
Wenn Sie möchten, dass beim Anmelden eines Benutzers etwas ausgeführt wird, können Sie am einfachsten die GUI verwenden. Du kannst
System Prefs > Accounts > Login Items
Bildschirm und fügen Sie den Artikel dort hinzu
+
Symbol.app
auf die ScheibeOptions
und anschließendOpen at Login
Wenn Sie etwas starten möchten, das kein a ist .app
, oder mehr Kontrolle über den Start haben möchten, wie z.
dann möchten Sie die technische Lösung verwenden , die ist launchd
.
Der einfachste Weg, eine launchd
Konfigurationsdatei einzurichten, ist die Verwendung eines Hilfsprogramms. Zum Zeitpunkt des Schreibens ist Lingon (mit einer älteren kostenlosen Version von SourceForge) oder das PList-Website- Tool die beliebteste Methode .
Wenn Sie Lingon oder die PList-Website nicht verwenden und nur die auf dem System verfügbaren Rohwerkzeuge verwenden möchten, können Sie Ihre eigenen launchd
plist
von Hand schreiben
Hier ist mein launchd-Skript, mit dem SomeApp nach dem Systemstart kontinuierlich ausgeführt wird (unabhängig davon, ob sich ein Benutzer anmeldet). Es befindet sich in / System / Library / LaunchAgents / und heißt SomeApp.restart.plist. Wenn es auf der Basis einer Benutzeranmeldung ausgeführt wird, kann es in ~ / Library / LaunchAgents / gespeichert werden.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>SomeApp.restart</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/SomeApp.app/Contents/MacOS/SomeApp</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>5</integer>
<key>Minute</key>
<integer>10</integer>
</dict>
</dict>
</plist>
Laden Sie es einmal mit
launchctl load ~/Library/LaunchAgents/SomeApp.restart.plist
RunAtLoad
Option wird die Anwendung beim ersten Ausführen von launchctl gestartet.KeepAlive
Option startet die Anwendung neu, wenn sie abstürzt.StartCalendarInterval
wird es zu einem bestimmten Zeitpunkt ausführen. Vermutlich schließt sich dies mit den beiden vorherigen gegenseitig aus, ist aber enthalten, um zu zeigen, was getan werden kannlaunchd
Es gibt viele weitere Möglichkeiten , die durch das Experimentieren mit Lingon oder durch das Lesen der Manpages gefunden werden kann launchctl
, launchd.plist
, plist
, launchd.conf
etc.
launchctl load -w ...
, um die Änderung persistent zu machen. Aufgrund Ihres Feedbacks habe ich mein OSX Poweruser-Konfigurationsskript
Lingon funktioniert immer noch. Ich habe es letzte Woche verwendet, um eine "geplante Aufgabe" zu erstellen. Nachdem ich es heruntergeladen hatte, musste ich seinen Auto-Updater verwenden, um die neueste Version zu erhalten, aber es funktioniert einwandfrei.
Wenn die Ausführung nur beim Systemstart erforderlich ist, verwenden Sie einfach die Registerkarte "Anmeldeobjekte" im Bereich "Konten" in den Systemeinstellungen.
Wenn es sich um ein Skript handelt, verwenden Sie den AppleScript-Editor, um es als Anwendung zu speichern. Wenn es sich nicht um ein AppleScript-Skript handelt, können Sie das Skript dennoch mit AppleScript wie folgt ausführen:
do shell script "your script here"
Loginhooks nicht vergessen.
Obwohl sie als root ausgeführt werden, sollten Sie in der Lage sein, ein $ HOME / .loginhook-Skript mit der folgenden Funktion auszuführen:
#!/bin/sh
home=`eval echo ~$user`
if [ -x "$home/.loginhook" ]; then
logger -t $0 "executing .loginhook of user $user"
su - $user -c "$home/.loginhook"
fi
Fügen Sie dann einfach die gewünschten Befehle zum ~ / .loginhook hinzu
Auch wenn 'launchd' "the Mac way" ist, ist crontab immer noch eine absolut praktikable Option und viel einfacher von Hand zu bearbeiten als XML-launchd-Dateien.
Persönlich habe ich glücklich 5 Dollar für Lingon bezahlt .
/path/to/script
und gespeichert werden sudo defaults write com.apple.loginwindow LoginHook /path/to/script
. Und der Punkt beim Ausführen eines Skripts im Home-Verzeichnis ist, dass jeder Benutzer eine benutzerdefinierte (oder keine) haben kann ~/.loginhook
?
Das Ausführen einer App zu einem bestimmten Zeitpunkt ist in iCal ganz einfach, wie ich gerade in einem anderen Forum herausgefunden habe!
Beachten Sie, dass dieses Ereignis auch auf Apps ausgeführt wird, die Sie möglicherweise benötigen oder nicht. Damit dies nur auf einem einzelnen Mac möglich ist, müssen Sie das Ereignis in einem Kalender unter "Auf meinem Mac" erstellen. Gehen Sie dazu folgendermaßen vor:
Ich habe das gerade erst selbst herausgefunden und war von beiden Tipps angenehm überrascht. Deshalb dachte ich, ich würde sie hier teilen.
Ich habe die Informationen von diesen hilfsbereiten Leuten hier ... also danke, Leute! ...
http://osxdaily.com/2013/04/15/launch-file-app-scheduled-date-mac-os-x/