Jak używać Launchd do planowania uruchamiania skryptów na Macu

Automatyzacja zadań w macOS za pomocą launchd pozwala użytkownikom na efektywne harmonogramowanie skryptów, co zwiększa wydajność i ułatwia codzienną pracę na komputerze.

Automatyzacja zadań poprzez harmonogramowanie skryptów to potężna możliwość, z której codziennie korzysta wielu administratorów. Zwykli użytkownicy Maca również mogą skorzystać z tej mocy, używając launchd, preferowanego przez Apple narzędzia do automatyzacji i zarządzania zadaniami w macOS. Od harmonogramowania prostych zadań, takich jak wyłączanie Wi-Fi o konkretnej godzinie, po uruchamianie złożonych kopii zapasowych systemu, launchd na Macu może pomóc Ci zautomatyzować przepływy pracy, zaoszczędzić czas i zapewnić, że Twój system działa tak, jak lubisz.

Co to jest Launchd?

Podobnie jak orkiestra potrzebuje dyrygenta, aby zharmonizować różnorodne instrumenty, macOS Ventura, z jego niezliczonymi procesami i usługami, polega na launchd, aby zapewnić, że wszystko działa w doskonałej synchronizacji. Jako pierwszy proces uruchamiany przez jądro macOS podczas startu komputera, launchd zajmuje centralne miejsce, orchestrując każdy kolejny proces, usługę i aplikację, podobnie jak dyrygent wskazujący na początek symfonii.

Oprócz swojej roli w orchestracji systemu, launchd może być używany do harmonogramowania skryptów, czyli serii poleceń napisanych w celu wykonania konkretnego zadania. Robi się to za pomocą polecenia launchctl, które służy jako interfejs dla użytkowników do komunikacji i kierowania dyrygentem, jakim jest launchd.

Warto wiedzieć: ściągasz torrenty? Zwiększ efektywność, ściągając torrenty za pomocą Terminala na swoim Macu.

Demony i Agenci

launchd czasami nazywany jest demonem, programem komputerowym działającym jako proces w tle, który zazwyczaj nie jest zaprojektowany do bezpośredniego kontrolowania przez użytkownika. W przypadku demonów, launchd jest wyjątkowy, ponieważ jest maestro wszystkich innych demonów macOS i może decydować, kiedy się uruchamiają lub zatrzymują. Te podporządkowane demony działają jako użytkownik root, więc mogą robić prawie wszystko.

Jednak jako użytkownik zainteresowany harmonogramowaniem zadań, uruchamianie skryptów jako użytkownik root nie zawsze jest pożądane ani konieczne. Tutaj do gry wkraczają agenci. Agenci działają w imieniu zalogowanego użytkownika, oferując bardziej ograniczone środowisko i zapewniając, że skrypty lub zadania są wykonywane z uprawnieniami i preferencjami tego konkretnego użytkownika. Na przykład, jeśli chcesz, aby skrypt uruchomił zmiany ustawień lub uzyskał dostęp do plików w swoim koncie, użyjesz agenta.

Porada: masz problemy z kompatybilnością niektórych ulubionych starszych aplikacji na Maca? Dowiedz się, jak zainstalować 32-bitowego Linuksa na starym Macu.

Pisanie Skryptów

Aby uruchomić agentów lub demony przez launchd, będziesz musiał napisać kilka skryptów. Najpopularniejszym językiem skryptowym jest bash. Jeśli chcesz dowiedzieć się więcej o skryptach bash, możesz zapoznać się z naszym przewodnikiem dla początkujących.

Twoje skrypty launchd mogą znajdować się w dwóch różnych lokalizacjach, w zależności od tego, czy mają być uruchamiane jako agenci, czy demony:

  • Dla tych skryptów, które mają być agentami, działającymi w imieniu zalogowanego użytkownika, powinny być przechowywane w “~/Library/LaunchAgents.”
  • Natomiast skrypty przeznaczone do działania jako demony, działające systemowo, niezależnie od zalogowanego użytkownika, powinny znajdować się w “/Library/LaunchDaemons.”

Pamiętaj, agenci nie mają uprawnień roota, więc nie mogą wykonywać zadań wymagających głębokiego dostępu do systemu. Demony natomiast działają z uprawnieniami roota i mogą obsługiwać zadania, które wpływają na cały system.

Warto wiedzieć: możesz zyskać większą kontrolę nad swoim Maciem, włączając Użytkownika Root, co pozwoli Ci uzyskać dostęp do całego jego systemu plików.

Opisy Zadań

Skrypty w launchd są wyzwalane przez definicje zadań, które są plikami .plist przechowywanymi w określonych katalogach. Te pliki XML nadają zadaniu nazwę, określają skrypt, który powinien zostać uruchomiony, oraz wskazują, kiedy skrypt powinien być wykonywany. Gdy napiszesz swój skrypt, stworzysz i załadujesz definicję zadania, która uruchamia skrypt w odpowiednim momencie. Definicja zadania wygląda mniej więcej tak:

<?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>Label</key> <string>local.restart</string> <key>Program</key> <string>/Users/user/Scripts/restart.sh</string> 

RunAtLoad

Edytuj w razie potrzeby, a następnie zapisz jako plik tekstowy z rozszerzeniem .plist, zanim umieścisz go w odpowiednim katalogu (patrz powyżej).

 

Istnieje kilka kluczowych elementów w opisie pracy:

 

    • Etykieta: nazwa zadania w launchd. Musi być unikalna dla każdego zadania. Są one zapisane w notacji odwrotnej domeny, a „local” to świetna domena dla prywatnych agentów.

 

    • Program: pełna ścieżka do skryptu, który uruchamia ten opis zadania.

 

    • RunAtLoad: opisuje, kiedy skrypt powinien być uruchamiany. Istnieje kilka różnych opcji:
        • RunAtLoad: uruchamiaj od razu po załadowaniu definicji zadania. Uruchamia się tylko raz na ładowanie.

       

        • StartInterval: uruchamiaj zadanie co n sekund.

       

        • StartCalendarInterval: uruchamiaj zadanie o określonej godzinie i dacie.

       

       

 

 

Porada: potrzebujesz więcej miejsca na pliki skryptów? Dowiedz się, jak wyczyścić pamięć podręczną na Macu, aby szybko zwolnić miejsce.

 

Ładowanie zadań do launchctl

 

Po utworzeniu skryptów i zapisaniu agenta w odpowiednim miejscu, musisz go załadować do launchctl. Będzie to odbywać się automatycznie przy logowaniu w przyszłości.

 

Aby zobaczyć, co aktualnie działa w launchctl, możesz użyć launchctl list w terminalu. Ta ogromna lista może być przeszukiwana przy pomocy grep dla Twojego skryptu, nazywając go czymś takim jak poniżej:

 

launchctl list | grep local.restart

Aby załadować skrypt, otwórz Terminal i użyj następującego polecenia:

launchctl load ~/Library/LaunchAgents/local.restart.plist

Aby usunąć skrypt z kolejki launchctl, użyj polecenia unload:

launchctl unload ~/Library/LaunchAgents/local.restart.plist

Załadowanie zadania umieszcza je w kolejce launchd, a zadanie będzie uruchamiane o czasie określonym w jego warunkach uruchomienia. Jeśli chcesz uruchomić skrypt natychmiast, niezależnie od warunków, powinieneś użyć polecenia „start”:

launchctl start local.restart

To polecenie bierze etykietę zadania i będzie działać tylko wtedy, gdy zadanie zostało już załadowane do launchctl.

Porada: zostań zaawansowanym użytkownikiem Maca, korzystając z Raycast lub Alfred, aby szybko uruchomić ulubione aplikacje.

Często zadawane pytania

Jak mogę sprawdzić, czy launchd uruchomił skrypt?

Możesz użyć polecenia launchctl list w terminalu. Wyświetli to wszystkie załadowane zadania. Aby znaleźć konkretny skrypt lub zadanie, użyj grep, np. launchctl list | grep twoja_nazwa_skryptu.

Co jeśli launchd używa za dużo zasobów systemowych?

Jeśli launchd zużywa nadmierne zasoby, zazwyczaj jest to spowodowane źle działającym skryptem lub zadaniem. Powinieneś przejrzeć skrypty, które dodałeś niedawno, i je usunąć, używając launchctl unload /sciezka/do/zadania.plist.

Jaka jest różnica między cron a launchd?

Zarówno cron, jak i launchd to usługi harmonogramowania, ale działają inaczej. cron to starszy, oparty na Uniksie harmonogram zadań, który uruchamia zadania w określonych czasach lub interwałach zdefiniowanych w pliku crontab. launchd to nowszy system Apple dla macOS, który może uruchamiać zadania na podstawie różnych wyzwalaczy – nie tylko czasu.

Czy mogę używać innych języków skryptowych oprócz bash z launchd?

launchd może wykonywać każdy skrypt, który można uruchomić z terminala. Obejmuje to skrypty napisane w Pythonie, Perlu, Rubym i innych językach.

Źródło obrazu: Pexels. Wszystkie zrzuty ekranu autorstwa Davida Morelo.

