AppleScript uruchamia się ponownie po zainicjowaniu ponownego uruchomienia komputera. Jak tego uniknąć?

1

Mam skrypt powłoki uruchamiany przez aplikację AppleScript. Ten skrypt powłoki ponownie uruchamia maszynę w pewnym momencie shutdown -r now.

Jak mogę uniknąć automatycznego uruchamiania aplikacji AppleScript po ponownym uruchomieniu?

  • Aplikacja nie jest zawarta w elementach startowych
  • Aplikacja jest uruchamiana ponownie, podobnie jak każda inna otwarta aplikacja, gdy skrypt powłoki ponownie uruchamia OS X

Sekwencja jest następująca:

  1. Dwukrotnie klikam aplikację AppleScript
  2. AppleScript uruchamia skrypt powłoki w terminalu
  3. W pewnym momencie skrypt powłoki ponownie uruchamia system
  4. Aplikacja AppleScript uruchamia się ponownie po ponownym uruchomieniu
DavidD
źródło
Potrzebujesz więcej informacji ... jak teraz uruchamia się aplikacja? Czy dodałeś aplikację do swoich elementów startowych?
Flying Trashcan,

Odpowiedzi:

1

Poproś, aby AppleScript zapisał pusty plik we wstępnie zdefiniowanej lokalizacji i sprawdził jego obecność podczas uruchamiania skryptu. Jeśli plik już tam jest, usuń go i zamknij skrypt; w przeciwnym razie postępuj normalnie i uruchom ponownie.

nohillside
źródło
1

Możesz spróbować przekierować polecenie powłoki za pomocą

do shell script "insert_your_command &>/dev/null &"

a następnie powiedz aplikacji, aby wyjść

EDYCJA
Możesz także dodać opóźnienie przed przekierowaniem polecenia.

 do shell script "(sleep 5 ; insert_your_command) &>/dev/null &"
adayzdone
źródło
Aplikacja może nie mieć czasu na wyjście. Być może skrypt powłoki opuści go za pomocą osascript -e „powie aplikacji„ Script Editor ”, aby zakończył pracę przed zamknięciem. Ale nadal musisz odłączyć skrypt powłoki za pomocą końcowego &, inaczej zostanie zabity, gdy aplikacja się zakończy.
ganbustein
Aplikacja AppleScript OP musi zostać zamknięta, a nie „Script Editor”.
adayzdone
0

Domyślam się, że OS X przywraca stan aplikacji Apple Script po ponownym uruchomieniu. Możliwe, że możesz spróbować skryptu Apple usunąć własny stan aplikacji tuż przed poleceniem restartu, chociaż nie sprawdziłem, czy to działa, czy jest możliwe. Powinien znajdować się w ~ / Library / Saved Application State /.

Flying Trashcan
źródło
Nie sądzę, aby AppleScript wiedział, kiedy usunąć swój stan przed ponownym uruchomieniem, ponieważ restart jest inicjowany za pomocą polecenia powłoki.
DavidD,
Ale jak powiedziałeś, skrypt powłoki jest uruchamiany przez aplikację Applescript. Czy aplikacja jest nadal otwarta po uruchomieniu skryptu powłoki? Jeśli tak, może przywracać swój stan po ponownym uruchomieniu.
Flying Trashcan,
Tak, aplikacja jest nadal otwarta po uruchomieniu skryptu powłoki (w oknie terminalu)
DavidD
0

Ok znalazłem to.

Skrypt powłoki musiał mieć następujące wiersze:

osascript -e 'tell app "System Events" to restart'
killall "Terminal"

Powyższe polecenia powłoki inicjują ponowne uruchomienie za pomocą polecenia Apple Script ad hoc, ale natychmiast zabij terminal. Powoduje to zamknięcie aplikacji Apple Script tuż przed uruchomieniem procesu ponownego uruchamiania systemu OS X. Dlatego OS X nie umieszcza aplikacji Apple Script na liście otwartych aplikacji, które należy ponownie otworzyć po ponownym uruchomieniu.

Dwa skutki uboczne stosowania tej metody:

  • ponowne uruchomienie za pomocą tego polecenia Apple Script pozostawia użytkownikowi możliwość zapisania niezapisanej pracy z otwartych aplikacji, w przeciwieństwie do shutdown -r nowpolecenia powłoki, które wymusza natychmiastowe ponowne uruchomienie.
  • Terminal wciąż zostaje nagle zabity, co może być problemem, jeśli procesy działają w innych oknach / kartach Terminalu
DavidD
źródło