Merhabalar bu yazıda sizlere aktif operasyonların yapıldığı linux sunucularında müdahale gerektiren bazı durumlarda, linux işletim sisteminin bize sağladığı kolaylıktan, bu müdahaleyi bir kere yazılacak bir script ile sisteme yaptırmamızı sağlayan bash script yazımından bahsedeceğim.

Konuyu basitleştirmek adına üç ana başlık belirledim.

 

          1- Neden script yazmalıyız? Ne gibi kolaylıklar sağlar?

          2- Basit Tanımlar ve Bilgilendirmeler

          3- Günlük Hayattan Örnek ve Script Kodu

 

1- Neden script yazmalıyız? Ne gibi kolaylıklar sağlar?

Script yazmamızdaki temel amaç her işte olabileceği gibi sistemimizde de yaşanabilecek aksamaların önüne geçmek, sistemde yaşanabilecek sorunlar için uygun olmayan zamanlarda bilgisayar açmak durumunda kalmamak ve fiziksel olarak bilgisayara ulaşamadığımız durumlarda sorunun büyümesini engellemek gibi birçok sebep sayabiliriz.

Örn:  Veri akışı olan bir sunucunuzda okuma yapan sistem bozulduğunda, verilerin birikmesine, diski doldurmasına, sistemin yavaşlamasına, diğer çalışan kısımların da çalışmasını engellemesine ve hatta çökmesine yol açabilir.

Böyle zamanlarda iş saatleri dışında da ara ara sistemi kontrol etmek durumunda kalmak sinir bozucu olabilir.

Yaşanabilecek sorunları düşünmeden, her an yanınızda bilgisayar taşımadan, sosyal hayatınızı bölmeden, sistemde yaşanabilecek sorunların çözümünü kendi yerinize sisteme yaptırabilirsiniz(her konu için geçerli değil).

Script yazmak; sisteminizin otomatik bir şekilde kendini denetlemesini sağlar, iş yüklerinizi hafifletir ve hayatınıza devam etmenizi sağlar.

 

2- Tanımlar ve Bilgilendirmeler

Script

Script; komut dosyası, bir dizi talimat olarak tanımlayabiliriz. Komut dosyaları, görevleri ve tekrar eden işlemleri otomatikleştirmek için kullanılır. İşlevleri gerçekleştirmek için diğer yazılım veya araçlarla birlikte çalışır.

Bash Script

Unix’te bulunan en popüler programlama araçlarından biridir. Açılımı, “Bourne Again Shell”dir. Bash, bilgisayara talimat vermenizi ve onunla iletişim kurmanızı sağlayan bir kabuktur.

Script ve Bash Script için benzer birçok tanımı google aramalarında bulabilirsiniz.

Yukarıdaki tanımlardan sonra asıl konumuza dönecek olursak Bash Script ile ilgili birkaç başlangıç bilgisi verelim.

Bash Script’i diğer bir deyimle komut dosyası: silme(rm), kopyalama(cp), taşıma(mv) vb. için kullandığımız kodların bir text üzerinde birleştirilmesi, beraber bir şekilde sıralı görevmiş gibi adım adım çalışması gibi düşünebiliriz. Yani yazacağımız komutları komut satırı yerine, bir metin dosyasında sıralıyoruz. Komut satırında kullanılan kodları biliyorsanız, kısa sürede çok rahat script yazabilirsiniz.

Bash betik dosyalarının uzantısını .sh olarak belirtiriz.

Bu uzantıyı kullanarak bir dosya oluşturalım:

                touch firstScript.sh

 

Bir sonraki adımda ister script dosyanızı düzenleyin(vi veya vim editörü ile), isterseniz dosyanın okuma,yazma ve çalıştırma yetkilerini düzenleyin. Önce veya sonra fark etmeksizin, mutlaka dosyaya çalıştırma yetkisi vermek durumundasınız.

Burada kimlere yetki vermeniz veya vermemeniz önemlidir. Aşağıdaki örnekte geçen a+x veya 755 gibi değerlerin ne anlama geldiğini internette birçok kaynaktan öğrenebilirsiniz.

İki şekilde dosyalara yetki tanımlanır.

               chmod a+x  <dosyaadı> veya   chmod 755  <dosyaadı>

 

İzinler kısmı tamamlandıktan sonra vi, vim gibi metin editörleri vasıtasıyla bu dosya içerisine girip yapmak istediğiniz işlemlere göre komutları girmeniz gerekmektedir.

