Linux Snap ve Döngü Aygıtları

Merhabalar, uzun süredir bir yazı yayımlamadım. Bunun nedeni kendimi, bir yazı yazmak için konu belirlemek, bu konu üzerinde araştırma yapmak, neyi nasıl yazacağımı planlamak ve yazıyı oluşturmak gibi benim için uğraştırıcı bir süreci tamamlamak zorunda hissetmemden kaynaklanıyor. Bu yazıda bu süreci atlayıp detay araştırma yapmadan kısa bir araştırma sonucu elde ettiğim bilgileri aklıma ilk geldiği gibi yazacağım. Belki bundan sonra bu şekilde devam ederim.

Bu yazımın konusu yeni keşfettiğim bir sistem. Linux kullanıcıları her dağıtımın kendisine ait bir uygulama deposunun olduğunu ve uygulamaların bir çoğunun bu depo aracılığı ile kurulup güncellendiğini bilir. Çoğu zaman kullandığınız programın yeni versiyonunun kullandığınız dağıtımın deposuna girmesi yeni sürümün yayımlanmasında belli bir süre sonra gerçekleşir. Kimi dağıtım daha hızlı bir şekilde yeni versiyonu hazırlarken kimisi biraz daha yavaş olur. Her dağıtımın kurulum paketinin hazırlanması da farklılıklar gösterir. Bu durum linux dünyasında gereksiz bir yük oluşturmaktadır. Uygulamanın sahibinin uygulamayı yayımlaması yetmez birde farklı dağıtımlar için paketleri hazırlaması gerekir. Eğer bunu uygulama geliştiricisi yapmazsa bu görev dağıtım geliştiricilerine kalır. Yeni keşfettiğim sistem bu sorunun önüne geçmek için büyük fırsat. Bu sistemin adı Snapcraft.

Snapcraft

Snapcraft, tıpkı composer,npm ve bower gibi bir paket yöneticisi. Linux sistemler için geliştirilmiş uygulamaların kurulumu güncellenmesi ve sistemden kaldırılması işlemlerini kolaylıkla yapmamızı sağlıyor ve popüler Linux dağıtımları tarafından destekleniyor. Snap Destekleyen Dağıtımlar

Bir uygulama kurmak için aşağıdaki gibi bir komutu çalıştırmanız yeterli (önr. libreoffice kurulumu):

[bash]sudo snap install libreoffice[/bash]

herhangi bir uygulamayı güncellemek için :

[bash]sudo snap refresh libreoffice[/bash]

tüm uygulamaları güncellemek için herhangi bir uygulama ismi vermeden refresh parametresini çalıştırmanız yeterli. Bir uygulamanın snap paketi olup olmadığını kontrol etmek için find parametresini kullanabilirsiniz.

[bash]sudo snap find <uygulama adı>[/bash]

daha fazla komut için şu sayfayı inceleyebilirsiniz: https://www.ubuntu.com/desktop/snappy

Döngü Aygıtları

Snap ile bir uygulama kurduğunuzda dosya yöneticinize yeni aygıtlar eklendiğini göreceksiniz. Bu aygıtlar döngü aygıtları olarak isimlendirilmekte (/dev/loop). Snap ile bir uygulama kurulumu yaptığınızda bu uygulama bilgisayarınıza yeni bir aygıtmış gibi kurulmaktadır. Gördüğünüz bu döngü aygıtları kurduğunuz programlara ait dosyaların bulunduğu birer flash bellek gibi bilgisayarınıza bağlanmış halidir.

Görüntü kirliliğinin önüne geçmek için bu aygıtları dosya yöneticinizde gizleyebilirsiniz.

Döngü aygıtı gizle

Döngü aygıtları hakkında daha fazla bilgi için : https://www.wikiwand.com/en/Loop_device

Devam

Ubuntu’ da Scratch Ofline Editor Kurulumu

Scratch özellikle 8 ile 16 yaş arasındaki çocuklar olmak üzere her yaştan insanlara programla temellerini öğretmek ve yeteneklerini geliştirmek için MIT üniversitesinde geliştirilen bir programlama dilidir. Scratch ile kendi etkileşimli hikayenizi oluşturabilir, oyunlar ve animasyonlar hazırlayabilirsiniz.

