Jak używać programu Uruchomiono do planowania uruchamiania skryptów na komputerze Mac

Automatyzacja zadań poprzez planowanie skryptów to potężna funkcja, z której wielu administratorów korzysta na co dzień. Zwykli użytkownicy komputerów Mac mogą również wykorzystać tę moc, korzystając z launchd, preferowanego narzędzia Apple do automatyzacji zadań i zarządzania nimi w systemie macOS. Od planowania prostych zadań, takich jak wyłączanie Wi-Fi o określonej godzinie, po tworzenie złożonych kopii zapasowych systemu, uruchomienie na komputerze Mac może pomóc zautomatyzować przepływ pracy, zaoszczędzić czas i zapewnić, że system będzie działał tak, jak lubisz.

Co jest uruchamiane?

Tak jak orkiestra potrzebuje dyrygenta, który będzie kierować różnorodnymi instrumentami i harmonizować je, tak macOS Ventura, ze swoimi niezliczonymi procesami i usługami, polega na uruchomieniu, aby zapewnić, że wszystko gra w doskonałej harmonii. Jako pierwszy proces uruchamiany przez jądro systemu macOS po uruchomieniu komputera, launchd zajmuje centralne miejsce, koordynując każdy kolejny proces, usługę i aplikację, podobnie jak dyrygent sygnalizujący początek symfonii początkowym podniesieniem pałeczki.

Oprócz swojej roli w orkiestracji systemu, launchd może służyć do planowania skryptów, czyli serii poleceń napisanych w celu wykonania określonego zadania. Odbywa się to za pomocą polecenia launchctl, które służy jako interfejs dla użytkowników do komunikacji i kierowania uruchamianym przewodnikiem.

Dobrze wiedzieć: pobieranie torrentów? Zwiększ wydajność, pobierając torrenty za pomocą Terminalu na komputerze Mac.

Demony i agenci

launchd jest czasami nazywany demonem, czyli programem komputerowym działającym w tle i zazwyczaj nie zaprojektowanym do bezpośredniej kontroli przez użytkownika. Jeśli chodzi o demony, launchd jest wyjątkowy, ponieważ jest mistrzem wszystkich innych demonów macOS i może decydować o ich uruchomieniu i zatrzymaniu. Te podporządkowane demony działają pod kontrolą użytkownika root, więc mogą zrobić prawie wszystko.

Jednakże dla użytkownika zainteresowanego planowaniem zadań uruchamianie skryptów przez użytkownika root nie zawsze jest pożądane lub konieczne. Tutaj do akcji 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 uruchomić skrypt zmieniający ustawienia lub uzyskujący dostęp do plików na Twoim koncie, użyj agenta.

Wskazówka: masz problemy ze zgodnością z niektórymi swoimi ulubionymi, używanymi od dawna aplikacjami na komputery Mac? Dowiedz się, jak zainstalować 32-bitowy system Linux na starym komputerze Mac.

Pisanie skryptów

Aby uruchomić agenty lub demony poprzez 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 po skryptach bash.

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

  • W przypadku skryptów, które mają być agentami działającymi w imieniu zalogowanego użytkownika, powinny być przechowywane w „~/Library/LaunchAgents”.
  • I odwrotnie, skrypty przeznaczone do działania jako demony działające w całym systemie operacyjnym, niezależnie od zalogowanego użytkownika, należą do „/Library/LaunchDaemons”.

Pamiętaj, że agenci nie mają uprawnień roota, więc nie mogą wykonywać zadań wymagających głębokiego dostępu do systemu. Z kolei demony działają z uprawnieniami roota i mogą obsługiwać zadania mające wpływ na cały system.

Dobrze wiedzieć: możesz uzyskać głębszą kontrolę nad komputerem Mac, włączając opcję Użytkownika root, umożliwiając dostęp do całego systemu plików.

Opisy stanowisk pracy

Skrypty w launchd są uruchamiane 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, i wskazują, kiedy skrypt powinien zostać uruchomiony. Po napisaniu skryptu napiszesz i załadujesz definicję zadania, która uruchomi skrypt w odpowiednim momencie. Definicja stanowiska wygląda mniej więcej tak:

    Etykieta local.restart Program /Users/user /Scripts/restart.sh RunAtLoad   

Zmodyfikuj w razie potrzeby, następnie umieść go w pliku tekstowym z rozszerzeniem .plist i upuść go we właściwym katalogu (patrz wyżej).

Opis stanowiska pracy składa się z kilku kluczowych części:

  • Etykieta: nazwa zadania w launchd. Musi być unikalny dla każdego zadania. Są one zapisane w odwrotnej notacji domeny, a „lokalna” to świetna domena dla prywatnych agentów.
  • Program: pełna ścieżka skryptu uruchamianego przez ten opis stanowiska.
  • Uruchom przy obciążeniu: opisuje, kiedy skrypt powinien zostać uruchomiony. Jest tu kilka różnych opcji:
    • RunAtLoad: uruchamia się natychmiast po załadowaniu definicji zadania. Uruchamia się tylko raz na obciążenie.
    • StartInterval: uruchamia zadanie co n sekund.
    • StartCalendarInterval: uruchom zadanie o określonej godzinie i dniu.

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

Ładowanie zadań do launchctl

Po utworzeniu skryptów i zapisaniu agenta we właściwym miejscu będziesz musiał załadować go do launchctl. W przyszłości stanie się to automatycznie podczas logowania.

Aby zobaczyć, co aktualnie działa w laucnhctl, możesz użyć listy launchctl w terminalu. Tę gigantyczną listę można wyszukać dla skryptu, oznaczając ją etykietą podobną do poniższej:

lista launchctl |  grep local.restart

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

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

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

launchctl rozładuj ~/Library/LaunchAgents/local.restart.plist

Załadowanie zadania umieszcza je w kolejce uruchamiania, a zadanie zostanie uruchomione o godzinie określonej w warunkach uruchomienia. Jeśli chcesz natychmiast uruchomić skrypt bez względu na wszystko, powinieneś użyć polecenia „start”:

launchctl start local.restart

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

Wskazówka: zostań zaawansowanym użytkownikiem komputera Mac, korzystając z Raycast lub Alfred, aby szybko uruchamiać swoje ulubione aplikacje.

Często Zadawane Pytania

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

Możesz użyć polecenia launchctl list w terminalu. Spowoduje to wyświetlenie wszystkich załadowanych zadań. Aby znaleźć konkretny skrypt lub zadanie, użyj grep, np. launchctl list | grep nazwa_skryptu.

Co się stanie, jeśli launchd zużywa zbyt wiele zasobów systemowych?

Jeśli launchd zużywa nadmierne zasoby, jest to zwykle spowodowane źle działającym skryptem lub zadaniem. Powinieneś przejrzeć ostatnio dodane skrypty i wyładować je za pomocą polecenia launchctl unload /path/to/job.plist.

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

Zarówno cron, jak i launchd są usługami planowania, ale działają inaczej. cron to starszy program do planowania zadań oparty na systemie Unix, który uruchamia zadania o stałych porach lub odstępach czasu zdefiniowanych w pliku crontab. launchd to nowszy system Apple dla systemu macOS, który może uruchamiać zadania na podstawie różnych czynników wyzwalających – nie tylko czasu.

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

launchd może wykonać dowolny skrypt, który można uruchomić z terminala. Obejmuje to skrypty napisane w Pythonie, Perlu, Ruby i innych językach.

Indeks
  1. Co jest uruchamiane?
  2. Demony i agenci
  3. Pisanie skryptów
  4. Opisy stanowisk pracy
  5. Ładowanie zadań do launchctl
  6. Często Zadawane Pytania
    1. Jak mogę sprawdzić, czy launchd uruchomił skrypt?
    2. Co się stanie, jeśli launchd zużywa zbyt wiele zasobów systemowych?
    3. Jaka jest różnica między cron i launchd?
    4. Czy mogę używać innych języków skryptowych oprócz bash z launchd?

Możesz być zainteresowany

Dodaj komentarz

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

Go up