Jak sprawić, by skrypt lub aplikacja działała automatycznie lub przestała działać automatycznie po uruchomieniu systemu, użytkownik loguje się w określonym czasie, gdy dysk jest podłączony itp.?
Jak sprawić, by skrypt lub aplikacja działała automatycznie lub przestała działać automatycznie po uruchomieniu systemu, użytkownik loguje się w określonym czasie, gdy dysk jest podłączony itp.?
Odpowiedzi:
Jeśli chcesz, aby coś działało po zalogowaniu użytkownika, najłatwiejszym sposobem jest skorzystanie z GUI. Możesz
System Prefs > Accounts > Login Items
ekranu i dodaj element przez
+
symbol.app
na panelOptions
, a następnie wybierzOpen at Login
Jeśli chcesz uruchomić coś, co nie jest .app
, lub chcesz mieć większą kontrolę nad uruchomieniem, na przykład:
wtedy chcesz skorzystać z rozwiązania technicznego, które jest launchd
.
Najłatwiejszym sposobem skonfigurowania launchd
pliku konfiguracyjnego jest skorzystanie z narzędzia, które pomoże. W chwili pisania najbardziej popularną metodą jest Lingon (która ma starszą bezpłatną wersję dostępną w SourceForge) lub narzędzie strony PList .
Jeśli nie chcesz korzystać z Lingon ani strony PList i chcesz korzystać tylko z surowych narzędzi dostępnych w systemie, możesz pisać własne launchd
plist
ręcznie
Oto mój uruchomiony skrypt do ciągłego uruchamiania SomeApp po uruchomieniu systemu (niezależnie od zalogowania się użytkownika). Jest w / System / Library / LaunchAgents / i nazywa się SomeApp.restart.plist. Jeśli jest uruchamiany w oparciu o login użytkownika, może być przechowywany w ~ / Library / LaunchAgents /
<?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>
Załaduj go raz
launchctl load ~/Library/LaunchAgents/SomeApp.restart.plist
RunAtLoad
Opcja uruchomi aplikację pierwszy raz launchctl prowadzi to.KeepAlive
Opcja spowoduje ponowne uruchomienie aplikacji, jeśli się zawiesi.StartCalendarInterval
Będzie go uruchomić w określonym czasie. Przypuszczalnie jest to wzajemnie wykluczające się z poprzednimi dwoma, ale zostało uwzględnione, aby pokazać, co można zrobićlaunchd
Istnieje wiele dodatkowych opcji, które można znaleźć poprzez eksperymentowanie z Lingon lub poprzez czytanie stron man na launchctl
, launchd.plist
, plist
, launchd.conf
, itd.
launchctl load -w ...
aby zmiana była trwała. W oparciu o Wasze opinie zaktualizowałem skrypt konfiguratora OSX poweruser
Lingon nadal działa. Właśnie wykorzystałem go w zeszłym tygodniu do stworzenia „zaplanowanego zadania”. Po pobraniu musiałem użyć jego automatycznej aktualizacji, aby uzyskać najnowszą wersję, ale działa dobrze.
Jeśli konieczne jest uruchomienie tylko podczas uruchamiania systemu, wystarczy użyć karty Elementy logowania w panelu preferencji Konta w Preferencjach systemowych.
Jeśli jest to skrypt, użyj edytora AppleScript, aby zapisać go jako aplikację. Jeśli nie jest to skrypt AppleScript, nadal możesz użyć AppleScript do uruchomienia skryptu w następujący sposób:
do shell script "your script here"
Nie zapomnij Loginhooks.
Chociaż działają jako root, powinieneś mieć możliwość wykonania skryptu $ HOME / .loginhook przy użyciu czegoś takiego:
#!/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
Następnie po prostu dodaj dowolne polecenia do ~ / .loginhook
Ponadto, chociaż „launch” to „Mac”, crontab jest nadal całkowicie wykonalną opcją i jest znacznie łatwiejszy do ręcznej edycji niż pliki XML uruchamiane.
Osobiście z radością zapłaciłem 5 USD za Lingon .
/path/to/script
, i sudo defaults write com.apple.loginwindow LoginHook /path/to/script
? A czy celem skryptu w katalogu domowym jest to, że każdy użytkownik może mieć niestandardowy (lub nie) ~/.loginhook
?
Uruchomienie aplikacji w określonym czasie można łatwo zrobić w iCal, co właśnie odkryłem dzięki innemu forum!
Należy pamiętać, że jeśli masz wiele komputerów Mac współużytkujących rzeczy przez iCloud, to wydarzenie będzie również działać na tych aplikacjach, których możesz chcieć lub nie. Aby tak się stało tylko na jednym komputerze Mac, musisz utworzyć wydarzenie w kalendarzu „Na moim Macu”, który możesz wykonać w następujący sposób ...
Dopiero co się o tym dowiedziałem i mile zaskoczyły mnie obie wskazówki, więc pomyślałem, że podzielę się nimi tutaj.
Mam informacje od tych pomocnych ludzi tutaj ... więc dziękuję wam ludzie! ...
http://osxdaily.com/2013/04/15/launch-file-app-scheduled-date-mac-os-x/