Tôi có một daemon launchd được đặt trong ~/Library/LaunchAgents
đó hoạt động tốt trong Mavericks. Nhưng nó sẽ không bắt đầu trong phiên bản beta công khai Yosemite. Trình tự daemon là như thế này (tên người dùng của tôi là darksair
với 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>
Về cơ bản, nó được cho là chạy ~/bin/retrmail.py
cứ sau 5 phút.
Tôi nhận thấy rằng trong launchem Yosemite được nâng cấp lên 2.0 và launchctl có các lệnh mới. Tôi đã thử
sudo launchctl kickstart user/501/org.darksair.retrmail
và nó nói
Could not find service "org.darksair.retrmail" in domain for uid: 501
Tôi cũng đã thử trường cũ
sudo launchctl load ~/Library/LaunchAgents/retrmail.plist
và nó nói
/Users/darksair/Library/LaunchAgents/retrmail.plist: Path had bad ownership/permissions
Các tập tin thuộc sở hữu của tôi và nhóm nhân viên. Tôi đã thử cả hai quyền 644 và 600 với cùng một lỗi.
Vì vậy, có ai biết làm thế nào để kích hoạt đúng một daemon launchd trong Yosemite?
CẬP NHẬT: Có vẻ như tập tin đại lý khởi động của tôi phải được sở hữu bởi root:wheel
. Sau khi tôi chown, tôi đã cố gắng
sudo launchctl load ~/Library/LaunchAgents/retrmail.plist
và nó đã không gây ra bất kỳ lỗi nào. Và tôi nghĩ rằng deamon của tôi đang chạy đúng. Tôi sẽ để câu hỏi này mở vì tôi nhớ tài liệu launchd nói rõ rằng tệp tác nhân khởi chạy có thể được sở hữu bởi người dùng đang chạy daemon.
CẬP NHẬT2: Không, nó không chạy đúng. Nó chỉ chạy một lần, nhưng không chạy lại, như thể nó đã được dỡ xuống.
CẬP NHẬT3: Tôi đã nâng cấp lên phiên bản beta 3 công khai Yosemite và thay đổi đại lý của mình thành
<?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>
Tôi đã tải lại đại lý này, và tôi nghĩ bây giờ nó đang hoạt động tốt. Tôi vẫn để câu hỏi này mở vì tôi không biết có vấn đề gì với câu hỏi trước đây của mình.
Để kết luận, những gì tôi tìm thấy là tôi phải thay đổi chủ sở hữu của plist root:wheel
để tải nó.