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.

admin

Share
Published by
admin

Recent Posts

Linux İşletim Sistemi Nedir?

Linux işletim sistemi, açık kaynak kodlu özgür bir işletim sistemidir. Günümüzde dünya genelinde pek çok…

1 ay ago

Cloud Sunucu mu? Dedicated Sunucu mu?

Cloud ve dedicated sunucu , günümüzde işletmelerin bilişim altyapılarını yönetmek için en çok tercih ettikleri…

2 ay ago

En İyi Veri Yedekleme Yöntemleri ve Önemi

En iyi veri yedekleme yöntemleri, bulut hizmetleri, yedekleme yaparken dikkat edilmesi gerekenlere dair her şey.

2 ay ago

VDS Nedir?

VDS (Sanal Ayrılmış Sunucu) donanım sanallaştırmasıdır. Ayrılmış sunucu tamamen tek bir kullanıcıya tahsis edilmiş fiziksel…

3 ay ago

Plesk SSH ile Mail Komutları

Plesk üzerinde, panel lisansınız bittiyse veya ssh üzerinde mail işlemleri yapmak isterseniz, aşağıdaki cli komutlarını…

4 ay ago

IPMI Şifre Sıfırlama

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

4 ay ago