Czy LaunchAgent zapobiega powtarzalnemu wykonywaniu zadań?

2

Chcę zautomatyzować wykonywanie długotrwałego zadania. Powinien być uruchamiany raz dziennie, ale tylko wtedy, gdy poprzednie zadanie nadal nie działa. Czy mogę to zrobić za pomocą uruchomionego programu i jak?

Ortwin Gentz
źródło

Odpowiedzi:

2

Tak, launchdzapewnia , że masz tylko jedną instancję „agenta” i robi to za Ciebie automatycznie. Skonfiguruj normalnie swoje zadanie za pomocą StartInterval, aby zaplanować wykonanie zadania w tle, a system nie uruchomi nowej instancji, jeśli poprzednia instancja nie zakończyła się, zanim dotrze do zaplanowanego interwału uruchamiania.

Jeśli minie wiele interwałów harmonogramu, launchduruchomi się tylko jedna nowa instancja w następnym interwale. Jest w tym „mądry”.

Oto przykładowy plist:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd  
"> 
<plist version="1.0"> 
<dict> 
     <key>Label</key> 
     <string>com.mycompany.test</string> 
     <key>ProgramArguments</key> 
     <array> 
         <string>/some/path/to/a/script.sh</string> 
     </array> 
     <key>StartInterval</key> 
     <integer>60</integer> 
</dict> 
</plist>

W powyższym przykładzie, jeśli /some/path/to/a/script.shuruchomienie zajmie 361 sekund, launchdnie uruchomi 5 nowych instancji w tym przedziale czasowym i uruchomi tylko jedną nową instancję w 420-tym drugim znaku czasu.

Sformułowanie na stronie podręcznika launchd.plist (5) mówi tyle samo, ale sposób, w jaki jest napisany, sprawia, że ​​nie jest to oczywiste:

StartInterval

Ten opcjonalny klucz powoduje uruchamianie zadania co N sekund. Jeśli system śpi, zadanie zostanie uruchomione następnym razem, gdy komputer się obudzi. Jeśli przed wybudzeniem komputera pojawi się wiele interwałów, zdarzenia te zostaną połączone w jedno zdarzenie po przebudzeniu ze snu.

To ostatnie zdanie zasadniczo mówi „ launchdsprawia, że ​​twoja praca jest dla ciebie singlem, o ile przestrzegasz zasad dobrego zachowania w pracy ”.

Ian C.
źródło