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.
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.
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.
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 /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.
Linux işletim sistemi, açık kaynak kodlu özgür bir işletim sistemidir. Günümüzde dünya genelinde pek çok…
Cloud ve dedicated sunucu , günümüzde işletmelerin bilişim altyapılarını yönetmek için en çok tercih ettikleri…
En iyi veri yedekleme yöntemleri, bulut hizmetleri, yedekleme yaparken dikkat edilmesi gerekenlere dair her şey.
VDS (Sanal Ayrılmış Sunucu) donanım sanallaştırmasıdır. Ayrılmış sunucu tamamen tek bir kullanıcıya tahsis edilmiş fiziksel…
Plesk üzerinde, panel lisansınız bittiyse veya ssh üzerinde mail işlemleri yapmak isterseniz, aşağıdaki cli komutlarını…
Bilgi teknolojilerinde, sunucular ve network cihazları her zaman en önemli araçlar arasındadır. Özellikle veri merkezleri…