Categories: Centos

Centos Servis Yazma

Centos Linux dağıtımını sunucu olarak kullanıyoruz ve bir dosyanın çalıştırılmasına ihtiyacımız var. Bir kaç farklı alternatifle çalıştırabiliriz.

Diyelim bir php betiğimiz var ve arka planda bu dosyanın sürekli çalışmasını istiyoruz.

Arka planda çalışması için (background process) prosesi background da çalıştırabiliriz.

Background process:

php dosya.php &
veya
nohup php dosya.php &

Bu şekilde dosyamız arka planda çalışacaktır. Fakat bu sağlıklı bir yöntem değildir ve terminalden (SSH) çıktığımızda dosya çalışmayı bırakacaktır.

Cron olarak çalıştırma

Dosyayı crontab’a ekleyip çıktığımızda da çalışmasını sağlayabiliriz. Fakat bu şekilde de dosya birden fazla kez çalışabilir (çalışıp çalışmadığını kontrol etmiyorsanız) ve sürekli gereksiz kaynak yiyecektir. Ve dosya bir şekilde çalışmayı bırakırsa tekrar çalışması için cron’u beklemek zorunda kalacaktır.

Centos sunucuda nasıl servis yazılır?

Dosyanın çalışmasını en iyi servis yazarak sağlayabiliriz. Dosya sonlansa dahi (kill ile süreç öldürülse dahi) otomatik olarak yeniden başlayacaktır.

Servis betiğimizi yazalım

Servis betiğimizi /etc/systemd/system/ klasörü altında çalıştıracağız.

cd /etc/systemd/system/
nano servisismi

Diyelim ve aşağıdakileri kopyalayalım;

[Unit]
Description=Live
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target
Alias=test.service

[Service]
User=root
Group=wheel
Restart=always
RestartSec=1
ExecStart=/usr/bin/php /var/www/html/dosya.php
ExecStop=/bin/kill  ${MAINPID}

# Execute pre and post scripts as root
PermissionsStartOnly=true

TimeoutSec=600

Restart=always
PrivateTmp=false

Description = Servis açıklaması

After = Hangi servisin daha önce çalışması gerektiğini söyler. Bu örnekte network ve syslog servisleri çalışıyor olması gerekiyor.

Alias = Servisin ismi

User=root Group=wheel : Hangi kullanıcı ve gruptan çalışacağı

Restart : Servis bir şekilde kapanırsa ne zaman restart edileceği biz her zaman (always) etsin diyoruz

RestartSec : Eğer yazılmazsa, sistem default 100ms sonra yeniden başlatmayı dener, biz 1 saniye sonra başlat dedik

ExecStart : Çalıştırmak istediğimiz binary(php) ve dosya adı (dosya.php)

StartLimitIntervalSec=10 : Servis kapanırsa, ve yeniden başlattığında başarılı olamıyorsa, systemde 10 saniyelik bir süre ile 5 defa yeniden dener, başlatamazsa bir daha denemez.

Servisin sistem başlangıcında çalışmasını istiyorsak;

systemctl enable servis.ismi

Servisi başlatma;

systemctl start servis.ismi

Servisi durdurma;

systemctl stop servis.ismi

Eğer servis dosyasında bir değişiklik yaparsanız daemon servisini yeniden başlatmanız gerekecektir.

systemctl daemon-reload

İşlemler bu kadar.

pendc

Share
Published by
pendc

Recent Posts

IPMI Şifresi Nasıl Sıfırlanır?

Bilgi teknolojilerinde, sunucular ve network cihazları her zaman en önemli araçlar arasındadır. Özellikle veri merkezleri…

2 gün ago

Plesk Panelde Ücretsiz SSL Sertifikası Kurulumu

SSL NEDİR? SSL sertifikasının ne olduğu hakkında fikriniz olmayabilir ya da birileri web sayfanızın SSL sertifikasına…

2 gün ago

Plesk Panel E-Posta Adresi Oluşturma

Dünya genelinde en çok kullanılan hosting kontrol paneli Plesk Panel’de e-posta oluşturmak için gerekli adımları…

2 gün ago

Outlook’a E-Posta Hesabı Eklemek

Outlook iş dünyası ve bireysel hayatımız dahil olmak üzere çok yaygın bir kullanıma sahip olan,…

2 gün ago

iPhone E-Mail Kurulumu Nasıl Yapılır?

Apple cihazlar günümüzde kullanımı kolay bir işletim sistemine sahiptirler, e-mail kurulumları da oldukça kolaydır. Aşağıda…

2 gün ago

Vmware ESX Snmp Konfigürasyonu Nasıl Yapılır?

ESX veya ESXi, günümüz sanallaştırma platformlarından kuşkusuz en çok kullananı ve en çok rağbet göreni.…

2 gün ago