Bazen sunucunuz garip davranır ve herhangi bir sorun nedeniyle bazı hizmetleri durdurur. Öenmli hizmetlerden birisi de MYSQL dir ve hizmetin durduğunu varsayalım. Bu yüzden, MySQL hizmetini kontrol edip otomatik başlatmaya çalışalım. Bunu her dakika kontrol etmek için Cron Job ile planlayalım.
NOT: Sunucunuza ssh erişiminiz olmalıdır.
- Shell Scripti Oluşturalım
- Adım 1: Terminali açın ve sunucunuza ssh ile root olarak giriş yapın.
- Adım 2: Shell dosyasını oluşturalım.
-
# cd ~ # nano mysqlrestartjob.sh
Burada root dizininde scripti oluşturmamızı sağlamış olduk. İsmini değiştirebilirsiniz.
-
Adım 3 : MySQL kontrol etmek ve yeniden başlatmak için komut dosyasını yazalım ve bir e-posta uyarısı gönderelim.
-
#!/bin/bash PATH=/usr/sbin:/usr/bin:/sbin:/bin echo "MySQL Cron Job" if [[ ! "$(/usr/sbin/service mysql status)" =~ "start/running" ]] then echo "MySQL Servisi Yeniden Başlatıldı." | mail -s "Auto MySQL Restart Job" [email protected] service mysql start else echo "MySQL Servisi Sorunsuz Çalışıyor..." fi
E-posta Konusu ve e-posta adresini değiştirdiğinizden emin olun.
-
Adım 4: Komut dosyası ile işiniz bittiğinde CTRL + x tuşlarına basın ve değişiklikleri kaydetmeniz istenecektir. Y yazın ve enter tuşuna basın. Terminale dönecektir ve root dizininde mysqlrestartjob.sh dosyası oluşturulacaktır.
-
Adım 5 : Dosyamız için yürütülebilir izinlerini verelim.
-
# chmod +x mysqlrestartjob.sh
- Ek Bilgi : Sunucunuzda mail komutu çalışmayabilir bu yüzden isterseniz terminale aşağıdaki komutu girerek kurulumunu yapınız , isterseniz mail komutunu kaldırınız.
-
# apt-get install mailutils
-
Test Zamanı...
Şimdi Scriptimiz hazır, çalışmasını test edelim.
Terminalde aşağıdaki komutları girin:
# /usr/sbin/service mysql status
Terminal böyle bir şey yazdıracaktır:
● mysqld.service - LSB: start and stop MySQL Loaded: loaded (/etc/init.d/mysqld; bad; vendor preset: enabled) Active: active (running) since Wed 2018-11-28 10:05:46 EST; 17h ago Docs: man:systemd-sysv-generator(8) CGroup: /system.slice/mysqld.service ├─ 994 /bin/sh /usr/local/apps/mysql/bin/mysqld_safe --defaul └─1192 /usr/local/apps/mysql/bin/mysqld --defaults-file=/usr/
Terminalde aşağıdaki komutları girin:
# /usr/sbin/service mysql stop
Bu komut ile MYSQL hizmetini durdurmuş olduk, Şimdi ise hazırladığımız scripti çalıştıralım.
Terminalde aşağıdaki komutları girin:
# ~/mysqlrestartjob.sh
Bu, hizmeti kontrol etmek ve yeniden başlatmak için oluşturduğumuz komut dosyasını çalıştıracaktır. Konuyla birlikte bir e-posta almalı ve komut dosyasında belirttiğiniz e-posta adresine mesaj göndermiş olmalıdır.
Servis durumunu tekrar görüntüleyelim. "Active: active (running)" şeklinde çıktı almanız lazım.
Terminalde aşağıdaki komutları girin:
# /usr/sbin/service mysql status
Bu adımda her şey yolunda giderse, Scriptimizi her dakika çalıştırmak için cron job oluşturalım.
- Cron Job Oluştur
- Adım 1: Cron Job Kurma
Sunucunuza root olarak ssh ile giriş yaptığınızdan emin olun, sonra terminalde aşağıdaki komutu yazın:
# crontab -e
Crontab ekranını gördüğünüzde, bu dosyanın sonunda aşağıdaki satırı yazın:
## */1 * * * * /root/mysqlrestartjob.sh
CTRL + x tuşlarına basın ve değişiklikleri kaydetmeniz istenecektir, Y düğmesine basın ve enter tuşuna basın.
Şimdi bizim cron job kuruldu.
- Adım 2 : Test Zamanı..
Hazırladığımız Cron Job un sorunsuz çalışıp çalışmadığını test edelim.
Terminalde aşağıdaki komutları girin:
# /usr/sbin/service mysql stop
Bu, sunucunuzda MySQL hizmetini durduracaktır. Şimdi bir dakika beklemeli ve mysqlrestartjob.sh dosyasında belirttiğimiz konu ve mesajla bir e-posta alıyor olmadığımızı görelim.
Evet Sonuç Başarılı...
Umarım faydalı bulursunuz.
Sevgiyle ve Bilgiyle Kalın...