Pardus:Servis Betikleri

PardusWiki, özgür ansiklopedi

Git ve: kullan, ara

Konu başlıkları

[değiştir] Servis Betikleri

Servis betikleri, Comar'ın sistem servislerinin yönetimi için kullandığı, PİSİ paketleri ile gelen Python uygulamalarıdır. Comar'a System.Service çağrısı (start, stop, info, ...) gönderildiğinde, ilgili paket ile birlikte gelen servis betiği çalıştırılır.

Servis betiği, aşağıdaki gibidir. Sunucunun çalıştırılması, durdurulması ve o anki durumunun öğrenilmesi için gerekli 3 method tanımlanması yeterlidir. Bu üç işlem herhangi bir yöntem ile yapılabilir, ancak servis betiklerinin ortak bir formatta olması ve betiğin yazılmasını kolaylaşması için ÇOMAR-API ile birlikte gelen servis modülü kullanılması tavsiye edilir. ÇOMAR-API, /usr/lib/pardus/comar altında bulunabilir.

serviceType = "server"
serviceDesc = _({"en": "Server",
                 "tr": "Sunucu"})

from comar.service import *

@synchronized
def start():
    startService(command="/usr/bin/sunucu",
                 args="start",
                 pidfile="/var/run/sunucu.pid",
                 donotify=True)

@synchronized
def stop():
    stopService(command="/usr/bin/sunucu",
                args="stop",
                donotify=True)

def status():
    return isServiceRunning("/var/run/sunucu.pid")

[değiştir] serviceType

Bu değişken üç değer alabilir: server, local, script.

local: Yerel servisler server: Sunucular script: Betikler

için kullanılmalıdır. Arkaplanda bir süreç oluşturmayan her paket script olmalıdır.

[değiştir] serviceDesc

serviceDesc = _({"en": "Server",
                 "tr": "Sunucu"})

Servis yönetim arabirimleri tarafından kullanılan servis açıklaması, bu değişken ile belirlenir. _() metodu ile, çağrının yapıldığı dile ait açıklamanı gösterilmesi sağlanır.

[değiştir] @synchronized Dekoratörü

Servisler, aynı anda birden fazla uygulama tarafından çalıştırılabilmektedir. Olası race-condition'ları engellemek için @synchronized dekoratörü kullanılmalıdır. Bu dekoratör ile, bir methodun işi bitene kadar diğer method çağrısı bekletilir.

[değiştir] Service API

Sunucu çalıştırma ve durdurma işlemleri, os.system() ya da Popen() komutuyla yapılabilir. Ancak uygulamaların ortak bir çalıştırma formatı olmadığı için servis betikleri okunmaz bir hal alabilir. Bunu önlemek için sık kullanılan çalışma formatlarını destekleyen bir servis API'si oluşturulmuştur.

[değiştir] startService()

Aşağıdaki parametreler kullanılabilir:

command  : Çalıştırılacak servis [str]
args     : Uygulamaya gönderilecek parametreler (opsiyonel) [str]
pidfile  : Çalışan servisin süreç numarasını tutan dosya. [str]
           (Çalışan bir süreç varsa servis tekrar çalıştırılmaz.)
makepid  : Uygulama, kendi pidfile'ını oluşturmuyorsa, pidfile oluştur. Genellikle detach parametresiyle birlikte kullanılır. [True/False]
nice     : Sürecin önemi [int]
chuid    : Süreci başlatırken kullanılacak kullanıcı:grup [str:str]
detach   : Süreç kendini arkaplana atmıyorsa, süreci forkla ve arkaplana at. [True/False]
donotify : Servis çalıştıktan sonra ÇOMAR notify, hata oluşursa fail() gönder [True/False]

[değiştir] stopService()

Aşağıdaki parametreler kullanılabilir:

pidfile  : Durdurulacak süreç numarasını içeren PID dosyası [str]
command  : Pidfile yoksa, durdurulacak uygulamanın adresi [str]
           (/proc taranır ve command değerine sahip süreç yokedilir)
args     : Argüman listesi. (Komut ile birlikte bir argüman vererek durdurulan servisler için) [str]
           (/proc taranmaz, <command args> komutu çalıştırılır)
chuid    : Süreci yokederken kullanılacak kullanıcı:grup [str:str]
user     : Belirli bir kullanıcıya ait süreci öldürürken kullanılacak kullanıcı adı [str]
signalno : Süreç yokedilirken kullanılacak sinyal no [int]
donotify : Servisi durdurduktan sonra ÇOMAR notify, hata oluşursa fail() gönder [True/False]