tl; dr: OSX'in yerel işlem başlatıcısını ve yöneticisini kullanın launchd
,.
Bunu yapmak için bir launchctl
arka plan programı yapın. Senaryonun tüm yönleri üzerinde tam kontrole sahip olacaksınız. Bir kez koşabilir veya bir daemon olarak hayatta kalabilirsiniz. Çoğu durumda, bu yol.
- Apple Dev dokümanlarındaki talimatlara veya aşağıdaki daha fazla ayrıntıya
.plist
göre bir dosya oluşturun .
- Yerleştirmek
~/Library/LaunchAgents
- Giriş yapın (veya üzerinden manuel olarak çalıştırın
launchctl load [filename.plist]
)
Daha fazla bilgi için launchd
, wikipedia makalesi oldukça iyi ve sistemi ve diğer eski sistemlere göre avantajlarını açıklıyor.
İşte oturum açma sırasında bir komut dosyası çalıştırmak için belirli plist dosyası .
OSX El Capitan ve daha yeni sürümler için 2017/09/25 güncellendi ( José Messias Jr'a kredi ):
<?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>
Değiştir <string>
(: bu komutla başvuruda bulunduğu komut çalıştırılabilir olması gerektiğini not istediğiniz komutla Programı anahtarının sonra chmod a+x /path/to/executable/script.sh
tüm kullanıcılar için olduğundan emin olmak için).
Farklı kaydet ~/Library/LaunchAgents/com.user.loginscript.plist
launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist
Test etmek (veya doğrudan test etmek, çalıştırmak launchctl start com.user.loginscript
) için çalıştırın ve oturumu kapatın / oturum açın
/var/log/system.log
Hata mesajlarının kuyruğu .
Anahtar, bunun Kullanıcıya özel bir başlatma girişi olmasıdır, bu nedenle belirli bir kullanıcı için oturum açıldığında çalıştırılacaktır. Sisteme özgü başlatma cinleri (yerleştirilmiş /Library/LaunchDaemons
) önyükleme sırasında çalıştırılır.
Bir komut dosyasının tüm kullanıcılar için oturum açmada çalışmasını istiyorsanız, sanırım LoginHook tek seçeneğinizdir ve muhtemelen bunun nedeni de budur.