Devam

Cronjob Ne İşe Yarar

Cronjob linux sistemlerde bir programcığı belli aralıklarda sürekli çalıştırmamıza imkan tanıyan bir işlevdir. Cronjob sayesinde her 5 dakikada bir , saatte bir ,günün belli saatlerinde, haftanın belli saatlerinde vb. sekillerde zamanlama belirleyip istediğimiz bir komutun çalışmasını sağlayabiliriz. Mesela her gece saat 02:00 da sistemin veri tabanı yedeğini almasını sağlayacak bir programcık yazıp saati geldiğinde çalışmasını sağlaya biliriz. her saat başı sistem yükünü mail olarak bildirecek bir programcık yazabiliriz. Bunlar gibi daha bir çok tekrarlı iş cronjob ile kolaylıkla yapılabilir.

Kullanımı

crontab_explanation

Bir cronjob ayarlamak için konsolda “crontab -e” komutunu kullanıyoruz. “crontab -e” komutu çalıştırılırken aktif olan kullanıcı hangi kullanıcı ise yapılan değişiklikler sadece o kullanıcını oturumu açık olduğu zaman çalıştırılır. Örneğin: sametatbasch kullanıcısı ile crontab -e komutunu çalıştırdığımda yapacağım düzenlemeler sadece sametatabasch kullanıcısı aktif olduğu zaman çalıştırılır. Sistemin çalıştığı her an komutların çalışmasını istiyorsanız. root kullanıcısı ile değişiklik yapmalısınız. Root kullanıcısına direk erişiminiz yok ise sudo komutu ile bu işlemi yapabilirsiniz.

[bash]sudo crontab -e[/bash]

komutunu çalıştırdığımızda cronjob listesi gelecektir. Herbir satır farklı bir komutu belirtir. Her satırda 5 tane zaman belirteci ve son olarak çalıştırılacak komut yazılır. Bu alanların her biri diğerinden boşluk ile ayrılır. Zaman belirteçleri sıra ile şunları ifade eder: dakika (0-59), saat (0-23, 0 = gece yarısı), gün (1-31), ay (1-12), haftanın günü (0-6, 0 = Pazar).

[bash]01 04 1 1 1 /usr/bin/somedirectory/somecommand[/bash]

 

yukarıdaki satır her Ocak ayının ilk haftasının ilk gününde saate 04:01 de yani her Ocak ayının ilk pazartesi gününde  /usr/bin/somedirectory/somecommand komutunu çalıştıracaktır.

[bash]01 04 * * * /usr/bin/somedirectory/somecommand[/bash]

 

zaman belirteci olarak * işareti kullanırsanı o belirtecin tüm değerlerinde çalıştırılacağı anlamına gelir. Yukarıdaki örnekte her yılın her ayının her gününde saat 04:01 de yani hergün 04:01 de belirtilen komutu çalıştıracaktır.

Zaman belirteçlerinde virgül kullanarak birden fazla değer girişi yapabilirsiniz.

[bash]01,31 04,05 1-15 1,6 * /usr/bin/somedirectory/somecommand[/bash]

 

bu crontab satırı her 1. ve 6. ayın 1. ve 15. günü saat 04:01, 04:31, 05:01, ve 05:31 de belirtilen komutu çalıştıracaktır.

Zaman belirteçlerinde bölme işlemini kullanarak da tanımlama yapabilirsiniz. Örneğin her 10 dakikada bir çalıştırılacak bir komut için :

[bash]*/10 * * * * /usr/bin/somedirectory/somecommand[/bash]

bu kod aşağıdaki ile aynı işi görecektir.

[bash]*/10 * * * * /usr/bin/somedirectory/somecommand[/bash]

Ayrıca zaman belirteçleri için bazı anahtar kelimeler de kullanabilirsiniz. Bunlar:

Anahtar          Anlamı

@reboot          başlangıçta bir kere çalıştırır.

@yearly          Her yıl çalıştırılır, “0 0 1 1 *”.

@annually     (@yearly ile aynı)

@monthly     Ayda bir çalıştırılır, “0 0 1 * *”.

@weekly        Haftada bir çalıştırılır, “0 0 * * 0”.

