Windows Service Management with Command Line

Windows Service Management with Command Line

Windows servisleri bir çok sistem uygulamasının ve programın kullandığı arabirimdir. Gerek işletim sistemi componentleri gerek 3. Party uygulamalar management için servislerin çalıştırılması ve işletilmesine gereksinim duyarlar.

Windows servis yönetimini anlamak için öncelikle Windows servislerinin ne olduğu ve hangi amaçlarla kullanıldığını bilmek gerekiyor.

Windows Servisleri Nedir ?

Windows servisleri Microsoft Windows işletim sisteminin core bileşenlerinden biridir. Sistemin ve uygulamaların kullandığı servisler herhangi bir user müdahalesine ihtiyaç duymadan uzun süreli işlemlerin oluşturulmasını, yürütülmesini ve yönetilmesini sağlar.

Herkesin anlayabileceği şekilde ifade edecek olursam. Bir kullanıcının bilgisayarı açtığını ve bir uygulamayı başlattığını düşünün, örneğin bir muhasebecinin muhasebe programını başlatması olsun. Bu programın başlatılması, yönetilmesi ve kapatılması tamamen bir kullanıcı müdahalesine gereksinim duyar. Kullanıcı müdahalesi olmadan bu uygulama çalışmaz, işlem yapmaz ve kapanmaz. Windows servisleri ise kullanıcının başlatmasına gerek kalmadan başlayabilir arka planda çalışabilir hatta kullanıcı oturumunu kapatsa bile bu servisler arka planda çalışmaya devam ettirebilir. Windows servisleri konfigürasyonla aksi belirtilmediği sürece bilgisayar açıldığında devreye girer.

Developerlar hizmet olarak yüklenen uygulamalar kullanarak kullanıcı müdahalesine gerek kalmadan processlerin işlemesini sağlayabilir. Özellikle sunucularda bu servisler çok kullanılır. Geliştiricilerin servis olarak yazmadığı bazı processler bile bir ara uygulama kullanılarak örneğin benim de kullandığım Firedeoman aracılığıyla servise dönüştürülerek kullanılabilir.

Windows Services Management

Windows service management işlemlerine başlayalım service management yaparken Microsoft’un 2 güçlü toolu olan Powershell ve CMD ikilisinden yararlanacağız. Tüm işlemleri, tabiri caizse boynuzun kulağı geçtiği; powershell üzerinden yapamamızın nedeni birazdan bahsedeceğimiz service controller “sc config” işlemlerini powershell den yapamıyor olmamız. Bir cmdlet yüklenerek yapılabilir belki ama bunun için ekstra efor ve zaman harcamaya gerek yok bu iki güçlü toolu birlikte kullanarak service management nasıl basitleştirebileceğimize bir örnek üzerinden bakalım.

Ben çalışmamı kendi client bilgisayarımdan görece basit olarak vereceğim siz bu management ister 10larca servise sahip olan Exchange server üzerinde yapın veya kendi sunucularınızdaki specific servislerin üzerinde yapın fark etmiyor.

Ben Örneğimde bilgisayarımda çalışan Adobe’ait servisleri listeleyeceğim ve bu running durumda olan servisleri önce kapatıp sonra start typelarını disable yapacağım ki bir daha bilgisayarım açıldığında hiç bir zaman bu servisler çalışmasın.

Daha kolay anlaşılması için Steplerimizi listeleyelim ve sonrasında başlayalım.

  1. İstediğim servislerin listelenmesi ve durumlarının gözlenmesi
  2. Sconfig ile servislerin istediğim konfigürasyona getirilmesi
  3. Bir batch file yaratılarak bu servislerin otomatik olarak yönetilmesi ve sonraki servislerim için referans dosya oluşturulması.

1 Numaralı stepimizle başlayalım;

Powershell admin olarak açıyorum ve istediğim servislerin listelenmesini sağlıyorum. Kullanacağım komut aşağıdadır.

Get-Service – DisplayName “adobe*”

Bu komutun anlamı displayname tanımı adobe belirlenmiş servisleri benim için listele.

Gelen çıktıda 4 adobe servisinin olduğunu ve running durumda olduklarını görüyorum.

İstediğimiz çıktıyı aldığmıza göre ilk adımımzı tamamladık, şimdi ikinci stepe geçebiliriz.

Hemen öncesinde Service Controller Command nedir kısa bir değinelim.

Windows işletim sistemi ve bir çok uygulamanın servisler dizinini kullandığını söylemiştik. Bu servislerin yönetimini gui ile service management (services.msc) ile yaparken. Çok daha fazla specific konfigürasyonu cli çalışan “service controller command” ile yapabiliyoruz.

Örnek olarak hemen cmd açıp basit bir komut çalıştırabilirsiniz. Cmd açın ve “sc query” yazın çalışan tüm servislerin kısa bir displayini görün.

Tüm parametreleri görmek için Microsoft sayfasına gidebilirsiniz.

2- Sconfig ile servis konfigürasyonunun yapılması;

Adobe servislerimi listelemiştim şimdi yapacağım işlem; önce bu servisleri kapatmak, sonrasında ise servislerin bilgisayarın her açılışında tekrar çalışmaması için disable duruma gelmesini sağlamak olacak.

Başlat cmd yaparak command line administrator olarak açıyorum (Administrator olarak çalıştırmazsanız erişim engeli ile karşılaşabilirsiniz). Ve çalışan servisi durduruyorum

Net stop “AdobeARMservice”

Sonrasında AdobeARMservice servisin açılışta disable duruma gelmesini sağlıyorum

sc config “AdobeARMservice” start= Disabled

Yukarıda komutta disabled yerine auto, manual v.s yapmak için aşağıdaki parametreleri kullanabilirsiniz.

Sc config start parametreleri;

start= auto à otomatik

start= demand à elle

start= disabled à disable

start= delayed-auto à otomatik gecikmeli

Konfigürasyonu yaptığımıza göre üçüncü ve son kısım processleri otomotize etme kısmı

Başta istediğim şeye dönecek olursan adobe’un çalıştırdığı servisleri belirlemek ve bu servislerin hepsini disabke edip açılışta başlamasını engellemek.

Bu işlem için bir metin editöründe komut setimi düzenliyorum ve bat dosyası olarak kaydediyorum. Siz aşağıdaki komutu kopyalarak kendinize göre düzenleyebilirsiniz.

@echo Servisler durduruluyor

Net stop “AdobeARMservice”

sc config “AdobeARMservice” start= Disabled

Net stop “AGMService”

sc config “AGMService” start= Disabled

Net stop “AGSService”

sc config “AGSService” start= Disabled

Net stop “AdobeUpdateService”

sc config “AdobeUpdateService” start= Disabled

Pause

Oluşturduğumuz script dosyasını çalıştırıp sonuçları görelim. Tüm servislerin durduğunu görüyoruz ve servis typeları disabled durumuna geliyor.

Son olarak Powershell komutumuzu kulanıp tüm konfigürasyonun istediğimiz gibi olduğunu görüyoruz.

Get-Service -DisplayName “adobe*” | Select-Object -Property *

Bu kaynak makale ile tüm windows servislerinizi cli üzerinden yönetebilir ve her zaman kullanacağınız scripler yaratabilirsiniz