İçindekiler:

Linux Sunucuları için Hizmet İzleme Komut Dosyası: 4 Adım
Linux Sunucuları için Hizmet İzleme Komut Dosyası: 4 Adım

Video: Linux Sunucuları için Hizmet İzleme Komut Dosyası: 4 Adım

Video: Linux Sunucuları için Hizmet İzleme Komut Dosyası: 4 Adım
Video: Linux CURL Komutunun Kullanımı Ve Özellikleri 2024, Kasım
Anonim
Linux Sunucuları için Hizmet İzleme Komut Dosyası
Linux Sunucuları için Hizmet İzleme Komut Dosyası

Sabit, her zaman çalışan bir sisteme sahip olmak, Linux kullanıyor olsanız bile zor bir iş olabilir.

Modern yazılım paketlerinin karmaşıklığı ve kötü kodlama nedeniyle, kaçınılmaz olarak bazı işlemler zaman zaman çökebilir. Bir sunucu çalıştırıyorsanız ve bazı insanlar bu hizmetlere güveniyorsa bu kötü bir şey olabilir.

Adım 1: Systemd Tarafından Sağlanan Yöntemleri Kullanma

Bildiğiniz gibi, çoğu modern Linux işletim sistemi systemd kullanıyor.

systemd'ye aşina değilseniz, bu, wikipedia'ya göre:

"… UNIX System V veya Berkeley Software Distribution (BSD) init sistemleri yerine, kullanıcı alanını önyüklemek ve tüm süreçleri daha sonra yönetmek için Linux dağıtımlarında kullanılan bir init sistemi. …"

Birçok insan hala eski güzel init sistemini bu daha karmaşık süreç yönetim sistemiyle değiştirmenin neden gerekli olduğunu tartışıyor, ancak aşağıdaki bağlantıda iyi bir açıklama bulunabilir:

www.tecmint.com/systemd-replaces-init-in-l…

En önemli gelişme, init'in sıralı yaklaşımı yerine açılışta eşzamanlı ve paralel işleme nedeniyle sistemi init'ten daha hızlı getirebilmesidir.

systemd'nin derinliklerine inmeden, systemd'ye bir process eklemek için bir service file oluşturmalısınız. Böyle bir dosyanın sözdizimi çok basitten tamamen karmaşıka kadar değişebilir ve ayrıntılara girmeyeceğiz. Temel bir.service dosyasına sahip olmak için aşağıdaki girdileri kullanmak yeterlidir:

[Unit]Description=Uygulamanın açıklamasıDocumentation=https://wikipedia.org/ After=local-fs.target network.target[Service]Type=simpleExecStart=/usr/sbin/applicationExecReload=/usr/sbin/application reloadExecStop=/ usr/sbin/application stopRestart=her zaman[Yükle]WantedBy=çok kullanıcılı.target

Bunları /lib/systemd/system klasöründeki application.service dosyasına yerleştirin.

Bu seçeneklerin her birinin ne yaptığı aşağıdaki bağlantıda açıklanmıştır:

access.redhat.com/documentation/en-US/Red_…

Uygulamanızı başlatmak için aşağıdaki komutu verin:

sudo systemctl application.service'i başlat

Not:.service uzantısı atlanabilir.

Uygulamayı durdurmak için:

sudo systemctl uygulamayı durdur.service

Yapılandırma dosyası değiştirilmişse ve ayarları yeniden yüklemek istiyorsanız:

sudo systemctl yeniden yükleme application.service

Uygulamayı yeniden başlatmak için:

sudo systemctl application.service'i yeniden başlatın

Önyüklemede otomatik başlatmayı etkinleştirmek için:

sudo systemctl application.service'i etkinleştir

Bu etkinleştirilirse, sistemd işlem yöneticisi, sistem dosyası tarafından sağlanan ayarlara göre uygulamayı başlatmaya çalışır.

Devre dışı bırakmak için yukarıdakiyle aynı komutu kullanın, ancak 'disable' parametresiyle.

Servis dosyasına Restart=always koyarsanız, systemd işlemi izler ve işlem listesinde bulunamazsa, otomatik olarak yeniden başlatmayı dener.

eğer yerleştirirsen

Yeniden BaşlatSn=30

yeniden başlatma yönergesinden sonra, işlemi yeniden başlatmayı denemeden önce 30 saniye bekleyecektir. Başarısız bir hizmetin/uygulamanın sürekli olarak yeniden başlatılması, sistemde yüksek taleplere yol açabileceğinden (hata günlüklerinin yazılması, vb.)

Gördüğünüz gibi, systemd süreçleri izlemek için zaten bazı araçlar sağlıyor. Ancak bazı durumlarda bu yeterli olmayabilir. Ya bir işlem çıkmazsa (hala işlem listesinde olacak), ancak yanıt vermeyi durdurursa. Bu durumda, bir işlemin gerçekten çalışır durumda olduğundan emin olmak için ek kontrollerin yapılması gerekebilir.

