Mam uruchomionego demona, ~/Library/LaunchAgents
który działał dobrze w Mavericks. Ale nie rozpocznie się w publicznej wersji beta Yosemite. Plist demona jest taki (moja nazwa użytkownika to darksair
UID 501)
<?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>org.darksair.retrmail</string>
<key>ProgramArguments</key>
<array>
<string>/Users/darksair/bin/retrmail.py</string>
</array>
<key>KeepAlive</key>
<false/>
<key>StartInterval</key>
<integer>300</integer>
<key>LaunchOnlyOnce</key>
<false/>
<key>UserName</key>
<string>darksair</string>
<key>ProcessType</key>
<string>Standard</string>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/Users/darksair/Python/bin:/Users/darksair/Python3/bin:/Users/darksair/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
</dict>
<key>StandardOutPath</key>
<string>/Users/darksair/logs/retrmail.log</string>
<key>StandardErrorPath</key>
<string>/Users/darksair/logs/retrmail.log</string>
</dict>
</plist>
Zasadniczo ma on działać ~/bin/retrmail.py
co 5 minut.
Zauważam, że w Yosemite uruchomiono aktualizację do 2.0, a launchctl ma nowe polecenia. próbowałem
sudo launchctl kickstart user/501/org.darksair.retrmail
i powiedział
Could not find service "org.darksair.retrmail" in domain for uid: 501
Próbowałem też starej szkoły
sudo launchctl load ~/Library/LaunchAgents/retrmail.plist
i powiedział
/Users/darksair/Library/LaunchAgents/retrmail.plist: Path had bad ownership/permissions
Plik jest własnością mnie i grupy pracowników. Próbowałem z uprawnieniami 644 i 600 z tym samym błędem.
Czy ktoś wie, jak prawidłowo odpalić uruchomionego demona w Yosemite?
AKTUALIZACJA: Wygląda na to, że mój plik agenta uruchamiania musi być własnością root:wheel
. Po chown spróbowałem
sudo launchctl load ~/Library/LaunchAgents/retrmail.plist
i nie spowodowało to żadnego błędu. I myślę, że mój diamon działa poprawnie. Pozostawię to pytanie otwarte, ponieważ pamiętam, że uruchomiony dokument jasno stwierdza, że plik agenta uruchamiania może być własnością użytkownika uruchamiającego demona.
UPDATE2: Nie, to nie działało poprawnie. Uruchomiono go tylko raz, ale nie ponownie, tak jakby został rozładowany.
AKTUALIZACJA 3: Uaktualniłem do publicznej wersji beta 3 Yosemite i zmieniłem mojego agenta na to
<?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>org.darksair.retrmail</string>
<key>ProgramArguments</key>
<array>
<string>/Users/darksair/bin/retrmail.py</string>
</array>
<key>StartInterval</key>
<integer>300</integer>
<key>UserName</key>
<string>darksair</string>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/Users/darksair/Python/bin:/Users/darksair/Python3/bin:/Users/darksair/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
</dict>
<key>StandardOutPath</key>
<string>/Users/darksair/logs/retrmail.log</string>
<key>StandardErrorPath</key>
<string>/Users/darksair/logs/retrmail.log</string>
</dict>
</plist>
Ponownie załadowałem tego agenta i myślę, że teraz działa poprawnie. Nadal pozostawiam to pytanie otwarte, ponieważ nie wiem, co jest nie tak z moją poprzednią listą.
Podsumowując, znalazłem, że muszę zmienić właściciela plist root:wheel
, aby go załadować.