Saya ingin skrip (bash / zsh / ruby / ...) dijalankan pada saat boot di OS X. Apa cara paling sederhana untuk melakukan ini, tanpa mengacaukan file xml / plist, dan lebih baik tidak perlu membuat meta AppleScript .
Saya ingin skrip (bash / zsh / ruby / ...) dijalankan pada saat boot di OS X. Apa cara paling sederhana untuk melakukan ini, tanpa mengacaukan file xml / plist, dan lebih baik tidak perlu membuat meta AppleScript .
Jawaban:
MacOS X menggunakan Vixie cron, yang memiliki meta tag khusus untuk diluncurkan pada saat reboot. Lihat halaman manual untuk format file.
sesuatu seperti:
@reboot /path/to/script.sh
di crontab Anda akan bekerja. Saya tidak yakin bahwa ini solusi yang lebih baik daripada launchd, Anda mungkin memiliki lebih banyak alat meta yang terlihat di launchd daripada cron.
Jika Anda mengubah pendapat Anda:
<?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.superuser.245713</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/script.sh</string>
</array>
<key>UserName</key>
<string>someuser</string>
</dict>
</plist>
Simpan seperti com.superuser.245713.plist
di /Library/LaunchAgents/
dan buat root:wheel
pemilik / grup.
/Library/LaunchAgents
daripada /System/Library/LaunchDaemons
karena itu /System
adalah hal-hal spesifik OS dan yang di bawah /Library
lebih banyak digunakan untuk hal-hal pihak ketiga. Juga, LaunchDaemons
"harus mengandung item yang akan berjalan sebagai root, umumnya proses latar belakang" di mana sebagai LaunchAgents
"dijalankan sebagai pengguna atau dalam konteks userland". Sumber kutipan itu adalah artikel hebat di launchd yang saya baca untuk pertanyaan launchd.
Ada juga Login Hooks jika Anda lebih suka skrip dijalankan (sebagai root) ketika pengguna login daripada saat mesin di-boot.
cron
pada OS X tidak terlalu bagus dengan logging secara default (ada topik tentang itu hanya beberapa hari yang lalu).