Bu talimattaki komut dosyalarının kullanışlı olacağı yer burasıdır.

2. Adım: Service Checker Komut Dosyalarını Yapılandırma ve Kullanma

Çalışan işlemleriniz/hizmetleriniz üzerinde daha fazla kontrole ihtiyacınız varsa, bu komut dosyaları kesinlikle yardımcı olacaktır.

Kod biraz büyük olduğu için github'a yüklenir ve aşağıdaki depoda bulunabilir:

github.com/trex2000/Service-Monitor-Scripts/blob/master/checkService.sh

Tüm paketin 'kalbi'

checkService.sh

Kullanmadan önce hizmet klasörünün tam yolunu değiştirmelisiniz. Bu, betiğin başında bulunabilir.

Komut dosyası birkaç işlemi izleyebilir ve aşağıda açıklandığı gibi ek görevleri gerçekleştirebilir:

/services alt klasöründeki.serv veya.check uzantılı her dosyayı inceler ve 'uygulama' adı verilen etkin bir işlem olup olmadığını kontrol eder.

Bir uygulama için '.check' dosyası yoksa, yalnızca application.serv dosyası:

Eğer süreç aktifse, süreci aktif olarak kabul edecektir

İşlem etkin değilse, aşağıdaki komutu vererek hizmeti yeniden başlatır:

systemctl yeniden başlatma uygulaması

.serv dosyası boşsa!

.serv dosyası boş değilse ve yürütülebilir haklara sahipse, onu düz bir BASH betiği olarak çalıştırmayı deneyecektir.

Bu, yalnızca hizmeti yeniden başlatmanın yanı sıra ek bir şey yapılması gerekiyorsa yararlıdır.

Örneğin, spamd.serv dosyasında, yukarıdaki repodan, spamd hizmetinin ölmesi durumunda, bunun yerine spamassassin hizmetinin yeniden başlatılması gerekir ki bu da spamd'yi yeniden başlatacaktır. Sadece spam'i yeniden başlatmak yeterli olmaz.

Böyle bir serv dosyasının içeriği ihtiyaca göre düzenlenebilir.

Başka bir örnek pcscd.serv dosyasıdır. Bu durumda, birkaç başka süreç de yeniden başlatıldı/öldürüldü.

Bir kontrol dosyası varsa, işlemin çalışıp çalışmadığını kontrol ettikten sonra, ek kontroller yapmak için bu komut dosyasını da çalıştıracaktır.

Örneğin, oscam hizmeti için, başarılı olup olmadığını görmek için web arayüzüne bağlanmaya çalışan bir kontrol dosyası oluşturduk. Değilse, işlemin etkin olmasına rağmen hizmet yanıt vermiyor ve yeniden başlatılması gerekiyor. Hizmetin yeniden başlatılması,.check dosyasının kendisi tarafından gerçekleştirilmelidir/çağrılmalıdır.

Başka bir örnek, mediatomb DLNA hizmeti olacaktır.

Bu, DLNA istemcilerine video/ses içeriği sağlayan ve kendisini ağ üzerinde yayınlayan küçük bir sunucudur. Bazen hizmet kilitleniyor ve artık keşfedilemiyor, ancak süreç hala etkin olacak. Hizmetin keşfedilebilir olup olmadığını kontrol etmek için gssdp-discover adlı CLI yardımcı programı kullanıldı. DLNA sunucusunu kontrol eden kodun tamamı bir mediatomb.check betiğinin içine yerleştirildi.

Bunlar,.serv ve.check dosyalarını nasıl kullanabileceğinize dair sadece birkaç örnektir.

Yeni bir servisi izlemek için bir.serv ve gerekirse bir kontrol dosyası oluşturmalı ve içine ilgili scripti yazmalısınız.

Sadece işlemin varlığının kontrol edilmesi yeterli ise boş bir.serv dosyası yeterli olacaktır. Ek kontroller yapılması gerekiyorsa, bir.check dosyası oluşturulmalı ve işi yapmak için küçük bir komut dosyası yazılmalıdır.

Elbette,.sh betiği periyodik olarak çalıştırılmalıdır, bu nedenle bunun için bir cron işi de oluşturulmalıdır:

#her 5 dakikada bir çalışan hizmetleri kontrol edin*/5 * * * * /var/bin/ServiceCheck/checkService.sh >/dev/null

3. Adım: Son Düşünceler

Linux süreçlerinin izlenmesini büyük ölçüde kolaylaştırabileceğinden ve hizmetlerinizin kesinti süresini en aza indireceğinden, bu paketi yararlı bulacağınızı umuyorum.

Yenilerini oluşturursanız github'a ek komut dosyaları yüklemekten çekinmeyin. Sadece bana bildirin ve sizi katkıda bulunan olarak ekleyeceğim.

Önerilen: