macOS işletim sistemi, özel servisler oluşturmak ve yönetmek için güçlü bir araç olan launchd
‘yi kullanır. Bu yazıda, macOS’ta servis oluşturmanın temel adımlarını detaylı bir şekilde göreceğiz.
Adım 1: launchd Property List (plist) Dosyası Oluşturma
launchd
için kullanılan plist dosyasını oluşturun. /Library/LaunchDaemons/
veya ~/Library/LaunchAgents/
dizinlerinden birine, örneğin “com.bayramalacam.serve-app.plist
” adında bir dosya oluşturun buradaki dosya ismini uygulama adınıza göre özelleştirin.
Yukarıda belirttiğim LaunchDaemons ve LaunchAgent dizinlerini anlayalım:
- /Library/LaunchDaemons/:
- Bu dizin, tüm sistem kullanıcıları için geçerlidir ve genellikle sistem hizmetleri ve arka planda çalışan görevler için kullanırız.
- Root (sudo) yetkileriyle çalışan servisleri buraya yerleştiririz. Bu servisler genellikle sistemin başlatılması sırasında çalışır ve arka planda sürekli olarak çalışan işlemleri yönetir.
- ~/Library/LaunchAgents/:
- Bu dizin, yalnızca belirli bir kullanıcı için geçerlidir ve genellikle kullanıcı oturumu açıldığında başlaması gereken servisler veya görevler için kullanırız.
- Kullanıcı düzeyinde çalışan ve genellikle kullanıcının oturumu açıldığında başlatılan servisler buraya yerleştiririz.
Aşağıda plist dosyasını uygulamanıza göre düzenleyerek kaydedin.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.bayramalacam.serve-app</string>
<key>ProgramArguments</key>
<array>
<string>/Users/bayramalacam/.nvm/versions/node/v16.20.0/bin/node</string>
<string>/Users/bayramalacam/serve-app/serve.js</string>
</array>
<key>WorkingDirectory</key>
<string>/Users/bayramalacam/serve-app/</string>
<key>StandardOutPath</key>
<string>/Users/bayramalacam/serve-app/logs/output.log</string>
<key>StandardErrorPath</key>
<string>/Users/bayramalacam/serve-app/logs/error.log</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
Servis Dosyasının Alabileceği Parametreler
- Label:
<key>Label</key>
- Servisin benzersiz bir tanımlayıcısıdır.
- ProgramArguments:
<key>ProgramArguments</key>
- Servisin çalıştırılması için kullanılacak komut ve argümanları içerir.
- RunAtLoad:
<key>RunAtLoad</key>
true
değeri, servisin otomatik olarak başlatılacağını belirtir.
- KeepAlive:
<key>KeepAlive</key>
true
değeri, servisin çökmesi durumunda veya sona ermesi durumunda otomatik olarak yeniden başlatılacağını belirtir.
- WorkingDirectory:
<key>WorkingDirectory</key>
- Servisin çalıştırılacağı dizini belirtir.
- EnvironmentVariables:
<key>EnvironmentVariables</key>
- Servisin çalışma ortamını belirlemek için kullanılır.
- StandardOutPath ve StandardErrorPath:
<key>StandardOutPath</key>
ve<key>StandardErrorPath</key>
- Servisin standart çıkış ve hata çıkışlarını belirlemek için kullanılır
Bu parametreler, launchd
servis dosyalarının temelini oluşturan önemli ayarları içermektedir.
Adım 2: Servisi Aktif Edin ve Başlatın
Terminal’de aşağıdaki komutları kullanarak servisi başlatın ve sistem başlangıcında otomatik olarak başlamasını sağlayın:
launchctl load ~/Library/LaunchAgents/com.bayramalacam.serve-app.plist
launchctl start com.bayramalacam.serve-app
Adım 4: Servis Durumunu Kontrol Etme
Servisin durumunu ve çıktılarını kontrol etmek için aşağıdaki komutları kullanın:
launchctl list | grep com.bayramalacam.serve-app
cat ~/serve-app/logs/error.log
cat ~/serve-app/logs/output.log
Eğer bir servisi yeniden başlatmak istiyorsanız:
launchctl unload ~/Library/LaunchAgents/com.bayramalacam.serve-app.plist
launchctl load ~/Library/LaunchAgents/com.bayramalacam.serve-app.plist
Sonuç
Bu yazı, macOS üzerinde launchd
kullanarak kendi servislerinizi oluşturmanın temel adımlarını içeriyor. Sistem başlangıcında otomatik olarak çalışan ve istediğiniz görevi gerçekleştiren servisler, macOS yönetimini daha etkili hale getirmenize yardımcı olabilir.
Bir yanıt yazın