Kapatmak için ESC tuşuna basın

macOS’ta Servis (launchd) Oluşturma ve Uygulamayı Başlatma

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:

  1. /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.
  2. ~/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
  1. Label:
    • <key>Label</key>
    • Servisin benzersiz bir tanımlayıcısıdır.
  2. ProgramArguments:
    • <key>ProgramArguments</key>
    • Servisin çalıştırılması için kullanılacak komut ve argümanları içerir.
  3. RunAtLoad:
    • <key>RunAtLoad</key>
    • true değeri, servisin otomatik olarak başlatılacağını belirtir.
  4. KeepAlive:
    • <key>KeepAlive</key>
    • true değeri, servisin çökmesi durumunda veya sona ermesi durumunda otomatik olarak yeniden başlatılacağını belirtir.
  5. WorkingDirectory:
    • <key>WorkingDirectory</key>
    • Servisin çalıştırılacağı dizini belirtir.
  6. EnvironmentVariables:
    • <key>EnvironmentVariables</key>
    • Servisin çalışma ortamını belirlemek için kullanılır.
  7. 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:

Bash
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:

Bash
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:

Bash
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.

Bayram Alaçam

Merhaba, Ben Bayram Bursa'da yaşıyorum. Geniş Bir deneyime sahip olmakla birlikte, özellikle Javascript alanında uzmanlaştım ve bu alandaki tüm detaylarla ilgileniyorum. Mobil uygulama geliştirme konusunda da derin bir ilgi ve yetenek setine sahibim. Backend, veritabanı yönetimi ve DevOps konularında da deneyimliyim ve her projede güvenilir, ölçeklenebilir çözümler sunabilirim.Yeni teknolojileri öğrenmek benim için bir tutku. Hızla değişen teknoloji dünyasında güncel kalmak ve son trendleri takip etmek benim için önemli bir prensiptir

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir