- 10 Aralık 2025
- 482
- 2
Systemd, modern Linux dağıtımlarında kullanılan bir init sistemidir. Birçok kullanıcı, sistemlerini başlatmak ve yönetmek için bu aracı tercih ediyor. Peki, systemd’nin aslında ne yaptığını ve nasıl çalıştığını biliyor musunuz? İlk olarak, systemd’nin temel bileşenlerinden biri olan .service dosyalarını inceleyelim. Bu dosyalar, bir servisin nasıl başlatılacağı, durdurulacağı ve izleneceği gibi bilgileri içeriyor. Örneğin, bir web sunucusu için bir .service dosyası oluşturduğunuzda, bu dosya web sunucusunun ne zaman başlatılacağını ve hangi komutların kullanılacağını belirtmeli. Düşünün ki, bir web sunucusu için yapılandırma dosyanız şu şekilde olabilir:
```
[Unit]
Description=My Web Server
[Service]
ExecStart=/usr/bin/my-web-server
Restart=on-failure
[Install]
WantedBy=multi-user.target
```
Bu yapı, web sunucunuzun her açılışta otomatik olarak başlamasını sağlıyor. Şimdi, bu dosyanın nasıl oluşturulacağını ve yönetileceğini ele alalım. Terminalde bir metin düzenleyici açarak, `/etc/systemd/system/` dizinine gidip `my-web-server.service` adında bir dosya oluşturmalısınız. Ardından, yukarıdaki içeriği bu dosyaya yapıştırın ve dosyayı kaydedin. Sonrasında, `systemctl daemon-reload` komutunu çalıştırarak systemd'nin yeni servisi tanımasını sağlamalısınız. Son olarak, servisi başlatmak için `systemctl start my-web-server.service` komutunu kullanabilirsiniz. Bu aşamada, servisin durumunu kontrol etmek için `systemctl status my-web-server.service` komutunu da deneyebilirsiniz.
Servislerinizi yönetirken, bazen bir servisin güncellenmesi veya yapılandırmasının değiştirilmesi gerekebilir. Bu gibi durumlarda, değişikliklerinizi yaptıktan sonra yine `systemctl daemon-reload` komutunu kullanmayı unutmayın. Aksi takdirde, yaptığınız değişiklikler systemd tarafından algılanmayacaktır. Örneğin, eğer servisinizi bir güncelleme ile yeniden başlatmak istiyorsanız, `systemctl restart my-web-server.service` komutunu kullanarak bunu kolayca gerçekleştirebilirsiniz.
Systemd’nin sunduğu başka bir özellik de, servislere bağımlılık ekleme yeteneğidir. `After=` ve `Requires=` direktifleri ile bir servisin başka bir servise bağımlı olmasını sağlayabilirsiniz. Örneğin, veritabanı servisi olmadan web sunucusunun çalışmasını istemiyorsanız, .service dosyanızda şu şekilde bir ekleme yapabilirsiniz: `Requires=my-database.service` ve `After=my-database.service`. Böylece, web sunucusu kendi başına çalışmaya çalışmadan önce veritabanının aktif olmasını sağlamış oluyorsunuz.
Loglama da systemd ile oldukça kolay hale geliyor. Her bir servis için log kayıtları, `journalctl` aracı ile kolayca görüntülenebilir. Örneğin, `journalctl -u my-web-server.service` komutunu kullanarak yalnızca web sunucunuza ait logları görebilirsiniz. Bazen loglarda sorunlar görebilir ve bu sorunları çözmek için detaylı incelemeler yapmanız gerekebilir. Burada dikkat etmeniz gereken bir diğer nokta ise, log seviyelerini ayarlamaktır. `StandardOutput` ve `StandardError` gibi direktiflerle log düzeylerini özelleştirebilirsiniz.
Son olarak, unutmamanız gereken bir şey var: Servislerinizi yönetirken bazen hatalarla karşılaşabilirsiniz. Bu durumda, `systemctl` komutları oldukça faydalı olacaktır. Örneğin, `systemctl stop my-web-server.service` ile servisi durdurduktan sonra, hatayı çözmeye çalışabilir ve ardından servisi yeniden başlatabilirsiniz. Eğer bir sorunla karşılaşırsanız, hemen pes etmeyin; sorunun kaynağını anlamaya çalışın ve logları inceleyin...
Systemd ile çalışmak başlangıçta karmaşık görünebilir, ancak temel kavramları anladıktan sonra, bu araçla sistem yönetimi oldukça verimli hale gelecektir. Her yeni servis oluşturduğunuzda, bu deneyim size daha fazla bilgi kazandıracak ve sistem yönetiminde daha yetkin hale geleceksiniz.
```
[Unit]
Description=My Web Server
[Service]
ExecStart=/usr/bin/my-web-server
Restart=on-failure
[Install]
WantedBy=multi-user.target
```
Bu yapı, web sunucunuzun her açılışta otomatik olarak başlamasını sağlıyor. Şimdi, bu dosyanın nasıl oluşturulacağını ve yönetileceğini ele alalım. Terminalde bir metin düzenleyici açarak, `/etc/systemd/system/` dizinine gidip `my-web-server.service` adında bir dosya oluşturmalısınız. Ardından, yukarıdaki içeriği bu dosyaya yapıştırın ve dosyayı kaydedin. Sonrasında, `systemctl daemon-reload` komutunu çalıştırarak systemd'nin yeni servisi tanımasını sağlamalısınız. Son olarak, servisi başlatmak için `systemctl start my-web-server.service` komutunu kullanabilirsiniz. Bu aşamada, servisin durumunu kontrol etmek için `systemctl status my-web-server.service` komutunu da deneyebilirsiniz.
Servislerinizi yönetirken, bazen bir servisin güncellenmesi veya yapılandırmasının değiştirilmesi gerekebilir. Bu gibi durumlarda, değişikliklerinizi yaptıktan sonra yine `systemctl daemon-reload` komutunu kullanmayı unutmayın. Aksi takdirde, yaptığınız değişiklikler systemd tarafından algılanmayacaktır. Örneğin, eğer servisinizi bir güncelleme ile yeniden başlatmak istiyorsanız, `systemctl restart my-web-server.service` komutunu kullanarak bunu kolayca gerçekleştirebilirsiniz.
Systemd’nin sunduğu başka bir özellik de, servislere bağımlılık ekleme yeteneğidir. `After=` ve `Requires=` direktifleri ile bir servisin başka bir servise bağımlı olmasını sağlayabilirsiniz. Örneğin, veritabanı servisi olmadan web sunucusunun çalışmasını istemiyorsanız, .service dosyanızda şu şekilde bir ekleme yapabilirsiniz: `Requires=my-database.service` ve `After=my-database.service`. Böylece, web sunucusu kendi başına çalışmaya çalışmadan önce veritabanının aktif olmasını sağlamış oluyorsunuz.
Loglama da systemd ile oldukça kolay hale geliyor. Her bir servis için log kayıtları, `journalctl` aracı ile kolayca görüntülenebilir. Örneğin, `journalctl -u my-web-server.service` komutunu kullanarak yalnızca web sunucunuza ait logları görebilirsiniz. Bazen loglarda sorunlar görebilir ve bu sorunları çözmek için detaylı incelemeler yapmanız gerekebilir. Burada dikkat etmeniz gereken bir diğer nokta ise, log seviyelerini ayarlamaktır. `StandardOutput` ve `StandardError` gibi direktiflerle log düzeylerini özelleştirebilirsiniz.
Son olarak, unutmamanız gereken bir şey var: Servislerinizi yönetirken bazen hatalarla karşılaşabilirsiniz. Bu durumda, `systemctl` komutları oldukça faydalı olacaktır. Örneğin, `systemctl stop my-web-server.service` ile servisi durdurduktan sonra, hatayı çözmeye çalışabilir ve ardından servisi yeniden başlatabilirsiniz. Eğer bir sorunla karşılaşırsanız, hemen pes etmeyin; sorunun kaynağını anlamaya çalışın ve logları inceleyin...
Systemd ile çalışmak başlangıçta karmaşık görünebilir, ancak temel kavramları anladıktan sonra, bu araçla sistem yönetimi oldukça verimli hale gelecektir. Her yeni servis oluşturduğunuzda, bu deneyim size daha fazla bilgi kazandıracak ve sistem yönetiminde daha yetkin hale geleceksiniz.
