Saya memiliki daemon launchd ~/Library/LaunchAgents
yang berfungsi dengan baik di Mavericks. Tetapi itu tidak akan mulai dalam beta publik Yosemite. Daemon plist seperti ini (nama pengguna saya darksair
dengan 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>
Pada dasarnya itu seharusnya berjalan ~/bin/retrmail.py
setiap 5 menit.
Saya perhatikan bahwa di Yosemite launchd ditingkatkan ke 2.0, dan launchctl memiliki perintah baru. Saya mencoba
sudo launchctl kickstart user/501/org.darksair.retrmail
dan katanya
Could not find service "org.darksair.retrmail" in domain for uid: 501
Saya juga mencoba sekolah tua
sudo launchctl load ~/Library/LaunchAgents/retrmail.plist
dan katanya
/Users/darksair/Library/LaunchAgents/retrmail.plist: Path had bad ownership/permissions
File ini milik saya dan grup staf. Saya mencoba keduanya 644 dan 600 izin dengan kesalahan yang sama.
Jadi, adakah yang tahu cara menjalankan daemon launchd di Yosemite dengan benar?
PEMBARUAN: Sepertinya file agen peluncuran saya harus dimiliki oleh root:wheel
. Setelah saya mengunyah, saya mencoba
sudo launchctl load ~/Library/LaunchAgents/retrmail.plist
dan itu tidak mengeluarkan kesalahan. Dan saya pikir deamon saya berjalan dengan baik. Saya akan membiarkan pertanyaan ini terbuka karena saya ingat dokumen launchd dengan jelas menyatakan bahwa file agen peluncuran dapat dimiliki oleh pengguna yang menjalankan daemon.
UPDATE2: Tidak itu tidak berjalan dengan benar. Itu dijalankan hanya sekali, tetapi tidak lagi, seolah-olah itu dibongkar.
UPDATE3: Saya memutakhirkan ke Yosemite public beta 3, dan mengubah agen saya menjadi ini
<?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>
Saya memuat kembali agen ini, dan saya pikir sekarang ini berfungsi dengan baik. Saya masih membiarkan pertanyaan ini terbuka karena saya tidak tahu apa yang salah dengan daftar saya sebelumnya.
Kesimpulannya, apa yang saya temukan adalah saya harus mengubah pemilik plist root:wheel
untuk memuatnya.