tl; dr: gunakan peluncur dan pengelola proses asli OSX launchd
,.
Untuk melakukannya, buat launchctl
daemon. Anda akan memiliki kontrol penuh atas semua aspek skrip. Anda dapat berlari sekali atau tetap hidup sebagai daemon. Dalam kebanyakan kasus, ini adalah jalan yang harus ditempuh.
- Buat
.plist
file sesuai dengan petunjuk dalam dokumen Apple Dev di sini atau detail lainnya di bawah ini.
- Tempatkan di
~/Library/LaunchAgents
- Masuk (atau jalankan secara manual melalui
launchctl load [filename.plist]
)
Untuk lebih lanjut tentang launchd
, artikel wikipedia cukup bagus dan menggambarkan sistem dan kelebihannya dibandingkan sistem yang lebih tua lainnya.
Inilah file plist khusus untuk menjalankan skrip saat masuk .
Diperbarui 2017/09/25 untuk OSX El Capitan dan yang lebih baru (kredit ke José Messias Jr ):
<?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.user.loginscript</string>
<key>ProgramArguments</key>
<array><string>/path/to/executable/script.sh</string></array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Ganti <string>
setelah kunci Program dengan perintah yang Anda inginkan (perhatikan bahwa skrip yang dirujuk oleh perintah itu harus dapat dieksekusi: chmod a+x /path/to/executable/script.sh
untuk memastikan itu untuk semua pengguna).
Simpan sebagai ~/Library/LaunchAgents/com.user.loginscript.plist
Jalankan launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist
dan keluar / masuk untuk menguji (atau untuk menguji langsung, jalankan launchctl start com.user.loginscript
)
Ekor /var/log/system.log
untuk pesan kesalahan.
Kuncinya adalah bahwa ini adalah entri launchd khusus pengguna, sehingga akan dijalankan saat login untuk pengguna yang diberikan. Daemon peluncuran khusus sistem (ditempatkan di /Library/LaunchDaemons
) dijalankan saat boot.
Jika Anda ingin skrip dijalankan saat masuk untuk semua pengguna, saya percaya LoginHook adalah satu-satunya pilihan Anda, dan mungkin itulah alasannya.