@daily            Günde bir çalıştırılır, “0 0 * * *”.

@midnight    (@daily ile aynı)

@hourly         Saatte bir çalıştırılır, “0 * * * *”.

[bash]@reboot /path/to/execuable1[/bash]

Crontab fonksiyonunu hiç kullanmadan saatlik, günlük, haftalık ve aylık işlemleri çalıştırmak için /etc/ dizininde bulunan cron.hourly/ cron.daily/ cron.weekly/ cron.monthly/ dizinlerine çalışrıtmak istediğiniz komut dosyasını ekleye bilirsiniz.

KDE masaüstü ortamında görsel arayüz kullanarak bu işlemleri yapmak için Sistem Ayarları -> Başlatma ve Kapatma -> Görev Zamanlayıcı menüsünü kullanabilirsiniz.

 

Devam

MysqlDump ile Veri Tabanı Yedeği Nasıl Alınır

Merhabalar, sistem yöneticileri için yedek almak oldukça önemli bir işlemdir. Yönettiğiniz sunucunun başına her hangi bir sorun geldiğinde, sistemi kısa sürede eski haline getirmeniz beklenir. Bu nedenle düzenli olarak sistemin yedeklenmesi gerekir. Bu yazıda Mysql veri tabanı yedeği almak için kullanılan kullanışlı bir uygulamadan bahsedeceğim.

 

NOT: Eğer mysql-client-5.7.8 ve üzeri sürümleri kullanıyorsanız mysqldump yerine mysqlpump komutunu kullanmanız performans açısından daha iyi olacaktır.

Mysqldump

Mysqldump uygulaması Mysql(mysql-client-5.7) kurulumu ile birlikte sisteminize kurulan bir uygulamadır. Benim düşünceme göre mysql yedeği almak için kullanılacak en kullanışlı uygulamadır. Mysqldump kullanımı oldukça basit. Mysqldump ile tüm veritabanlarını, belli veritebenlarını, bir veri tabanının tüm tablolarını yada istediğiniz tablolarını yedekleyebilirsiniz.  Mysqldump uygulamasının temel söz dizimi aşağıdaki gibi,

[bash]mysqldump [arguments] > file_name[/bash]

mysqldump uygulamasının mysql sunucusu ile bağlantı kurması için –host, –user ve -password parametrelerini kullanıyoruz. –host parametresini kullanmazsanız localhost üzerindeki mysql sunucusuna bağlanacaktır. –user parametresini kullanmazsanız konsolda aktif olan kullanıcı adı otomatik olarak kullanılacaktır. –password parametresini kullanmadığınızda şifre kullanmadan giriş yapmayı deneyecektir. Bu parametreler yerine – ve parametre ilk harfi şeklinde kullanabilirsiniz, –host için -h gibi.

Yedek Alma İşlemi

Şimdi gelelim yedek alma işlemine. Tüm veri tabanının yedeğini almak için:

[bash]mysqldump -u root -p –all-databases > yedek.sql[/bash]

bu komutu çalıştırdığınızda root kullanıcısının şifresini girmesini isteyecektir. Şifreyi girdikten sonra şuan bulunduğunuz dizine yedek.sql dosyasına tüm veri tabanınızın yedeğini oluşturmuş olacaksınız. İstediğiniz bir veritabanının yedeğini almak için :

[bash]mysqldump -u root -p –databases veritabanıismi > veritabanı_yedek.sql[/bash]

bir veri tabanı içerisindeki tüm tabloların yedeklerini almak için:

[bash]mysqldump -u root -p veritabanıismi > yedek_veritabani_tablolar.sql[/bash]

 

belli bir veri tabanında sadece belli teabloları almak için:

[bash]mysqldump -u root -p veritabanıismi tablo1 tablo2 > yedek_tblo1_tablo2.sql[/bash]

 

Yedeklerin Geri Yüklenmesi

Aldığımız veri tabanı yedeklerinin geri yüklenmesi oldukça kolay. Yedekleri geri yüklemek için mysql komutunu kullanacağız. daha önceden aldığımız tüm veri tabanı yedeğini yüklemek için

[bash]mysql -u root -p < yedek.sql[/bash]

