Różnica między uruchomieniem a uruchomieniem, rozładowaniem i zatrzymaniem

22

Czytałem stronę manuala launchctl i mam kilka pytań dotyczących jej funkcjonowania:

  • Jaka jest różnica między ładowaniem a uruchamianiem, rozładowywaniem i zatrzymywaniem?
  • Gdzie znajdę etykietę zadania dla demona, czy znajduje się ona w pliku plist?
Jason Rubenstein
źródło

Odpowiedzi:

14

TL; DR

  • Zwykle chcesz używać launchctl load -wi launchctl unload -w.
  • starti stopzwykle są zarezerwowane do testowania lub debugowania zadania.

Detale

  • launchctl start <label>: Rozpoczyna pracę. Zazwyczaj jest to zarezerwowane tylko do testowania lub debugowania określonego zadania.
  • launchctl stop <label>: Zatrzymuje pracę. Przeciwnie do startu i możliwe jest, że zadanie zostanie natychmiast ponownie uruchomione, jeśli zadanie zostanie skonfigurowane do działania.

  • launchctl remove <label>: Usuwa zadanie z launchd, ale asynchronicznie. Nie będzie czekać na zakończenie zadania przed jego powrotem, więc nie będzie obsługiwał błędów w tym przypadku.

  • launchctl load <path>: Ładuje i uruchamia zadanie, o ile zadanie nie jest „wyłączone”.
  • launchctl unload <path>: Zatrzymuje i zwalnia zadanie. Zadanie nadal uruchomi się ponownie przy następnym logowaniu / ponownym uruchomieniu.

  • launchctl load -w <path>: Ładuje i uruchamia zadanie, jednocześnie oznaczając je jako „nie wyłączone”. Zadanie uruchomi się ponownie przy następnym logowaniu / ponownym uruchomieniu.
  • launchctl unload -w <path>: Zatrzymuje i zwalnia i wyłącza zadanie. Zadanie NIE uruchomi się ponownie przy następnym logowaniu / ponownym uruchomieniu.

Gdzie znajdę etykietę zadania dla demona, czy znajduje się ona w pliku plist?

Tak, znajduje się w pliku plist i zazwyczaj odpowiada nazwie pliku plist.

Ryan McGeary
źródło
Dzięki, zaoszczędziłem kilka godzin 👏🏻
Dana Woodman
7

Ładowanie i rozładowywanie informuje uruchomionego o załadowaniu pliku konfiguracyjnego. Określa, czy uruchamia program i na jakich warunkach określa plik plist. Zadanie, które obecnie nie jest uruchomione, można uruchomić launchctl start ...i zatrzymać launchctl stop ....

Etykieta zadania jest zdefiniowana przez klucz etykiety, a nazwa listy zadań powinna również być etykietą zadania, po której następuje rozszerzenie listy zadań.

Jay Thompson
źródło
6
Jak usuwa się do tego czynnik? W szczególności czym różni się od rozładowania?
chrisortman 18.04.15
Usunięcie @chrisortman jest jak rozładowanie, z tym wyjątkiem, że nie czeka ono na zakończenie zadania. Po prostu wraca natychmiast bez sprawdzania, czy wystąpiły jakiekolwiek błędy.
Ryan McGeary