~/Library/LaunchAgents
매버릭스에서 잘 작동 하는 시작 데몬이 있습니다. 그러나 요세미티 공개 베타 버전에서는 시작되지 않습니다. 데몬 plist는 다음과 같습니다 (사용자 이름은 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>
기본적으로 ~/bin/retrmail.py
5 분마다 실행 됩니다.
Yosemite에서 launchd가 2.0으로 업그레이드되었으며 launchctl에 새로운 명령이 있음을 알았습니다. 나는 시도했다
sudo launchctl kickstart user/501/org.darksair.retrmail
그리고 그것은 말했다
Could not find service "org.darksair.retrmail" in domain for uid: 501
나는 또한 오래된 학교를 시도
sudo launchctl load ~/Library/LaunchAgents/retrmail.plist
그리고 그것은 말했다
/Users/darksair/Library/LaunchAgents/retrmail.plist: Path had bad ownership/permissions
이 파일은 나와 직원 그룹이 소유합니다. 동일한 오류로 권한 644와 600을 모두 시도했습니다.
요세미티에서 시작된 데몬을 올바르게 시작하는 방법을 아는 사람이 있습니까?
업데이트 : 내 시작 에이전트 파일을 소유해야합니다 root:wheel
. 나는 질식 후 시도
sudo launchctl load ~/Library/LaunchAgents/retrmail.plist
오류가 발생하지 않았습니다. 그리고 내 악마가 제대로 돌아가고 있다고 생각 합니다. 시작된 문서에 데몬을 실행하는 사용자가 시작 에이전트 파일을 소유 할 수 있음을 명확하게 기억하고 있으므로이 질문을 열어 두겠습니다.
UPDATE2 : 아니요 제대로 실행되지 않았습니다. 마치 언로드 된 것처럼 한 번만 실행되었지만 다시는 실행되지 않았습니다.
업데이트 3 : 요세미티 공개 베타 3으로 업그레이드하고 에이전트를 다음과 같이 변경했습니다.
<?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>
이 에이전트를 다시로드했는데 이제 제대로 작동한다고 생각합니다. 이전 plist에 어떤 문제가 있는지 모르기 때문에 여전히이 질문을 열어두고 있습니다.
결론적으로, 내가 찾은 것은 plist root:wheel
를로드하기 위해 plist의 소유자를 변경해야한다는 것입니다.