aldığımız bir veri tabanı yedeğini yüklemek için :

[bash]mysql -u root -p < veritabanı_yedek.sql[/bash]

veri tabanı içerisindeki bir tabloları yada bir tabloyu içeren yedeği geri yüklemek için:

[bash]mysql -u root -p veritabanıismi < yedek_veritabani_tablolar.sql[/bash]

yada

[bash]mysql -u root -p veritabanıismi < yedek_tblo1_tablo2.sql[/bash]

komutlarını kullanarak yedeklerinizi yükleyebilirsiniz. Dikkat etmek gereken tek nokta eğer bir tablo yedeği yüklüyorsak tabloyu yükleyeceğimiz veritebanı nı belirtmemiz gerekiyor.

 

Umarım faydalı bir yazı olur. İyi günler, iyi çalışmlar.

 

Devam

Google Drive Konsol Uygulaması – Linux

googledrivelinuxGoogle Drive Google ın sunduğu bulut depolama hizmetidir. Google henüz linux için resmi bir drive uygulaması yayınlamadı. Bu yazıda Google DRive ekibinde görev alan Burcu Doğan tarafından geliştirilmiş daha sonra yoğunluktan dolayı başka bir geliştiriciye projeyi devretmiş.

Bu uygulama ile linux sistemlerde konsol arayüzünü kullanarak google drive da bulunan dosyalarınızı bilgisayar ve Google Drive sunucuları arasında eşitlemene olanak sağlıyor. Konsol uygulaması olmasının en büyük avantajı kendi hazırladığınız konsol uygulamalarında rahatlıkla kullanabiliyorsunuz. Örneğin  Cronjob ile web sunucunuzun düzenli olarak yedeğini alan ve bu yedeği Google Drive a yükleyen bir script yazabilirsiniz.

Kurulum

Uygulama hakkındaki tüm dükümantasyona Github sayfasında erişebilirsiniz. Ben sadece Ubuntu paketi ile nasıl kurulum yapılacağını göstereceğim. Diğer dağıtımların paketleri için bu bağlantıyı inceleyebilirsiniz.

Kurulum yapmak için ilk önce Ubuntu için hazırlanmış olan depoyu sistemimize eklememiz gerekiyor. Bunun için

[bash]sudo add-apt-repository ppa:twodopeshaggy/drive[/bash]

komutunu çalıştırıyoruz. Daha sonra uygulama depomuzu güncelliyoruz:

[bash]sudo apt-get update[/bash]

Artık uygulamayı kurabiliriz:

[bash]sudo apt-get install drive[/bash]

Kurulumu yaptıktan sonra Google drive ile eşitleyeceğimiz dosya üzerine kurulum yapmamış gerekiyor bunun için :

[bash]drive init ~/GoogleDrive[/bash]

komutunu çalıştırıyoruz. Bu komut çalıştırıldığında Google hesabınızla bağlantı kurmak için bir yetkilendirme adresi verecektir bu adresi tarayıcınızda açarak gerekli izinleri verin ve oluşturulan doğrulama kodunu konsola yapıştırım enter a basın. Artık ev dizininizde GoogleDrive klasörü Google ile eşitlenmeye hazır. Google Drive daki dosyalarınızı bilgisayarınıza indirmek için, ilk önce GoogleDrive klasörüne geliyorsunuz ve ve şu komutu çalıştırıyorsunuz:

[bash]drive pull[/bash]

Bu komut ile Google Drive da bulunan dosyalarınız bilgisayarınıza indirilmiş olacaktır. Eğer sadece belli bir dosya yada klasörü indirmek isterseniz pull komutundan hemen sonra bu dosya yada dizini belirtebilirsiniz.

[bash]drive pull Belgeler[/bash]

Bİlgisayarınızda yaptığınız değişiklikleri ve yeni dosyaları Google Drive a yüklemek için kullanmanız gereken komu push komutudur.

[bash]drive push[/bash]

pull komutunda olduğu gibi sadece belli bir dosya yada klasörü yüklemek için o dosya yada klasörü push komutundan sona belirtebilirsiniz.

[bash]drive push Belgeler/ödev.odt[/bash]

Daha detaylı kullanım için Github sayfasını inceleyebilirsiniz.

Devam