Często zadawane pytania: Ważne pytania i odpowiedzi

Jak korzystać z launchd macOS?

Aby korzystać z launchd w macOS, postępuj według poniższych kroków:

 

  • Zrozumienie launchd:
      - Launchd jest pierwszym procesem uruchamianym przez system operacyjny, który zarządza innymi procesami.
  • Używasz polecenia launchctl do interakcji z launchd – nie wchodzisz w interakcję bezpośrednio z nim.
  • Tworzenie pliku plist:
  • Aby zarejestrować skrypt lub program, stwórz plik plist (Property List), który określa parametry uruchomienia.
  • Plik ten powinien znajdować się w jednej z lokalizacji:
  • /Library/LaunchDaemons dla demonów uruchamianych na poziomie systemu.
  • /Library/LaunchAgents dla agentów działających na poziomie użytkownika.
  • ~/Library/LaunchAgents dla agentów działających tylko dla konkretnego użytkownika.
  • Zawartość pliku plist:
  • W pliku plist określ takie elementy jak:
  • Label: unikalna nazwa procesu.
  • Program: ścieżka do skryptu lub programu do uruchomienia.
  • RunAtLoad: wartość (true/false) wskazująca, czy uruchomić program przy starcie.
  • Ładowanie i rozładowywanie:
  • Użyj polecenia launchctl load /path/to/your.plist, aby załadować plik plist.
  • Aby rozładować proces, użyj launchctl unload /path/to/your.plist.
  • Monitorowanie procesów:
  • Możesz sprawdzić status za pomocą launchctl list, co pokaże aktualnie uruchomione usługi i ich identyfikatory.
  • Debugowanie:
  • W przypadku problemów z uruchamianiem, sprawdź logi systemowe, aby uzyskać więcej informacji na temat błędów. Dzięki tym krokom możesz skutecznie wykorzystać launchd do automatyzacji zadań na macOS.

 

Jak ustawić domyślny program na Macu?

Aby ustawić domyślny program na Macu, wykonaj następujące kroki:

 

  • Wybierz plik – Znajdź plik, którego typ chcesz zmienić.
  • Otwórz informacje – Kliknij plik z wciśniętym klawiszem Control (lub prawym przyciskiem myszy), a następnie wybierz „Informacje”.
  • Zmień aplikację – W oknie, które się otworzy, znajdź sekcję „Otwórz w aplikacji”.
  • Wybierz aplikację – Kliknij w menu podręcznym i wybierz aplikację, którą chcesz ustawić jako domyślną.
  • Zatwierdź zmianę – Kliknij „Zmień wszystkie”, jeśli chcesz, aby ta aplikacja otwierała wszystkie pliki tego typu. Uwaga: Nie klikaj w „Zmień wszystkie”, jeśli chcesz, aby ta aplikacja otwierała tylko zaznaczony plik.

 

Jak zakończyć program na Macu?

Aby zakończyć program na Macu, możesz skorzystać z jednej z poniższych metod:

 

  • Skrót klawiszowy:
      • - Naciśnij i przytrzymaj trzy klawisze:

    Option (lub Alt)

      • ,

    Command

      • ,

    Esc (Escape)

      . Otworzy to okno „Wymuś zamknięcie aplikacji”, gdzie możesz wybierać aplikacje do zamknięcia.
  • Menu Apple:
  • Kliknij ikonę Apple  w lewym górnym rogu ekranu.
  • Wybierz opcję Wymuś koniec.
  • W otwartym oknie wybierz aplikację i kliknij Wymuś zamknięcie. Te metody pozwalają szybko zakończyć działające programy, które mogą nie odpowiadać.

 

Jeśli ciekawią Cię artykuły podobne do Jak używać Launchd do planowania uruchamiania skryptów na Macu, zajrzyj do kategorii Mac i odkryj jeszcze więcej interesujących treści.

Indeks
  1. Co to jest Launchd?
  2. Demony i Agenci
  3. Pisanie Skryptów
  4. Opisy Zadań
  5. Ładowanie zadań do launchctl
  6. Często zadawane pytania
    1. Jak mogę sprawdzić, czy launchd uruchomił skrypt?
    2. Co jeśli launchd używa za dużo zasobów systemowych?
    3. Jaka jest różnica między cron a launchd?
    4. Czy mogę używać innych języków skryptowych oprócz bash z launchd?
  7. Często zadawane pytania: Ważne pytania i odpowiedzi
    1. Jak korzystać z launchd macOS?
    2. Jak ustawić domyślny program na Macu?
    3. Jak zakończyć program na Macu?

Możesz być zainteresowany

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Go up