Dosyaları düzenlemek için aşağıdaki komutları kullanabiliriz.

               vi firstScript.sh   veya   vim firstScript.sh

 

Bash script komutlarımızı eklemeden önce mutlaka ilk olarak shebang veya shabang olarak adlandırılan #!/bin/bash komutu yazıyoruz. Bu kod ile ilgili bilgileri yine internette bulabilirsiniz.

Kodlarımızı yazdık ve sıra bu scripti çalıştırmaya geldi. Scriptleri aşağıdaki gibi iki şekilde çalıştırabilirsiniz:

               sh firstScript.sh  veya  ./firstScript.sh

 

Ek Bilgi: yazılmış bir script dosyanızı, başka bir script dosyası içinde kullanabilirsiniz.

Script yazımı sonrası testler yapıldıktan sonra bunu hayata geçirmek ve otomatik bir şekilde sisteme yaptırmak için, yazdığımız scripti crontab‘e cronjob eklememiz gerekir. Eklemediğimiz takdirde, yine bizim çalıştırmamız gerekecek.

 

Peki bu crontab olayı nedir?

Basitçe, belirli bir programa göre görevleri otomatik olarak gerçekleştiren bir sistemdir, diyebiliriz.

Kullanımı basittir. Sisteme ne kadar sürede tekrarlayacağını ve tekrarlanacak görevin adresini belirtmeniz gerekir. Tekrarlanacak görevin adresinin doğruluğundan emin olmalısınız.

crontab’e görev eklemek için komut satırında crontab -e komutunu yazdığınızda editör ile girmiş olursunuz. İçinde düzenleme yaptıktan sonra :wq ile kaydedip çıkabilirsiniz. Görevi devre dışı bırakmak istediğinizde başına # ekleyerek yorum satırına dönüştürebilirsiniz.

Ek Bilgi:  crontab -l   ile crontab’e girmeden daha önceden eklenmiş cronjob varsa görebilirsiniz.

Crontab’e cronjob ekleme:

               0 */2 * * * /Scriptler/firstScript.sh

Yukarıdaki örnekte yazdığımız cronjob ile  firstScript.sh scriptinin iki saatte bir çalıştırılması komutunu vermiş oluyoruz.

 

3- Günlük Hayattan Örnek

Girişte bahsettiğimiz örnek üzerinden devam edecek olursak; dosya akışı olan bir sunucumuzda bir süredir okuma yapan sistemimizin bozulduğunu farz edelim. Dosyalar sistemimize akmaya devam ediyor ve okuma yapılmadığı için dosyalar birikmeye başlıyor. Bu durumdan kaynaklı her gün bilgisayar açarak bu dosyaları silmek durumunda kalıyoruz. Bu hepimiz için can sıkıcı bir durum değil mi?

Bir kere yazılacak script ile her iki saatte bir dosya sayısının belirli bir sayıya ulaşıp ulaşmadığının sistem tarafından kontrol edildiği ve ulaştıysa sistem tarafından temizlendiği bir yapı sağlayabiliriz.

Örnek:  Aşağıdaki script; dosya2 dizininde bulunan ercan ile başlayan dosyaların 100 dosyaya veya daha fazlasına ulaşıp ulaşmadığını kontrol edip, ulaştı ise silinmesini sağlayıp ve işlem yapılan tarih ve saati bir txt dosyasına not olarak yazıyor.

Aşağıdaki script ile dosyaların birikmesini önlerken aynı zamanda yapılan işlemlerin ne zaman yapıldığını da takip etmiş oluyoruz.

 

Copy to Clipboard

 

Kodumuzu yazdıktan sonra dizin içindeki dosyaların düzenli kontrolünün sağlanması için bir cronjob eklememiz gerekiyor.

Komut satırında crontab -e yazıyoruz ve çalıştırıyoruz. Ardından editör ile düzenleme yapıyoruz.

Buradaki değerlerin ne anlama geldiğini anlatan birçok kaynak mevcut.

Insert modunu aktif ettikten sonra tekrarlama süresini ve scripti yazdığımız dosya yolunu eksiksiz şekilde vermemiz gerekiyor.

Aşağıdaki cronjob ile firstScript.sh script dosyasını crontab’e her iki saatte bir çalıştırmasını söylüyoruz.

 

Copy to Clipboard

 

Böylelikle basit birkaç kod satırı ile bilgisayarı açmak zorunda kalmadan, aklımızda soru işaretleri olmadan hayatımıza devam edebiliyoruz…