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?
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?
Odpowiedzi:
Tak, launchd
zapewnia , ż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, launchd
uruchomi 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.sh
uruchomienie zajmie 361 sekund, launchd
nie 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 „ launchd
sprawia, że twoja praca jest dla ciebie singlem, o ile przestrzegasz zasad dobrego zachowania w pracy ”.